Непонятный крэш

Место, где разработчики плагинов могут поделиться своим опытом.
Post Reply
Shmuel
Posts: 6319
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 387 times

Непонятный крэш

Post by Shmuel »

Тут недавно возник интерес к плагину LFTmpPanel, я его давно уже активно не развиваю, работает и работает.
Но тут вдруг столкнулся, что на x64 плагин вместе с Фаром падает (я крайне редко запускаю x64, поэтому неудивительно, что не знал).
Упасть может сразу при запуске Фара либо при вызове плагина. Красное окно с исключением никогда не выводится.
Я без понятия, где проблема - в Фаре, Луафаре или плагине. Кто бы помог продебаггировать (DrKnS ?)

Билды <= 5065 -- работает
Билды 5188-5552 -- падает
Билды 5555-5558 -- снова работает
--
lftmppanel.7z
(31.89 KiB) Downloaded 26 times
User avatar
DrKnS
Posts: 5902
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 11 times
Been thanked: 364 times

Непонятный крэш

Post by DrKnS »

Shmuel, на 5550 при открытии панели: . Иногда после этого всё, иногда продолжает работать, получая это при выходе:
На актуальном всё хорошо.
Shmuel
Posts: 6319
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 387 times

Непонятный крэш

Post by Shmuel »

DrKnS, спасибо, конечно, но как бы зацепиться не за что :(

Перебрасывание luafar3.dll мужду "хорошим" и "плохим" билдами ничего не меняет: хороший остаётся хорошим, плохой - плохим.
Last edited by Shmuel on Sun 16 Feb, 2020 19:38, edited 1 time in total.
User avatar
DrKnS
Posts: 5902
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 11 times
Been thanked: 364 times

Непонятный крэш

Post by DrKnS »

Shmuel, плагин портит хип в 5552 и не портит в 5553.
Одно из заметных отличий 5553 - новое поле в PluginStartupInfo.
Если его добавить в 5552 (любого типа) - падать перестаёт.
Более того, если просто тупо увеличить PluginStartupInfo.StructSize:
  1. diff --git a/far/plclass.cpp b/far/plclass.cpp
  2. index 75264a4f7..69efe9613 100644
  3. --- a/far/plclass.cpp
  4. +++ b/far/plclass.cpp
  5. @@ -555,6 +555,7 @@ bool Plugin::Load()
  6.         PluginStartupInfo info;
  7.         FarStandardFunctions fsf;
  8.         CreatePluginStartupInfo(this, &info, &fsf);
  9. +       ++info.StructSize;
  10.         Inited = SetStartupInfo(&info);
  11.     }
- падать тоже перестаёт.
Код вы не показываете, поэтому сложно утверждать что-то определённое, могу разве что посоветовать проверить обращения к StructSize в SetStartupInfo().
Shmuel
Posts: 6319
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 387 times

Непонятный крэш

Post by Shmuel »

DrKnS, отлично, мы продвигаемся :)
Не понял насчёт непоказывания кода. В данном плагине нет C-кода за исключением стандартного plugins\luamacro\luafar\luaplug.c, который точно так же участвует в билде LuaMacro. А Lua-код весь в приложенном архиве.
Shmuel
Posts: 6319
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 387 times

Непонятный крэш

Post by Shmuel »

DrKnS, вроде починил, исключительно благодаря вашей помощи.
При копировании PluginStartupInfo и FSF надо было учитывать выравнивание (alignment).
Коммитить уже буду завтра, сейчас устал.
Last edited by Shmuel on Sun 16 Feb, 2020 22:57, edited 1 time in total.
User avatar
DrKnS
Posts: 5902
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 11 times
Been thanked: 364 times

Непонятный крэш

Post by DrKnS »

Shmuel wrote: Sun 16 Feb, 2020 21:44 В данном плагине нет C-кода за исключением стандартного plugins\luamacro\luafar\luaplug.c, который точно так же участвует в билде LuaMacro
А, не знал.
Shmuel
Posts: 6319
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 387 times

Непонятный крэш

Post by Shmuel »

Shmuel wrote: Sun 16 Feb, 2020 22:52 При копировании PluginStartupInfo и FSF надо было учитывать выравнивание (alignment).
Точности ради: дело было не в выравнивании, а в более грубой ошибке, связанной с арифметикой указателей.
User avatar
John Doe
Бюрократ
Posts: 13231
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 45 times
Been thanked: 335 times

Непонятный крэш

Post by John Doe »

Другие luafar-плагины тоже потенциально этому подвержены?
https://t.me/FarManager — Telegram чат
Shmuel
Posts: 6319
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 387 times

Непонятный крэш

Post by Shmuel »

John Doe wrote: Mon 17 Feb, 2020 09:53 Другие luafar-плагины тоже потенциально этому подвержены?
Поскольку баг был в luaplug.c, который общий для всех луафар-плагинов, то да. Их надо пересобрать и перевыложить.
Post Reply

Return to “Разработка плагинов”