Recursive use of non-recursive std::mtuex in Scheduler::ProcessTaskScheduling?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I occasionally see soffice.bin crash during `make check` tests on Windows, and now building with --enable-breakpad, JunitTest_forms_unoapi_1 failed with

[...]
LOG> up(): COMPLETED.OK



LOG> Execute: down()

LOG> starting required method: addSpinListener()

warn:desktop:23856:19364:desktop/source/app/crashreport.cxx:73: minidump generated: C:\lo-clang\core\workdir\JunitTest\forms_unoapi_1\user\crash\05aab6e1-a92d-4bfe-8563-0bfd0dc85d65.dmp
com.sun.star.lang.DisposedException

[...]

and inspecting that .dmp (with VS, as documented in external/breakpad/README) shows an uncaught std::system_error at (annotations inline):

KERNELBASE.dll!RaiseException()
VCRUNTIME140D.dll!_CxxThrowException(void * pExceptionObject, const _s__ThrowInfo * pThrowInfo) Line 75
	at D:\a01\_work\6\s\src\vctools\crt\vcruntime\src\eh\throw.cpp(75)
MSVCP140D.dll!std::_Throw_Cpp_error(int code) Line 38
	at D:\a01\_work\6\s\src\vctools\crt\github\stl\src\thread0.cpp(38)
MSVCP140D.dll!std::_Throw_C_error(int code) Line 50
	at D:\a01\_work\6\s\src\vctools\crt\github\stl\src\thread0.cpp(50)
vcllo.dll!std::_Check_C_return(int _Res) Line 134
	at C:\PROGRA~2\MIB055~1\2019\COMMUN~1\VC\Tools\MSVC\1428~1.293\Include\xthreads.h(134)

^ that's

enum { _Thrd_success, _Thrd_nomem, _Thrd_timedout, _Thrd_busy, _Thrd_error };

inline int _Check_C_return(int _Res) { // throw exception on failure
    if (_Res != _Thrd_success) {
        _Throw_C_error(_Res);
    }

    return _Res;
}

with _Res = 3 (aka _Thrd_busy, presumably representing an attempt to recursively lock a non-recursive std::mutex)

vcllo.dll!std::_Mutex_base::lock() Line 52
	at C:\PROGRA~2\MIB055~1\2019\COMMUN~1\VC\Tools\MSVC\1428~1.293\Include\mutex(52)

^ that's

    void lock() {
       _Check_C_return(_Mtx_lock(_Mymtx()));
    }

vcllo.dll!Scheduler::Lock() Line 215
	at C:\lo-clang\core\vcl\source\app\scheduler.cxx(215)
vcllo.dll!SchedulerGuard::SchedulerGuard() Line 57
	at C:\lo-clang\core\vcl\inc\schedulerimpl.hxx(57)
vcllo.dll!Scheduler::ProcessTaskScheduling() Line 344
	at C:\lo-clang\core\vcl\source\app\scheduler.cxx(344)
vcllo.dll!Scheduler::CallbackTaskScheduling() Line 267
	at C:\lo-clang\core\vcl\source\app\scheduler.cxx(267)
vcllo.dll!SalTimer::CallCallback() Line 55
	at C:\lo-clang\core\vcl\inc\saltimer.hxx(55)
vclplug_winlo.dll!WinSalTimer::ImplHandleElapsedTimer() Line 166
	at C:\lo-clang\core\vcl\win\app\saltimer.cxx(166)
vclplug_winlo.dll!ImplSalYield(const bool bWait, const bool bHandleAllCurrentEvents) Line 456
	at C:\lo-clang\core\vcl\win\app\salinst.cxx(456)
vclplug_winlo.dll!SalComWndProc(HWND__ *, unsigned int nMsg, unsigned __int64 wParam, __int64 lParam, bool & rDef) Line 570
	at C:\lo-clang\core\vcl\win\app\salinst.cxx(570)
vclplug_winlo.dll!SalComWndProcW(HWND__ * hWnd, unsigned int nMsg, unsigned __int64 wParam, __int64 lParam) Line 655
	at C:\lo-clang\core\vcl\win\app\salinst.cxx(655)
user32.dll!UserCallWinProcCheckWow()
user32.dll!DispatchClientMessage()
user32.dll!__fnDWORD()
ntdll.dll!KiUserCallbackDispatcherContinue()
user32.dll!NtUserPeekMessage()
user32.dll!PeekMessageW()
vclplug_winlo.dll!WinSalInstance::AnyInput(VclInputFlags nType) Line 801
	at C:\lo-clang\core\vcl\win\app\salinst.cxx(801)
vcllo.dll!Application::AnyInput(VclInputFlags nType) Line 590
	at C:\lo-clang\core\vcl\source\app\svapp.cxx(590)
vcllo.dll!Scheduler::ProcessTaskScheduling() Line 436
	at C:\lo-clang\core\vcl\source\app\scheduler.cxx(436)

^ that frame has the same SchedulerGuard locked that the other Scheduler::ProcessTaskScheduling frame further up wants to lock

vcllo.dll!Scheduler::CallbackTaskScheduling() Line 267
	at C:\lo-clang\core\vcl\source\app\scheduler.cxx(267)
vcllo.dll!SalTimer::CallCallback() Line 55
	at C:\lo-clang\core\vcl\inc\saltimer.hxx(55)
vclplug_winlo.dll!WinSalTimer::ImplHandleElapsedTimer() Line 166
	at C:\lo-clang\core\vcl\win\app\saltimer.cxx(166)
vclplug_winlo.dll!ImplSalYield(const bool bWait, const bool bHandleAllCurrentEvents) Line 456
	at C:\lo-clang\core\vcl\win\app\salinst.cxx(456)
vclplug_winlo.dll!WinSalInstance::DoYield(bool bWait, bool bHandleAllCurrentEvents) Line 512
	at C:\lo-clang\core\vcl\win\app\salinst.cxx(512)
vcllo.dll!ImplYield(bool i_bWait, bool i_bAllEvents) Line 463
	at C:\lo-clang\core\vcl\source\app\svapp.cxx(463)
vcllo.dll!Application::Yield() Line 531
	at C:\lo-clang\core\vcl\source\app\svapp.cxx(531)
vcllo.dll!Application::Execute() Line 441
	at C:\lo-clang\core\vcl\source\app\svapp.cxx(441)
sofficeapp.dll!desktop::Desktop::Main() Line 1586
	at C:\lo-clang\core\desktop\source\app\app.cxx(1586)
vcllo.dll!ImplSVMain() Line 196
	at C:\lo-clang\core\vcl\source\app\svmain.cxx(196)
vcllo.dll!SVMain() Line 228
	at C:\lo-clang\core\vcl\source\app\svmain.cxx(228)
sofficeapp.dll!soffice_main() Line 98
	at C:\lo-clang\core\desktop\source\app\sofficemain.cxx(98)
soffice.bin!sal_main() Line 49
	at C:\lo-clang\core\desktop\source\app\main.c(49)
soffice.bin!main(int argc, char * * argv) Line 47
	at C:\lo-clang\core\desktop\source\app\main.c(47)
soffice.bin!invoke_main() Line 79
	at d:\agent\_work\63\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl(79)
soffice.bin!__scrt_common_main_seh() Line 288
	at d:\agent\_work\63\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl(288)
soffice.bin!__scrt_common_main() Line 331
	at d:\agent\_work\63\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl(331)
soffice.bin!mainCRTStartup() Line 17
	at d:\agent\_work\63\s\src\vctools\crt\vcstartup\src\startup\exe_main.cpp(17)
kernel32.dll!BaseThreadInitThunk()
ntdll.dll!RtlUserThreadStart()

_______________________________________________
LibreOffice mailing list
LibreOffice@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/libreoffice



[Index of Archives]     [LARTC]     [Bugtraq]     [Yosemite Forum]     [Photo]

  Powered by Linux