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

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

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

Post by Dennis_Moore » Sun 30 Apr, 2017 20:49

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

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

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

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

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

Текст ошибки:

User avatar
Dennis_Moore
Posts: 196
Joined: Tue 03 Mar, 2015 19:54
Location: Kiev
Has thanked: 3 times
Been thanked: 7 times

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

Post by Dennis_Moore » Mon 01 May, 2017 12:18

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

Upd. Просьба модераторам для порядка переименовать тему в "Падение при вызове макроса <[MoonScript] Подсветка кириллицы и пробельных символов>"
Last edited by Dennis_Moore on Mon 01 May, 2017 12:26, edited 2 times in total.

Shmuel
Posts: 5041
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 133 times

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

Post by Shmuel » Mon 01 May, 2017 12:21

Вчера немного посмотрел, собираюсь ещё посмотреть, как освобожусь.

User avatar
zg
zero-gravity
Posts: 5231
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 42 times
Contact:

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

Post by zg » Mon 01 May, 2017 13:11

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

Code: Select all

fLength=tonumber(egs.StringLength)

User avatar
HaRT
Moderator
Posts: 7980
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 66 times
Been thanked: 97 times

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

Post by HaRT » Mon 01 May, 2017 13:26

zg wrote: зачем из-за ошибки в макросе создавать отдельную тему, да ещё и в ошибках фара?
Так ведь, судя по сообщению об ошибке, падает сам Фар — из-за переполнения стека. Даже если в макросе ошибка, Фару-то падать негоже.
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
zg
zero-gravity
Posts: 5231
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 42 times
Contact:

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

Post by zg » Mon 01 May, 2017 13:35


User avatar
Dennis_Moore
Posts: 196
Joined: Tue 03 Mar, 2015 19:54
Location: Kiev
Has thanked: 3 times
Been thanked: 7 times

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

Post by Dennis_Moore » Mon 01 May, 2017 14:13

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

Code: Select all

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

P.S. Спасибо за исправление (x86 версия почему-то и так не падала). Наверное модераторам стоит исправить макрос в его теме.

User avatar
HaRT
Moderator
Posts: 7980
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 66 times
Been thanked: 97 times

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

Post by HaRT » Mon 01 May, 2017 14:33

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: 5231
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 42 times
Contact:

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

Post by zg » Mon 01 May, 2017 15:19

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: 5041
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 133 times

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

Post by Shmuel » Mon 01 May, 2017 20:21

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

Post Reply

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

Who is online

Users browsing this forum: No registered users and 5 guests