Падение при вызове макроса после возвращения к закладке

Здесь можно сообщить о найденных багах в Far.
Post Reply
User avatar
Dennis_Moore
Posts: 295
Joined: Tue 03 Mar, 2015 19:54
Location: Kiev
Has thanked: 6 times
Been thanked: 17 times

Падение при вызове макроса после возвращения к закладке

Post by Dennis_Moore »

Случайно обнаружил баг в LuaMacro. Что нужно сделать:

1. Устанавливаем макрос "[MoonScript] Подсветка кириллицы и пробельных символов" (viewtopic.php?t=8674&start=16)

2. Открываем любой файл, RCtrl+1 (делаем закладку), опускаемся на несколько строк, LCtrl+1 (возвращаемся к закладке).

3. Жмем F3 (клавиша по умолчанию для макроса выше). Падение.

Воспроизвести удалось на билдах 4932 и 4944 и только в x64 версиях.

Текст ошибки:
User avatar
Dennis_Moore
Posts: 295
Joined: Tue 03 Mar, 2015 19:54
Location: Kiev
Has thanked: 6 times
Been thanked: 17 times

Падение при вызове макроса после возвращения к закладке

Post by Dennis_Moore »

Забыл вчера написать что чуть перемудрил с инструкцией - падение происходит и без второго пункта.

Upd. Просьба модераторам для порядка переименовать тему в "Падение при вызове макроса <[MoonScript] Подсветка кириллицы и пробельных символов>"
Last edited by Dennis_Moore on Mon 01 May, 2017 12:26, edited 2 times in total.
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Падение при вызове макроса после возвращения к закладке

Post by Shmuel »

Вчера немного посмотрел, собираюсь ещё посмотреть, как освобожусь.
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Падение при вызове макроса после возвращения к закладке

Post by zg »

я не очень понял, зачем из-за ошибки в макросе создавать отдельную тему, да ещё и в ошибках фара?
исправление:

Code: Select all

fLength=tonumber(egs.StringLength)
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Падение при вызове макроса после возвращения к закладке

Post by HaRT »

zg wrote: зачем из-за ошибки в макросе создавать отдельную тему, да ещё и в ошибках фара?
Так ведь, судя по сообщению об ошибке, падает сам Фар — из-за переполнения стека. Даже если в макросе ошибка, Фару-то падать негоже.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Падение при вызове макроса после возвращения к закладке

Post by zg »

User avatar
Dennis_Moore
Posts: 295
Joined: Tue 03 Mar, 2015 19:54
Location: Kiev
Has thanked: 6 times
Been thanked: 17 times

Падение при вызове макроса после возвращения к закладке

Post by Dennis_Moore »

zg wrote:я не очень понял, зачем из-за ошибки в макросе создавать отдельную тему, да ещё и в ошибках фара?
исправление:

Code: Select all

fLength=tonumber(egs.StringLength)
Если бы не падал LuaMacro вместе с FAR'ом то я бы написал в теме макроса. Создать тему здесь мне показалось правильным, ведь данная ошибка может повлиять и на другие макросы.

P.S. Спасибо за исправление (x86 версия почему-то и так не падала). Наверное модераторам стоит исправить макрос в его теме.
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Падение при вызове макроса после возвращения к закладке

Post by HaRT »

zg wrote: и что?
Правильно ли я понимаю, что Вы имеете в виду это?:
При обработке EE_REDRAW и EE_GOTFOCUS НЕЖЕЛАТЕЛЬНО ИСПОЛЬЗОВАТЬ Info.Message, Info.Menu, Info.DialogRun, Info.ShowHelp. Вызов этих функций приводит к рекурсивному вызову EE_REDRAW и EE_GOTFOCUS соответственно.
Тут, как я понимаю, из-за ошибки в скрипте плагин LuaMacro показывает диаложку, что снова вызывает EE_REDRAW и приводит к переполнению стека. По хорошему, в такой ситуации дальнейшие события не должны бы передаваться сбойному скрипту. Тогда и Фар бы не упал.
Last edited by HaRT on Thu 01 Jan, 1970 01:00, edited 0 times in total.
Reason: Исправлена опечатка в слове «передаваться»
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Падение при вызове макроса после возвращения к закладке

Post by zg »

Dennis_Moore wrote: P.S. Спасибо за исправление (x86 версия почему-то и так не падала). Наверное модераторам стоит исправить макрос в его теме.
всё согласно документации:
First, you should know that a long is a 64 bit type e.g. on POSIX/x64 systems, but a 32 bit type on Windows/x64 and on 32 bit systems. Thus a long result can be either a plain Lua number or a boxed 64 bit integer cdata object, depending on the target system.
HaRT wrote: Тут, как я понимаю, из-за ошибки в скрипте плагин LuaMacro показывает диаложку, что снова вызывает EE_REDRAW и приводит к переполнению стека. По хорошему, в такой ситуации дальнейшие события не должны бы переодеваться сбойному скрипту. Тогда и Фар бы не упал.
насколько я понимаю, после показа диалога, ошибочное событие не вызывается, возможно стоит это сделать до вызова диалога с ошибкой.
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Падение при вызове макроса после возвращения к закладке

Post by Shmuel »

Dennis_Moore wrote: Если бы не падал LuaMacro вместе с FAR'ом
Больше не будет падать (в подобных ситуациях).
Post Reply

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