colorer / FarColorer

Syntax highlighting plugin for FAR Manager.
MIT License
69 stars 17 forks source link

v1.4.12 - переполнение стека при разборе build.xml исходников плагина #62

Closed VictorVG closed 2 years ago

VictorVG commented 2 years ago

Получил варнинги при сборке схем - да, и на версии 1.2.0.14 сообщение в хвосте:

BUILD SUCCESSFUL
Total time: 13 seconds
Недопустимый ключ: "base".
Недопустимый ключ: "colorer-base.allpacked.*.zip". 
Сводка дампа
------------
Файл дампа: far.mdmp : .\Far\Profile\CrashLogs\Far.2021.10.24_18.13.26.548_2700\far.mdmp
Время последней записи: 24.10.2021 21:13:26
Имя процесса:   Far.exe : .\Far\Far.exe
Архитектура процесса:   x64
Код исключения: 0xC00000FD
Сведения об исключении: Стек был выработан потоком.
Сведения о куче:    Отсутствующие

Сведения о системе
------------------
Версия ОС:  6.1.7601
Версии CLR:

Модули
------
Имя модуля  Путь к модулю   Версия модуля
----------  -------------   -------------
Far.exe .\Far\Far.exe   3.0.5905.0
ntdll.dll   C:\Windows\System32\ntdll.dll   6.1.7601.24384
kernel32.dll    C:\Windows\System32\kernel32.dll    6.1.7601.24384
KERNELBASE.dll  C:\Windows\System32\KERNELBASE.dll  6.1.7601.24384
netapi32.dll    C:\Windows\System32\netapi32.dll    6.1.7601.17514
netutils.dll    C:\Windows\System32\netutils.dll    6.1.7601.17514
msvcrt.dll  C:\Windows\System32\msvcrt.dll  7.0.7600.16385
srvcl.dll   C:\Windows\System32\srvcl.dll   6.1.7601.17514
rpcrt4.dll  C:\Windows\System32\rpcrt4.dll  6.1.7601.24384
wkscl.dll   C:\Windows\System32\wkscl.dll   6.1.7601.17514
samcl.dll   C:\Windows\System32\samcl.dll   6.1.7601.17514
mpr.dll C:\Windows\System32\mpr.dll 6.1.7600.16385
psap.dll    C:\Windows\System32\psap.dll    6.1.7600.16385
secur32.dll C:\Windows\System32\secur32.dll 6.1.7601.24384
sspicl.dll  C:\Windows\System32\sspicl.dll  6.1.7601.24384
setupap.dll C:\Windows\System32\setupap.dll 6.1.7601.17514
cfgmgr32.dll    C:\Windows\System32\cfgmgr32.dll    6.1.7601.17514
advapi32.dll    C:\Windows\System32\advapi32.dll    6.1.7601.24384
sechost.dll C:\Windows\System32\sechost.dll 6.1.7600.16385
gdi32.dll   C:\Windows\System32\gdi32.dll   6.1.7601.17514
user32.dll  C:\Windows\System32\user32.dll  6.1.7601.17514
lpk.dll C:\Windows\System32\lpk.dll 6.1.7600.16385
usp10.dll   C:\Windows\System32\usp10.dll   1.626.7601.17514
oleaut32.dll    C:\Windows\System32\oleaut32.dll    6.1.7601.17514
ole32.dll   C:\Windows\System32\ole32.dll   6.1.7601.17514
devobj.dll  C:\Windows\System32\devobj.dll  6.1.7600.16385
version.dll C:\Windows\System32\version.dll 6.1.7600.16385
userenv.dll C:\Windows\System32\userenv.dll 6.1.7601.17514
profap.dll  C:\Windows\System32\profap.dll  6.1.7600.16385
comdlg32.dll    C:\Windows\System32\comdlg32.dll    6.1.7601.17514
shlwap.dll  C:\Windows\System32\shlwap.dll  6.1.7601.17514
comctl32.dll    C:\Windows\winsxs\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.7601.17514_none_fa396087175ac9ac\comctl32.dll    6.10.7601.17514
shell32.dll C:\Windows\System32\shell32.dll 6.1.7601.17514
winspool.drv    C:\Windows\System32\winspool.drv    6.1.7601.17514
imm32.dll   C:\Windows\System32\imm32.dll   6.1.7600.16385
msctf.dll   C:\Windows\System32\msctf.dll   6.1.7600.16385
api-ms-win-core-synch-l1-2-0.DLL    C:\Windows\System32\api-ms-win-core-synch-l1-2-0.DLL    10.0.10240.16390
uxtheme.dll C:\Windows\System32\uxtheme.dll 6.1.7600.16385
hooxpot64.dll   C:\Program Files (x86)\Dexpot\hooxpot64.dll 1.6.11.0
dwmap.dll   C:\Windows\System32\dwmap.dll   6.1.7600.16385
hook_x86_64.dll C:\Program Files\Far3\Far\plugins\dnd\hook_x86_64.dll   3.0.85.4700
CRYPTBASE.dll   C:\Windows\System32\CRYPTBASE.dll   6.1.7601.24384
clbcatq.dll C:\Windows\System32\clbcatq.dll 2001.12.8530.16385
cryptsp.dll C:\Windows\System32\cryptsp.dll 6.1.7601.24382
colorer.dll .\Far\plugins\editor\colorer\bin\colorer.dll    1.4.12.0
LuaMacro.dll    .\Far\plugins\luamacro\LuaMacro.dll 3.0.765.0
lua51.dll   .\Far\lua51.dll 0.0.0.0
luafar3.dll .\Far\luafar3.dll   3.0.765.0
rsaenh.dll  C:\Windows\System32\rsaenh.dll  6.1.7600.16385
RpcRtRemote.dll C:\Windows\System32\RpcRtRemote.dll 6.1.7601.17514
explorerframe.dll   C:\Windows\System32\explorerframe.dll   6.1.7601.17514
duser.dll   C:\Windows\System32\duser.dll   6.1.7600.16385
dui70.dll   C:\Windows\System32\dui70.dll   6.1.7600.16385
actxprxy.dll    C:\Windows\System32\actxprxy.dll    6.1.7601.17514
lpeg.dll    .\Far\lpeg.dll  0.0.0.0
ntmarta.dll C:\Windows\System32\ntmarta.dll 6.1.7600.16385
Wldap32.dll C:\Windows\System32\Wldap32.dll 6.1.7601.17514
dbghelp.dll C:\Windows\System32\dbghelp.dll 6.1.7601.17514
powrprof.dll    C:\Windows\System32\powrprof.dll    6.1.7600.16385

расшифровка в WinDbg:

Необработанное исключение по адресу 0x000007FED30BF300 (colorer.dll) в far.mdmp: 0xC00000FD: Stack overflow (параметры: 0x0000000000000001, 0x0000000000113DD8).

Смотрим где и что отладчик вывел:

1-1

1-2

1-3

(остальное в архиве, до конца расшифровывать не стал т.к. вроде понял что происходит) и достаточно попытаться посмотреть список тредов чтобы увидеть причины переполнения стека - плагин запустил слишком много тредов, что и привело к исчерпанию ресурсов ОС. Можно конечно отследить в Process Hacker каждый тред, но есть ли в этом смысл коли мы понимаем что произошло?

Поскольку дампы (в архиве оба + тест-сборка c .map и ,pdb) ребята габаритные, то положил их в архиве на обменник - https://www.upload.ee/files/13578296/Colorer_14.12_crash.7z.html

а лог сборки схем (попросил ант вывести его в файл) - тут:

Shemes_log.txt.zip

думаю пригодится. Тулкит сейчас настроен на JDK v17 и Ant 1.10.11, выбрана сборка для таргета base.distr-allpacked ....

fix typo

VictorVG commented 2 years ago

Забавно, но переполнение стека возникает только на данном XML - наловил у себя кучу из других мест, отправил на tmp: и стал смотреть в реддакторе - падает только на build.xml схем....

ctapmex commented 2 years ago

схемы сбоят -( последние рабочие https://github.com/colorer/Colorer-schemes/releases/tag/v1.2.0.13

VictorVG commented 2 years ago

Понял. Есть такое явление. Поставил из 1.2.0.13 - сбоев плагина нет. Откачу в FarUE3. Придётся х86 перекомпилить - там инсталлер, с x86-64 ППР - закоммитить изменения и всё:) ибо там я не стал возится с инсталляциейт.к. нет требующих реестровых прописей углов.

ctapmex commented 2 years ago

откатил изменение namespace до луших времен. сейчас не должно падать

VictorVG commented 2 years ago

Добро, лучше на стенде отладим.