LuaMacro: подземный стук..
- John Doe
- Бюрократ
- Posts: 13867
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 74 times
- Been thanked: 428 times
- Contact:
LuaMacro: подземный стук..
Какая-то странная ошибка, вызванная совокупностью факторов.
С одной стороны, какая-то ошибка скорее всего в моих скриптах (а точнее в модуле), потому что без них не проявляется.
С другой стороны, если luamacro единственный плагин, то не воспроизводится.
А проявляется так:
Иногда "attempt to call a nil value" не выдаётся, а сразу Exception.
Иногда лог более подробный, см. вложение
С одной стороны, какая-то ошибка скорее всего в моих скриптах (а точнее в модуле), потому что без них не проявляется.
С другой стороны, если luamacro единственный плагин, то не воспроизводится.
А проявляется так:
Иногда "attempt to call a nil value" не выдаётся, а сразу Exception.
Иногда лог более подробный, см. вложение
- Attachments
-
- FarTrap_20160824111811.log.7z
- (26.5 KiB) Downloaded 58 times
-
- Posts: 6840
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
LuaMacro — Lua как язык макросов
Это похоже непростой случай, требующий для диагностики специалиста высокого класса с доступом к системе, на которой проявляется. Мне кажется, что в данном случае оба условия соблюдены.
- John Doe
- Бюрократ
- Posts: 13867
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 74 times
- Been thanked: 428 times
- Contact:
LuaMacro — Lua как язык макросов
Пока пробую максимально изолировать условия..
Добавил в одном месте вызов far.Show - ошибка пропала
Ещё раз (код не менял) после "attempt to call a nil value " выдало
Можно ли как-то добиться, чтобы в сообщении была информация о месте ошибки, и стек вызовов?
Добавил в одном месте вызов far.Show - ошибка пропала
Ещё раз (код не менял) после "attempt to call a nil value " выдало
Code: Select all
╔══════════════ LuaMacro ═══════════════╗
║ attempt to compare number with string ║
╟───────────────────────────────────────╢
║ { OK } ║
╚═══════════════════════════════════════╝
-
- Posts: 6840
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
- John Doe
- Бюрократ
- Posts: 13867
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 74 times
- Been thanked: 428 times
- Contact:
LuaMacro — Lua как язык макросов
Вот такое есть:
0003013: Отображать traceback при ошибках, возникающих в процессе загрузки макрофайлов
У меня воспроизводится на двух системах: XP и 8.1, x86.
Выложу минимальный набор, если кто-то возьмётся диагностировать.
Обновление luajit не повлияло.
-
- Posts: 6840
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
LuaMacro — Lua как язык макросов
Но ведь вы вполне способны сами диагностировать. Ключ здесь - убрать всё лишнее. И у вас есть неоспоримое преимущество знания исходного кода ваших макросов, кому-то другому ведь придётся разбираться..
- John Doe
- Бюрократ
- Posts: 13867
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 74 times
- Been thanked: 428 times
- Contact:
LuaMacro — Lua как язык макросов
Постараться убрать лишнее да, я могу, и уже выявил минимальный набор скриптов (3).
Но поскольку ошибка не в скрипте, то найти её у меня никак не получится.
Например изменяю порядок выполнения 2х никак не связанных участков кода - и уже не падает.
Могу ещё попытаться максимально упростить скрипты, пока сохраняется воспроизводимость ошибки.
Но например набор плагинов для воспроизведения у меня сократить не получилось: если делю их пополам, то уже не падает.
Но поскольку ошибка не в скрипте, то найти её у меня никак не получится.
Например изменяю порядок выполнения 2х никак не связанных участков кода - и уже не падает.
Могу ещё попытаться максимально упростить скрипты, пока сохраняется воспроизводимость ошибки.
Но например набор плагинов для воспроизведения у меня сократить не получилось: если делю их пополам, то уже не падает.
-
- Posts: 6840
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
LuaMacro — Lua как язык макросов
1. Попробуйте поставить файл %farprofile%\luafar_init.lua, а в нём одна строчка
2. Можете выложить комплект, какое-то не слишком большое время могу поиграться.
jit.off()
и перезапустить Фар.2. Можете выложить комплект, какое-то не слишком большое время могу поиграться.
- HaRT
- Moderator
- Posts: 10869
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
LuaMacro — Lua как язык макросов
John Doe, а Вы Фар у себя собираете? Воспроизводится ли, если Фар собран в отладочной конфигурации (Debug)?
Впрочем, даже и в релизе, если подложить Far.pdb рядом с Far.exe (очень важно, чтобы они были для одной и той же сборки), запустить Фар из-под отладчика (например, Microsoft Visual Studio) и воспроизвести падение, то должно ввалиться в отладчик, и там может быть информативный Call Stack (из Visual Studio его можно скопировать в виде текста).
Впрочем, даже и в релизе, если подложить Far.pdb рядом с Far.exe (очень важно, чтобы они были для одной и той же сборки), запустить Фар из-под отладчика (например, Microsoft Visual Studio) и воспроизвести падение, то должно ввалиться в отладчик, и там может быть информативный Call Stack (из Visual Studio его можно скопировать в виде текста).
Фар есть инструмент, а не нянька. © 2009 DrKnS
- John Doe
- Бюрократ
- Posts: 13867
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 74 times
- Been thanked: 428 times
- Contact:
LuaMacro — Lua как язык макросов
Shmuel
jit.off не влияет
Набор завтра подготовлю
HaRT
Использую сборки с офсайта.
Могу собрать gcc, проверить воспроизводится ли так.
Отладчиком не владею.
Update
Не знаю что я поменял, но теперь ни на одной системе уже не воспроизводится..
jit.off не влияет
Набор завтра подготовлю
HaRT
Использую сборки с офсайта.
Могу собрать gcc, проверить воспроизводится ли так.
Отладчиком не владею.
Update
Не знаю что я поменял, но теперь ни на одной системе уже не воспроизводится..
- DrKnS
- Posts: 6114
- Joined: Thu 04 Aug, 2005 06:44
- Location: Kyiv
- Has thanked: 12 times
- Been thanked: 426 times
LuaMacro — Lua как язык макросов
Если положить far.pdb с сайта рядом с far.exe, взятым тоже с сайта, удалить или отключить fexcept и воспроизвести падение - будет более адекватный диалог с кнопкой 'Stack', даже без отладчика.
- HaRT
- Moderator
- Posts: 10869
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
LuaMacro — Lua как язык макросов
Ну тогда и отладчик нужен будет на основе gdb, а не Visual Studio.
Принципиальной разницы нет, но вот как в этом случае получить Call Stack (он же Backtrace) в виде текста, я уже не подскажу. Да это и зависит от того, какой будет использован front-end: gdb (консольный); Qt Creator, Eclipse (графические), и т.д.
Фар есть инструмент, а не нянька. © 2009 DrKnS
- John Doe
- Бюрократ
- Posts: 13867
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 74 times
- Been thanked: 428 times
- Contact:
LuaMacro: подземный стук..
Подземный стук вернулся..
Для плагина видимо нужен свой pdb?
Выглядит не слишком информативно
Code: Select all
╔═ Exception occurred ═╗
║ 0x66D81DDC ║
╟──────────────────────╢
║ { OK } ║
╚══════════════════════╝
-
- Posts: 6840
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
LuaMacro: подземный стук..
Не исключено, что причиной является какой-либо скрипт с использованием FFI, в котором производится доступ к освобождённому сборщиком мусора объекту. Подобный случай описан был здесь.
Почему такое предположение - во-первых нерегулярность проявления, во-вторых, у меня при испытаниях ("подобного случая") на Windows 7 x86 адрес исключения также начинался с 0x66D8.