insilmaril / vym

View Your Mind
https://sourceforge.net/projects/vym/
Other
138 stars 33 forks source link

vym 2.9.5xx crashes in QJSEngine while scripts are executed #124

Open insilmaril opened 2 weeks ago

insilmaril commented 2 weeks ago

So far seen mostly on Windows, e.g. when function key macros are executed. On Linux some longer running scripts also seem to crash when run exactly 11 times.

Backtraces are in both cases always deep in QJSEngine and often hint to memory issues, might be race conditions.

insilmaril commented 2 weeks ago

Example trace for Windows:

Thread 1 (Thread 25260.0x9c60):
#0  0x00007ffc7c374ba0 in ntdll!RtlCompareMemoryUlong () from C:\Windows\SYSTEM32\ntdll.dll
No symbol table info available.
#1  0x00007ffc7c30fdfb in ntdll!RtlAllocateHeap () from C:\Windows\SYSTEM32\ntdll.dll
No symbol table info available.
#2  0x00007ffc7c30d239 in ntdll!RtlAllocateHeap () from C:\Windows\SYSTEM32\ntdll.dll
No symbol table info available.
#3  0x00007ffc7c3d45c2 in ntdll!RtlRegisterSecureMemoryCacheCallback () from C:\Windows\SYSTEM32\ntdll.dll
No symbol table info available.
#4  0x00007ffc7c38df1a in ntdll!EtwLogTraceEvent () from C:\Windows\SYSTEM32\ntdll.dll
No symbol table info available.
#5  0x00007ffc7c30d239 in ntdll!RtlAllocateHeap () from C:\Windows\SYSTEM32\ntdll.dll
No symbol table info available.
#6  0x00007ffc7c1fcb80 in msvcrt!malloc () from C:\Windows\System32\msvcrt.dll
No symbol table info available.
#7  0x00007ffba000a7dd in QArrayData::allocate2(QArrayData**, long long, QArrayData::AllocationOption) () from C:\Users\uwe\0-Home\vym-windows\branches\develop\build\Desktop_Qt_6_7_0_MinGW_64_bit-Release\Qt6Core.dll
No symbol table info available.
#8  0x00007ffb9ffcf107 in QString::QString(QChar const*, long long) () from C:\Users\uwe\0-Home\vym-windows\branches\develop\build\Desktop_Qt_6_7_0_MinGW_64_bit-Release\Qt6Core.dll
No symbol table info available.
#9  0x00007ffc2944e42b in QV4::ExecutableCompilationUnit::linkToEngine(QV4::ExecutionEngine*) () from C:\Users\uwe\0-Home\vym-windows\branches\develop\build\Desktop_Qt_6_7_0_MinGW_64_bit-Release\Qt6Qml.dll
No symbol table info available.
#10 0x00007ffc294b849b in QV4::Script::parse() () from C:\Users\uwe\0-Home\vym-windows\branches\develop\build\Desktop_Qt_6_7_0_MinGW_64_bit-Release\Qt6Qml.dll
No symbol table info available.
#11 0x00007ffc294011de in QJSEngine::evaluate(QString const&, QString const&, int, QList<QString>*) () from C:\Users\uwe\0-Home\vym-windows\branches\develop\build\Desktop_Qt_6_7_0_MinGW_64_bit-Release\Qt6Qml.dll
No symbol table info available.
#12 0x00007ff72ac2a180 in Main::runScript(QString const&) ()
No symbol table info available.
#13 0x00007ff72acbab08 in VymModel::execute(QString const&) ()
No symbol table info available.
#14 0x00007ff72ac2445d in Main::callMacro() ()
No symbol table info available.
#15 0x00007ffba02064e3 in z_adler32_combine () from C:\Users\uwe\0-Home\vym-windows\branches\develop\build\Desktop_Qt_6_7_0_MinGW_64_bit-Release\Qt6Core.dll
No symbol table info available.
#16 0x00007ffb94a8335a in QAction::activate(QAction::ActionEvent) () from C:\Users\uwe\0-Home\vym-windows\branches\develop\build\Desktop_Qt_6_7_0_MinGW_64_bit-Release\Qt6Gui.dll
No symbol table info available.
#17 0x00007ffb94a8489c in QAction::event(QEvent*) () from C:\Users\uwe\0-Home\vym-windows\branches\develop\build\Desktop_Qt_6_7_0_MinGW_64_bit-Release\Qt6Gui.dll
No symbol table info available.
#18 0x00007ffb9e185626 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from C:\Users\uwe\0-Home\vym-windows\branches\develop\build\Desktop_Qt_6_7_0_MinGW_64_bit-Release\Qt6Widgets.dll
No symbol table info available.
#19 0x00007ffb9ff03028 in QCoreApplication::sendEvent(QObject*, QEvent*) () from C:\Users\uwe\0-Home\vym-windows\branches\develop\build\Desktop_Qt_6_7_0_MinGW_64_bit-Release\Qt6Core.dll
No symbol table info available.
#20 0x00007ffb94a945b7 in QShortcutMap::dispatchEvent(QKeyEvent*) () from C:\Users\uwe\0-Home\vym-windows\branches\develop\build\Desktop_Qt_6_7_0_MinGW_64_bit-Release\Qt6Gui.dll
No symbol table info available.
#21 0x00007ffb94a9542b in QShortcutMap::tryShortcut(QKeyEvent*) () from C:\Users\uwe\0-Home\vym-windows\branches\develop\build\Desktop_Qt_6_7_0_MinGW_64_bit-Release\Qt6Gui.dll
No symbol table info available.
#22 0x00007ffb947529b5 in QWindowSystemInterface::handleShortcutEvent(QWindow*, unsigned long, int, QFlags<Qt::KeyboardModifier>, unsigned int, unsigned int, unsigned int, QString const&, bool, unsigned short) () from C:\Users\uwe\0-Home\vym-windows\branches\develop\build\Desktop_Qt_6_7_0_MinGW_64_bit-Release\Qt6Gui.dll
No symbol table info available.
#23 0x00007ffb947005a9 in QGuiApplicationPrivate::processKeyEvent(QWindowSystemInterfacePrivate::KeyEvent*) () from C:\Users\uwe\0-Home\vym-windows\branches\develop\build\Desktop_Qt_6_7_0_MinGW_64_bit-Release\Qt6Gui.dll
No symbol table info available.
#24 0x00007ffb9474dafb in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from C:\Users\uwe\0-Home\vym-windows\branches\develop\build\Desktop_Qt_6_7_0_MinGW_64_bit-Release\Qt6Gui.dll
No symbol table info available.
#25 0x00007ffba0092c52 in QEventDispatcherWin32::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from C:\Users\uwe\0-Home\vym-windows\branches\develop\build\Desktop_Qt_6_7_0_MinGW_64_bit-Release\Qt6Core.dll
No symbol table info available.
#26 0x00007ffb94a2caa5 in QWindowsGuiEventDispatcher::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from C:\Users\uwe\0-Home\vym-windows\branches\develop\build\Desktop_Qt_6_7_0_MinGW_64_bit-Release\Qt6Gui.dll
No symbol table info available.
#27 0x00007ffb9ff0dbc4 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from C:\Users\uwe\0-Home\vym-windows\branches\develop\build\Desktop_Qt_6_7_0_MinGW_64_bit-Release\Qt6Core.dll
No symbol table info available.
#28 0x00007ffb9ff0bfa9 in QCoreApplication::exec() () from C:\Users\uwe\0-Home\vym-windows\branches\develop\build\Desktop_Qt_6_7_0_MinGW_64_bit-Release\Qt6Core.dll
No symbol table info available.
#29 0x00007ff72ac1bc0c in qMain(int, char**) ()
No symbol table info available.
#30 0x00007ff72ad32462 in qtEntryPoint () at C:/Users/qt/work/qt/qtbase/src/entrypoint/qtentrypoint_win.cpp:50
        argc = 2
        argvW = 0x2c6122a6050
        argv = <optimized out>
        exitCode = <optimized out>
#31 0x00007ff72ab81395 in __tmainCRTStartup ()
No symbol table info available.
#32 0x00007ff72ab814c6 in WinMainCRTStartup ()
No symbol table info available.
insilmaril commented 2 weeks ago

Using a local QSEngine in MainWindow::runsScript() instead of the global one seems to help

At least with the crash on repeated calls in Linux.

Bleyddyn commented 2 weeks ago

I don't have a Windows machine, but if I can reproduce it on my Raspberry Pi, I'll have a look.

Bleyddyn commented 1 week ago

Do you have an example of a long running script that might cause the issue? I tried running test/vym-selftest.vys more than 11 times without crashing.