Чинить надо Find File

Здесь можно сообщить о найденных багах в Far.
Max Rusov
Posts: 3632
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 1 time
Been thanked: 10 times

Чинить надо Find File

Post by Max Rusov » Tue 02 Apr, 2013 20:50

Build 3291 крашится при наличии такого макроса:



Воспроизводится при стандартном наборе плагинов, наличие плагина EdtFind - необязательно.
Для воспроизведения надо несколько раз нажать AltF7, Enter.

Падает по разному, чаще всего на экране остается сообщение:
This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
trap-log не образуется.

Shmuel
Posts: 5897
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 23 times
Been thanked: 218 times

Re: Глюки и баги, появившиеся в «ночных сборках»

Post by Shmuel » Tue 02 Apr, 2013 23:23

Этого макроса достаточно:
  1. local dlgFindFile = "8C9EAD29-910F-4B24-A669-EDAFBA6ED964"
  2. Macro
  3. {
  4.   area="Dialog"; key="Enter";
  5.   condition= function() return Dlg.Id == dlgFindFile end;
  6.   action=function() Keys("Enter") end;
  7. }
И заменить ф-цию export.ProcessDialogEvent в LuaMacro\utils.lua на
  1. function export.ProcessDialogEvent (Event, Param)
  2.   for k=1,10000 do end
  3. end
100% повторяемость. При этом данный макрос - единственный в системе, и никаких events не определено.

2useven10
Posts: 3966
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 4 times
Been thanked: 168 times

Re: Глюки и баги, появившиеся в «ночных сборках»

Post by 2useven10 » Wed 03 Apr, 2013 07:10

Shmuel ну так луа длл ассертит:

Code: Select all

║                              ║ *.*Assertion failed!
║                              ╟─────────────────────────────────────────────
Program: D:\Projects\far\far3\unicode_far\Debug.64.vc\Far.exe
File: lapi.c, Line 552         ║
║                              ║ Using code page:
Expression: L->top < L->ci->top║ All code pages
║                              ╟──────────────────────────────────┬──────────
This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information. [x] Searc
║                              ║ [ ] Search for hex               │ [x] Searc
D:\Projects\far\far3\unicode_far\Debug.64.vc>─────────────────────┴──────────
возможно ему помогли, конечно, но кто в этом лучше тебя разберётся ?

2useven10
Posts: 3966
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 4 times
Been thanked: 168 times

Re: Глюки и баги, появившиеся в «ночных сборках»

Post by 2useven10 » Wed 03 Apr, 2013 07:17

оригинальный вариант у меня вылетал по ассерту при выделении памяти в Message(), похоже по куче проехались.
и Message() вызывался для вывода какой-то ошибки луа...

Shmuel
Posts: 5897
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 23 times
Been thanked: 218 times

Re: Глюки и баги, появившиеся в «ночных сборках»

Post by Shmuel » Wed 03 Apr, 2013 07:20

2useven10 wrote:Shmuel ну так луа длл ассертит:[......]
возможно ему помогли, конечно, но кто в этом лучше тебя разберётся ?
Стараюсь разобраться и сам, но тут завязано многое, кроме Lua. Подозреваю, что использование дополнительного потока в поиске играет роль.

Max Rusov
Posts: 3632
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 1 time
Been thanked: 10 times

Re: Глюки и баги, появившиеся в «ночных сборках»

Post by Max Rusov » Wed 03 Apr, 2013 07:24

Upd. Появилось относительно недавно, раньше этот макрос к проблемам не приводил. Т.ч. смотрите последние коммиты.

2useven10
Posts: 3966
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 4 times
Been thanked: 168 times

Re: Глюки и баги, появившиеся в «ночных сборках»

Post by 2useven10 » Wed 03 Apr, 2013 07:27

:mrgreen: в каком рефакторинге билде это появилось ?

2useven10
Posts: 3966
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 4 times
Been thanked: 168 times

Re: Глюки и баги, появившиеся в «ночных сборках»

Post by 2useven10 » Wed 03 Apr, 2013 10:11

Появилось относительно недавно
Не так уж и недавно...

В 3221, это практически сразу после появления в макросах диалог-эвента, ассерт уже есть.
Проверял второй вариант, с заменой в utils.lua

Shmuel
Posts: 5897
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 23 times
Been thanked: 218 times

Re: Глюки и баги, появившиеся в «ночных сборках»

Post by Shmuel » Wed 03 Apr, 2013 20:39

Вроде разобрался, в чём дело. Этот баг проявляется, когда Фар вызывает OpenW плагина LuaMacro, не дожидаясь возврата из ProcessDialogEventW этого же плагина. Эти два вызова поступают из разных потоков.

Чинить надо Find File, на мой взгляд, а не LuaFAR/LuaMacro.

Shmuel
Posts: 5897
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 23 times
Been thanked: 218 times

Re: Глюки и баги, появившиеся в «ночных сборках»

Post by Shmuel » Thu 04 Apr, 2013 14:27

Поскольку чинить Find file вряд ли кто-то будет, сделал защиту в плагине.

User avatar
John Doe
Бюрократ
Posts: 12457
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 189 times

Re: Глюки и баги, появившиеся в «ночных сборках»

Post by John Doe » Thu 04 Apr, 2013 14:30

Shmuel wrote:Поскольку чинить Find file вряд ли кто-то будет
Баг есть? Надо на мантис.

Shmuel
Posts: 5897
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 23 times
Been thanked: 218 times

Re: Глюки и баги, появившиеся в «ночных сборках»

Post by Shmuel » Thu 04 Apr, 2013 14:36

John Doe wrote:
Shmuel wrote:Поскольку чинить Find file вряд ли кто-то будет
Баг есть? Надо на мантис.
Это к исходному репортеру.
Но теперь уже вышеприведенные макросы не будут валить Фар. То-есть плагин LuaMacro защищается с помощью CRITICAL_SECTION. Что касается других плагинов, эта защита на них не распространяется.

User avatar
John Doe
Бюрократ
Posts: 12457
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 189 times

Re: Глюки и баги, появившиеся в «ночных сборках»

Post by John Doe » Thu 04 Apr, 2013 14:38

Shmuel wrote:Это к исходному репортеру.
Это к тому, кто разобрался в чём корень проблемы, и может обосновать, почему чинить надо именно в фаре.

Shmuel
Posts: 5897
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 23 times
Been thanked: 218 times

Re: Глюки и баги, появившиеся в «ночных сборках»

Post by Shmuel » Thu 04 Apr, 2013 14:45

John Doe wrote:
Shmuel wrote:Это к исходному репортеру.
Это к тому, кто разобрался в чём корень проблемы, и может обосновать, почему чинить надо именно в фаре.
Если вас это действительно беспокоит, создайте тикет. Корень проблемы я описал в одном из постов выше.

User avatar
John Doe
Бюрократ
Posts: 12457
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 189 times

Re: Глюки и баги, появившиеся в «ночных сборках»

Post by John Doe » Thu 04 Apr, 2013 14:49

Если это не беспокоит вас, то меня и подавно.
На всякий случай выделю в отдельную тему, правда как назвать не знаю.

User avatar
John Doe
Бюрократ
Posts: 12457
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 189 times

LuaMacro — Lua как язык макросов

Post by John Doe » Mon 02 Feb, 2015 16:23

Уже несколько раз сталкиваюсь с ошибкой, возникающей после запуска процесса поиска (вызванного по AltF7):

Code: Select all

   ╔═══════════════════════════════════════════════════ Error ════════════════════════════════════════════════════╗
   ║ C:\Apps\Far3\Plugins\LuaMacro\LuaMacro.dll:                                                                  ║
   ║ C:\Apps\Far3\Profile\Macros\scripts\Menu\MenuAutoFilter.lua:87: attempt to index local 'param' (a nil value) ║
   ║ stack traceback:                                                                                             ║
   ║    C:\Apps\Far3\Profile\Macros\scripts\Menu\MenuAutoFilter.lua:87: in function 'condition'                   ║
   ║    C:\Apps\Far3\Plugins\LuaMacro\utils.lua:148: in function <C:\Apps\Far3\Plugins\LuaMacro\utils.lua:141>    ║
   ║    [C]: in function 'FileExists'                                                                             ║
   ║    ...pps\Far3\Profile\Macros\scripts\PickPathFromOtherFAR.lua:20: in function <...pps\Far3\Profile\Macros\  ║
   ║ scripts\PickPathFromOtherFAR.lua:18>                                                                         ║
   ╟──────────────────────────────────────────────────────────────────────────────────────────────────────────────╢
   ║                                                    { OK }                                                    ║
   ╚══════════════════════════════════════════════════════════════════════════════════════════════════════════════╝
Повторяется нестабильно.

Место ошибки - MenuAutoFilter.lua, обработчик диалогового события condition=function(Event,param).
param здесь по документации таблица, и я не пойму откуда может взяться nil.

И вторая непонятная для меня вещь, это третий уровень стека [C]: in function 'FileExists' (PickPathFromOtherFAR.lua)
Здесь FileExists==win.GetFileAttr, и функция вызывается по таймеру с интервалов 50 мс.

Как это всё вообще оказывается в одном стеке мне неясно.

Post Reply

Return to “Глюки и баги”