Lua51.dll и Windows 2000

Хотите говорить о Far и не знаете, куда обратиться?
Post Reply
User avatar
Dennis_Moore
Posts: 237
Joined: Tue 03 Mar, 2015 19:54
Location: Kiev
Has thanked: 5 times
Been thanked: 11 times

Lua51.dll и Windows 2000

Post by Dennis_Moore » Wed 28 Jun, 2017 18:51

Я часто использую FAR3 на своем любимом ноутбуке ThinkPad 380Z (PII 300, 96 MB RAM) который работает на Windows 2000. Сегодня обновил на нем FAR и столкнулся с тем что перестал работать LuaMacro и все Lua плагины. Быстро стало ясно что проблема в добавлении в Lua51.dll функции __DestructExceptionObject (msvcrt.dll). Поворчав подсунул библиотеке враппер из набора KDW но оказалось что эта функция враппера использует инструкции которых нет в Pentium II (SSE2?).

Библиотека из состава Far30b4973.x86.20170610 еще не содержит этой ф-ии, а в Far30b4973.x86.20170612 она уже есть (т.е. в чейнджлоге это не отражено даже косвенно).

Я не призываю разработчиков чинить это что-бы я мог пользоваться программой 2017-го на ноутбуке 1998-го, я всего лишь хочу спросить совета: если я буду в новых билдах FAR перезаписывать эту библиотеку последней рабочей версией для PII то какие проблемы у меня могут появиться и как скоро ?

Shmuel
Posts: 5229
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 151 times

Lua51.dll и Windows 2000

Post by Shmuel » Wed 28 Jun, 2017 19:04

Dennis_Moore wrote:
Wed 28 Jun, 2017 18:51
в чейнджлоге это не отражено даже косвенно).
Это отражено в логе коммитов (если вы пользовались/пользуетесь какой-либо системой контроля версий, то должны знать).
Dennis_Moore wrote:
Wed 28 Jun, 2017 18:51
хочу спросить совета: если я буду в новых билдах FAR перезаписывать эту библиотеку последней рабочей версией для PII то какие проблемы у меня могут появиться и как скоро ?
Если у вас установлены также "паскалевские" плагины, и вы в Lua вызовете math.log10(0), то упадёт. Другие проблемы на данный момент неизвестны.
Last edited by Shmuel on Wed 28 Jun, 2017 19:09, edited 1 time in total.

User avatar
Dennis_Moore
Posts: 237
Joined: Tue 03 Mar, 2015 19:54
Location: Kiev
Has thanked: 5 times
Been thanked: 11 times

Lua51.dll и Windows 2000

Post by Dennis_Moore » Wed 28 Jun, 2017 19:16

Shmuel wrote:
Wed 28 Jun, 2017 19:04
Если у вас установлены также "паскалевские" плагины, и вы в Lua вызовете math.log10(0), то упадёт
Плагины Max Rusov у меня стоят, но ничего не падает возможно по той причине что x86 версии его плагинов собраны в Delphi 7 (смотрел через Bit Detector).

User avatar
DrKnS
Posts: 4643
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 125 times
Contact:

Lua51.dll и Windows 2000

Post by DrKnS » Wed 28 Jun, 2017 19:19

Shmuel wrote:
Wed 28 Jun, 2017 19:04
упадёт
Если мы посыпем фар волшебной пыльцой в нужных местах - перестанет?

Shmuel
Posts: 5229
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 151 times

Lua51.dll и Windows 2000

Post by Shmuel » Wed 28 Jun, 2017 19:29

DrKnS wrote:
Wed 28 Jun, 2017 19:19
Если мы посыпем фар волшебной пыльцой в нужных местах - перестанет?
С используемой сейчас lua51.dll (LuaJIT 2.1) падений и сейчас нет. А вот с LuaJIT 2.0 мне никакой пыльцой не удалось это падение предотвратить. Совет автора LuaJIT попробовать __control87_2 не подходит, т.к. этой функции нет на x64.

User avatar
DrKnS
Posts: 4643
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 125 times
Contact:

Lua51.dll и Windows 2000

Post by DrKnS » Wed 28 Jun, 2017 20:23

Shmuel wrote:
Wed 28 Jun, 2017 19:29
этой функции нет на x64
В контексте этого топика (Pentium II, Windows 2000) проблемы x64 вроде бы не очень актуальны?

Shmuel
Posts: 5229
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 151 times

Lua51.dll и Windows 2000

Post by Shmuel » Wed 28 Jun, 2017 20:34

DrKnS wrote:
Wed 28 Jun, 2017 20:23
В контексте этого топика (Pentium II, Windows 2000) проблемы x64 вроде бы не очень актуальны?
Я так понял, что посыпание Фара волшебной пыльцой (ваше выражение) предполагалось в более широком контексте, чем Windows 2000 x86.

User avatar
DrKnS
Posts: 4643
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 125 times
Contact:

Lua51.dll и Windows 2000

Post by DrKnS » Wed 28 Jun, 2017 21:03

Насколько я понимаю, в случае luaJIT x64 это не работало потому что вместо стандартного SSE2 (с которым работает control87) там велосипедили плавающую точку вручную на x87 ассемблере. Предотвращать, видимо, тоже надо на ассемблере, через fstcw.

Shmuel
Posts: 5229
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 151 times

Lua51.dll и Windows 2000

Post by Shmuel » Wed 28 Jun, 2017 21:19

По-видимому так. Но поскольку перешли на LuaJIT 2.1, это уже не актуально.
Для полноты картины надо заметить, что LuaFAR "защищает" только "свои" плагины и макросы, а если вызвать log10(0) из другого плагина или из самого Фара, то падение, скорее всего, будет.

P.S. Не удержался, провёл эксперимент.
Far x64, в папке Plugins всего 2 плагина: MoreHistory и простейший тестовый (не луафаровский), который при вызове с комстроки по префиксу исполняет log10(0)

Code: Select all

╔══════════════════════════ Exception occurred ══════════════════════════╗
║ Exception:   Floating-point divide by zero                             ║
║ Address:     0x000007FEFD57A06D RaiseException                         ║
║ Function:    OpenW                                                     ║
║ Module:      C:\Shmuel_Home\Programs\Far3-64bit\Plugins\1\test1.dll    ║
╟────────────────────────────────────────────────────────────────────────╢
║          { Unload plugin } [ Stack ] [ Minidump ] [ Ignore ]           ║
╚════════════════════════════════════════════════════════════════════════╝
Last edited by Shmuel on Wed 28 Jun, 2017 22:13, edited 2 times in total.

Post Reply

Return to “Обсуждение Far Manager”