equeim / tremotesf2

Remote GUI for transmission-daemon
Other
249 stars 15 forks source link

2.7.0 crashes infrequently on connect #522

Closed Tharn closed 1 day ago

Tharn commented 2 weeks ago

This can happen when starting the program, or when switching servers. It doesn't happen all the time but it happens regularly.

The connection itself, the populating of folders and trackers etc. seems to be very slow as well compared to the previous version.

equeim commented 2 weeks ago

What distro and package (flatpak/native)?

Tharn commented 2 weeks ago

Oh sorry, this is Windows 10 Pro x64.

equeim commented 2 weeks ago

Interesting, I'm seeing some strange performance issues but can't reproduce crashes yet

Tharn commented 2 weeks ago

I'm pretty sure that when it crashes, it doesn't produce a .log either. Will keep an eye on it.

equeim commented 2 weeks ago

Does it get better for you if you disable sidebar (in the View menu)?

toniexly commented 1 week ago

I can confirm this. and the window often freezes, and the response is slow when I click.

equeim commented 1 week ago

I can confirm this. and the window often freezes, and the response is slow when I click.

Do you experience crashes too?

toniexly commented 1 week ago

I can confirm this. and the window often freezes, and the response is slow when I click.

Do you experience crashes too?

sometimes the window would disappear(close itself?) when trying to connect...does it count as a crash?

equeim commented 1 week ago

@Tharn @toniexly Could you try to reproduce the crash in this build (preferably Debug one): https://github.com/equeim/tremotesf2/releases/tag/crash-test

It should show additional info on the crash

Tharn commented 1 week ago

I tried with the crash test build, it seems to be faster populating the left sidebar again but I managed to produce a crash after many starts. Will try with the debug symbols next. Edited: Got one.

error

Fatal error
---------------------------
Press Ctrl+C to copy this report

FATAL ERROR: Unhandled SEH exception 0xc0000005 EXCEPTION_ACCESS_VIOLATION

Stack trace:
0> D:\a\tremotesf2\tremotesf2\src\startup\windowsfatalerrorhandlers.cpp(67): tremotesf!tremotesf::`anonymous namespace'::appendStackTraceToReport+0x306
1> D:\a\tremotesf2\tremotesf2\src\startup\windowsfatalerrorhandlers.cpp(76): tremotesf!tremotesf::`anonymous namespace'::showReport+0x21
2> D:\a\tremotesf2\tremotesf2\src\startup\windowsfatalerrorhandlers.cpp(189): tremotesf!tremotesf::`anonymous namespace'::sehExceptionFilter+0x2DA
3> KERNELBASE!UnhandledExceptionFilter+0x1E7
4> ntdll!memset+0x1218
5> ntdll!_C_specific_handler+0x96
6> ntdll!_chkstk+0x11F
7> ntdll!RtlRaiseException+0x484
8> ntdll!KiUserExceptionDispatcher+0x2E
9> C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\include\coroutine(92): tremotesf!std::coroutine_handle<void>::coroutine_handle<void>+0xB
10> C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\include\coroutine(67): tremotesf!std::coroutine_handle<void>::from_address+0x2F
11> C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\include\coroutine(202): tremotesf!std::coroutine_handle<std::noop_coroutine_promise>::operator std::coroutine_handle<void>+0x21
12> D:\a\tremotesf2\tremotesf2\src\coroutines\coroutines.cpp(62): tremotesf!tremotesf::impl::CoroutinePromise<void>::onPerformedFinalSuspend+0x9C
13> D:\a\tremotesf2\tremotesf2\src\coroutines\coroutines.h(163): tremotesf!tremotesf::impl::CoroutinePromiseFinalSuspendAwaiter::await_suspend<tremotesf::impl::CoroutinePromise<void> >+0x32
14> D:\a\tremotesf2\tremotesf2\src\rpc\rpc.cpp(854): tremotesf!tremotesf::Rpc::checkTorrentsSingleFile$_ResumeCoro$1+0x190C
15> C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\include\coroutine(84): tremotesf!std::coroutine_handle<void>::resume+0x30
16> D:\a\tremotesf2\tremotesf2\src\coroutines\threadpool.h(87): tremotesf!`tremotesf::impl::ThreadPoolAwaitable<`tremotesf::impl::RequestRouter::onRequestSuccess'::`2'::<lambda_1>,std::optional<QJsonObject> >::Runnable::run'::`2'::<lambda_1>::operator()+0x43
17> D:\a\tremotesf2\tremotesf2\vcpkg_installed\x64-windows-static\include\Qt6\QtCore\qobjectdefs_impl.h(137): tremotesf!QtPrivate::FunctorCall<QtPrivate::IndexesList<>,QtPrivate::List<>,void,`tremotesf::impl::ThreadPoolAwaitable<`tremotesf::impl::RequestRouter::onRequestSuccess'::`2'::<lambda_1>,std::optional<QJsonObject> >::Runnable::run'::`2'::<lambda_1> >::call+0x19
18> D:\a\tremotesf2\tremotesf2\vcpkg_installed\x64-windows-static\include\Qt6\QtCore\qobjectdefs_impl.h(345): tremotesf!QtPrivate::FunctorCallable<`tremotesf::impl::ThreadPoolAwaitable<`tremotesf::impl::RequestRouter::onRequestSuccess'::`2'::<lambda_1>,std::optional<QJsonObject> >::Runnable::run'::`2'::<lambda_1> >::call<QtPrivate::List<>,void>+0x23
19> D:\a\tremotesf2\tremotesf2\vcpkg_installed\x64-windows-static\include\Qt6\QtCore\qobjectdefs_impl.h(555): tremotesf!QtPrivate::QCallableObject<`tremotesf::impl::ThreadPoolAwaitable<`tremotesf::impl::RequestRouter::onRequestSuccess'::`2'::<lambda_1>,std::optional<QJsonObject> >::Runnable::run'::`2'::<lambda_1>,QtPrivate::List<>,void>::impl+0x90
20> D:\a\tremotesf2\tremotesf2\vcpkg\buildtrees\qtbase\src\here-src-6-f39f712233.clean\src\corelib\kernel\qobjectdefs_impl.h(469): tremotesf!QtPrivate::QSlotObjectBase::call+0x43
21> D:\a\tremotesf2\tremotesf2\vcpkg\buildtrees\qtbase\src\here-src-6-f39f712233.clean\src\corelib\kernel\qobject.cpp(654): tremotesf!QMetaCallEvent::placeMetaCall+0x5F
22> D:\a\tremotesf2\tremotesf2\vcpkg\buildtrees\qtbase\src\here-src-6-f39f712233.clean\src\corelib\kernel\qobject.cpp(1452): tremotesf!QObject::event+0x1FF
23> D:\a\tremotesf2\tremotesf2\vcpkg\buildtrees\qtbase\src\here-src-6-f39f712233.clean\src\widgets\kernel\qapplication.cpp(3287): tremotesf!QApplicationPrivate::notify_helper+0x1A4
24> D:\a\tremotesf2\tremotesf2\vcpkg\buildtrees\qtbase\src\here-src-6-f39f712233.clean\src\widgets\kernel\qapplication.cpp(3238): tremotesf!QApplication::notify+0x333D
25> D:\a\tremotesf2\tremotesf2\vcpkg\buildtrees\qtbase\src\here-src-6-f39f712233.clean\src\corelib\kernel\qcoreapplication.cpp(1142): tremotesf!QCoreApplication::notifyInternal2+0x157
26> D:\a\tremotesf2\tremotesf2\vcpkg\buildtrees\qtbase\src\here-src-6-f39f712233.clean\src\corelib\kernel\qcoreapplication.cpp(1584): tremotesf!QCoreApplication::sendEvent+0x7D
27> D:\a\tremotesf2\tremotesf2\vcpkg\buildtrees\qtbase\src\here-src-6-f39f712233.clean\src\corelib\kernel\qcoreapplication.cpp(1940): tremotesf!QCoreApplicationPrivate::sendPostedEvents+0x5BB
28> D:\a\tremotesf2\tremotesf2\vcpkg\buildtrees\qtbase\src\here-src-6-f39f712233.clean\src\corelib\kernel\qeventdispatcher_win.cpp(899): tremotesf!QEventDispatcherWin32::sendPostedEvents+0x90
29> D:\a\tremotesf2\tremotesf2\vcpkg\buildtrees\qtbase\src\here-src-6-f39f712233.clean\src\gui\platform\windows\qwindowsguieventdispatcher.cpp(44): tremotesf!QWindowsGuiEventDispatcher::sendPostedEvents+0x14
30> D:\a\tremotesf2\tremotesf2\vcpkg\buildtrees\qtbase\src\here-src-6-f39f712233.clean\src\corelib\kernel\qeventdispatcher_win.cpp(468): tremotesf!QEventDispatcherWin32::processEvents+0xBF
31> D:\a\tremotesf2\tremotesf2\vcpkg\buildtrees\qtbase\src\here-src-6-f39f712233.clean\src\gui\platform\windows\qwindowsguieventdispatcher.cpp(36): tremotesf!QWindowsGuiEventDispatcher::processEvents+0x4A
32> D:\a\tremotesf2\tremotesf2\vcpkg\buildtrees\qtbase\src\here-src-6-f39f712233.clean\src\corelib\kernel\qeventloop.cpp(101): tremotesf!QEventLoop::processEvents+0x7C
33> D:\a\tremotesf2\tremotesf2\vcpkg\buildtrees\qtbase\src\here-src-6-f39f712233.clean\src\corelib\kernel\qeventloop.cpp(182): tremotesf!QEventLoop::exec+0x1F6
34> D:\a\tremotesf2\tremotesf2\vcpkg\buildtrees\qtbase\src\here-src-6-f39f712233.clean\src\corelib\kernel\qcoreapplication.cpp(1486): tremotesf!QCoreApplication::exec+0x19C
35> D:\a\tremotesf2\tremotesf2\src\startup\main.cpp(204): tremotesf!main+0xADC
36> D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl(79): tremotesf!invoke_main+0x39
37> D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl(288): tremotesf!__scrt_common_main_seh+0x132
38> D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl(331): tremotesf!__scrt_common_main+0xE
39> D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_main.cpp(17): tremotesf!mainCRTStartup+0xE
40> KERNEL32!BaseThreadInitThunk+0x14
41> ntdll!RtlUserThreadStart+0x21
---------------------------
OK   
---------------------------
toniexly commented 1 week ago

Fatal error

Press Ctrl+C to copy this report

FATAL ERROR: std::terminate called

Unhandled C++ exception: std::bad_alloc: bad allocation

PDB file does not exist at expected path C:/Green Software/Tremotesf/tremotesf.pdb, not reporting stack trace


确定

Tharn commented 1 week ago

Grab the Debug Symbols version from here and try to reproduce that crash.

https://github.com/equeim/tremotesf2/releases/tag/crash-test

equeim commented 1 week ago

Fatal error

Press Ctrl+C to copy this report

FATAL ERROR: std::terminate called

Unhandled C++ exception: std::bad_alloc: bad allocation

PDB file does not exist at expected path C:/Green Software/Tremotesf/tremotesf.pdb, not reporting stack trace

确定

That looks like a different crash than one I just fixed. However I would need a stack trace from debug build to figure out anything

toniexly commented 1 week ago

Fatal error

Press Ctrl+C to copy this report FATAL ERROR: std::terminate called Unhandled C++ exception: std::bad_alloc: bad allocation PDB file does not exist at expected path C:/Green Software/Tremotesf/tremotesf.pdb, not reporting stack trace

确定

That looks like a different crash than one I just fixed. However I would need a stack trace from debug build to figure out anything

剪贴板图片

equeim commented 1 week ago

Fatal error

Press Ctrl+C to copy this report FATAL ERROR: std::terminate called Unhandled C++ exception: std::bad_alloc: bad allocation PDB file does not exist at expected path C:/Green Software/Tremotesf/tremotesf.pdb, not reporting stack trace

确定

That looks like a different crash than one I just fixed. However I would need a stack trace from debug build to figure out anything

剪贴板图片

Ok, now it's the crash that I have seen. IDK where std::bad_alloc came from, I think I will go ahead with releasing 2.7.1 for now

toniexly commented 1 week ago

Fatal error

Press Ctrl+C to copy this report FATAL ERROR: std::terminate called Unhandled C++ exception: std::bad_alloc: bad allocation PDB file does not exist at expected path C:/Green Software/Tremotesf/tremotesf.pdb, not reporting stack trace

确定

That looks like a different crash than one I just fixed. However I would need a stack trace from debug build to figure out anything

剪贴板图片

Ok, now it's the crash that I have seen. IDK where std::bad_alloc came from, I think I will go ahead with releasing 2.7.1 for now I switch back to 2.7 crash test version. it seems working fine, at least for now...IDK what changes i've made...:0)

Tharn commented 1 week ago

Maybe that other crash you caught is more rare. The one with the log you gave is very common so it is much more likely to get caught.

equeim commented 1 day ago

Should be fixed now