Details
-
Bug
-
Resolution: Fixed
-
P1: Critical
-
6.10.0 Beta1
-
None
-
-
f03ab44e0 (dev)
Description
Seems like QTranslator deadlocks whenever it tries to load a translation file that doesn't exist because it tries to translate the error, during which it tries to lock the translations mutex again. Probably introduced by ec3a4590fd35ff9e674ecd77173f1ab0323b19f7. Backtrace:
(gdb) bt #0 syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38 #1 0x00007ffff5733c56 in QtLinuxFutex::_q_futex (addr=<optimized out>, op=0, val=3, val2=0, addr2=0x0, val3=0) at [home]/ksrc6/qt/dev/qtbase/src/corelib/thread/qfutex_linux_p.h:48 #2 QtLinuxFutex::futexWait<QBasicAtomicPointer<QMutexPrivate> > (futex=..., expectedValue=expectedValue@entry=0x3) at [home]/ksrc6/qt/dev/qtbase/src/corelib/thread/qfutex_linux_p.h:67 #3 0x00007ffff57339b9 in QBasicMutex::lockInternal (this=0x5555555e9e00) at [home]/ksrc6/qt/dev/qtbase/src/corelib/thread/qmutex.cpp:651 #4 0x00007ffff54f7c48 in QBasicMutex::lock (this=<optimized out>) at [home]/ksrc6/qt/dev/qtbase/src/corelib/thread/qmutex.h:44 #5 0x00007ffff558e9ce in QMutexLocker<QMutex>::QMutexLocker (this=0x7fffffffca80, mutex=0x5555555e9e00) at [home]/ksrc6/qt/dev/qtbase/src/corelib/thread/qmutex.h:255 #6 QCoreApplication::translate (context=context@entry=0x7ffff54ca859 "QIODevice", sourceText=<optimized out>, disambiguation=disambiguation@entry=0x0, n=n@entry=-1) at [home]/ksrc6/qt/dev/qtbase/src/corelib/kernel/qcoreapplication.cpp:2309 #7 0x00007ffff55f7d7d in standardLibraryErrorString (errorCode=<optimized out>) at [home]/ksrc6/qt/dev/qtbase/src/corelib/kernel/qsystemerror.cpp:101 #8 0x00007ffff55f7e47 in QSystemError::stdString (errorCode=errorCode@entry=2) at [home]/ksrc6/qt/dev/qtbase/src/corelib/kernel/qsystemerror.cpp:128 #9 0x00007ffff5565664 in QResourceFileEngine::open (this=<optimized out>, flags=..., permissions=std::optional [no contained value]) at [home]/ksrc6/qt/dev/qtbase/src/corelib/io/qresource.cpp:1455 #10 0x00007ffff55441f1 in QFile::open (this=this@entry=0x7fffffffcc60, mode=mode@entry=...) at [home]/ksrc6/qt/dev/qtbase/src/corelib/global/qflags.h:77 #11 0x00007ffff55fb371 in QTranslatorPrivate::do_load (this=0x5555559f3fd0, realname=..., directory=...) at [home]/ksrc6/qt/dev/qtbase/src/corelib/kernel/qtranslator.cpp:540 #12 0x00007ffff55fc36c in operator() (__closure=__closure@entry=0x7fffffffcd80) at [home]/ksrc6/qt/dev/qtbase/src/corelib/kernel/qtranslator.cpp:650 #13 0x00007ffff55fc865 in QTranslatorPrivate::load_translation (this=this@entry=0x5555559f3fd0, locale=..., filename=..., prefix=..., directory=..., suffix=...) at [home]/ksrc6/qt/dev/qtbase/src/corelib/kernel/qtranslator.cpp:658 #14 0x00007ffff55fcc75 in QTranslator::load (this=<optimized out>, locale=..., filename=..., prefix=..., directory=..., suffix=...) at [home]/ksrc6/qt/dev/qtbase/src/corelib/kernel/qtranslator.cpp:754 #15 0x00007ffff76b2f63 in Translator::setLanguage (this=0x5555559fc1a0, aLanguage=...) at [project]/src/controllers/Translator.cpp:59 #16 0x00007ffff76a3877 in ProfileController::setGlobalLanguage (this=0x5555558969c0, language=...) at [project]/src/controllers/ProfileController.cpp:168 #17 0x00007ffff76a2cd0 in ProfileController::ProfileController (this=0x5555558969c0, manager=0x5555559fc340) at [project]/src/controllers/ProfileController.cpp:69 #18 0x00007ffff769db3e in ControllerManager::ControllerManager (this=0x5555559fc340, aOptions=..., parent=0x7fffffffd450) at [project]/src/controllers/ControllerManager.cpp:247 #19 0x00007ffff7533d79 in Application::exec (this=0x7fffffffd450) at [project]/src/Application.cpp:376 #20 0x0000555555560292 in main (argc=1, argv=0x7fffffffd608) at [project]/src/main.cpp:93