Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-87350

QT hangs when decimal symbol and digit grouping symbol are the same

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Not Evaluated
    • Resolution: Fixed
    • Affects Version/s: 5.14.2
    • Fix Version/s: 5.15.0
    • Component/s: Core: Locales (i18n)
    • Labels:
      None
    • Environment:
      Windows 10
    • Platform/s:
      Windows
    • Commits:
      1eeabc6652220ff263eaa63872cd52c1693cbf69 (qtbase/5.15)

      Description

      When changing regional setting in windows, we have some issues if the decimal symbol and digit grouping symbol are the same.

      • In English language systems if both symbols are coma it will start and hang.
      • In Dutch language systems if both symbols are dot it will start and hang.

      In Qt there is a warning:
      qtbase\src\corelib\text\qlocale.cpp:767 qWarning("System-supplied decimal and grouping character are both 0x%hx", group);
      And in this case its the warning that causes the hang (a mutex can't be locked twice), it has to do with creating logging categories.

       
      callstack:

       	ntdll.dll!NtWaitForAlertByThreadId()	Unknown
       	ntdll.dll!RtlSleepConditionVariableCS()	Unknown
       	KernelBase.dll!SleepConditionVariableCS()	Unknown
       	Qt5Core.dll!_Init_thread_header(int * pOnce) Line 212	C++
      > 	[Inline Frame] Qt5Core.dll!?A0x4d6f832f::Q_QGS_qt_library_settings::innerFunction() Line 98	C++
       	[Inline Frame] Qt5Core.dll!QGlobalStatic<QLibrarySettings,&`anonymous namespace'::Q_QGS_qt_library_settings::innerFunction,&A0x4d6f832f::Q_QGS_qt_library_settings::guard>::operator()() Line 136	C++
       	Qt5Core.dll!QLibraryInfoPrivate::configuration() Line 124	C++
       	Qt5Core.dll!QLibraryInfo::location(QLibraryInfo::LibraryLocation loc) Line 722	C++
       	Qt5Core.dll!QLoggingRegistry::initializeRules() Line 332	C++
       	[Inline Frame] Qt5Core.dll!QLoggingRegistry::{ctor}() Line 281	C++
       	[Inline Frame] Qt5Core.dll!`anonymous-namespace'::Q_QGS_qtLoggingRegistry::innerFunction::__l2::Holder::{ctor}() Line 63	C++
       	[Inline Frame] Qt5Core.dll!?A0x5679da2e::Q_QGS_qtLoggingRegistry::innerFunction() Line 63	C++
       	[Inline Frame] Qt5Core.dll!QGlobalStatic<QLoggingRegistry,&`anonymous namespace'::Q_QGS_qtLoggingRegistry::innerFunction,&A0x5679da2e::Q_QGS_qtLoggingRegistry::guard>::operator()() Line 136	C++
       	Qt5Core.dll!QLoggingRegistry::instance() Line 432	C++
       	[Inline Frame] Qt5Core.dll!QLoggingCategory::init(const char *) Line 240	C++
       	[Inline Frame] Qt5Core.dll!QLoggingCategory::{ctor}(const char *) Line 211	C++
       	[Inline Frame] Qt5Core.dll!`anonymous-namespace'::Q_QGS_qtDefaultCategory::innerFunction::__l2::Holder::{ctor}() Line 47	C++
       	[Inline Frame] Qt5Core.dll!?A0xc13be24a::Q_QGS_qtDefaultCategory::innerFunction() Line 47	C++
       	[Inline Frame] Qt5Core.dll!QGlobalStatic<QLoggingCategory,&`anonymous namespace'::Q_QGS_qtDefaultCategory::innerFunction,&A0xc13be24a::Q_QGS_qtDefaultCategory::guard>::operator()() Line 136	C++
       	Qt5Core.dll!QLoggingCategory::defaultCategory() Line 376	C++
       	Qt5Core.dll!qt_message_print(QtMsgType msgType, const QMessageLogContext & context, const QString & message) Line 1828	C++
       	Qt5Core.dll!qt_message(QtMsgType msgType, const QMessageLogContext & context, const char * msg, char * ap) Line 379	C++
       	Qt5Core.dll!QMessageLogger::warning(const char * msg, ...) Line 656	C++
      	Qt5Core.dll!updateSystemPrivate() Line 770	C++
       	Qt5Core.dll!systemData() Line 802	C++
       	[Inline Frame] Qt5Core.dll!defaultData() Line 814	C++
       	[Inline Frame] Qt5Core.dll!`anonymous-namespace'::Q_QGS_defaultLocalePrivate::innerFunction::__l2::Holder::{ctor}() Line 865	C++
       	Qt5Core.dll!`anonymous namespace'::Q_QGS_defaultLocalePrivate::innerFunction() Line 865	C++
       	[Inline Frame] Qt5Core.dll!QGlobalStatic<QSharedDataPointer<QLocalePrivate>,&`anonymous namespace'::Q_QGS_defaultLocalePrivate::innerFunction,&A0x0cee378e::Q_QGS_defaultLocalePrivate::guard>::operator*() Line 145	C++
       	Qt5Core.dll!QLocale::QLocale() Line 954	C++
       	[Inline Frame] Qt5Core.dll!QResourceFileEnginePrivate::{ctor}() Line 1331	C++
       	Qt5Core.dll!QResourceFileEngine::QResourceFileEngine(const QString & file) Line 1360	C++
       	Qt5Core.dll!_q_resolveEntryAndCreateLegacyEngine_recursive(QFileSystemEntry & entry, QFileSystemMetaData & data, QAbstractFileEngine * & engine, bool resolvingEntry) Line 150	C++
       	Qt5Core.dll!QFileSystemEngine::resolveEntryAndCreateLegacyEngine(QFileSystemEntry & entry, QFileSystemMetaData & data) Line 196	C++
       	Qt5Core.dll!QFileInfo::exists(const QString & file) Line 712	C++
       	Qt5Core.dll!QLibraryInfoPrivate::findConfiguration() Line 191	C++
       	Qt5Core.dll!QLibrarySettings::load() Line 147	C++
       	[Inline Frame] Qt5Core.dll!QLibrarySettings::{ctor}() Line 141	C++
      > 	[Inline Frame] Qt5Core.dll!`anonymous-namespace'::Q_QGS_qt_library_settings::innerFunction::__l2::Holder::{ctor}() Line 98	C++
       	[Inline Frame] Qt5Core.dll!?A0x4d6f832f::Q_QGS_qt_library_settings::innerFunction() Line 98	C++
       	[Inline Frame] Qt5Core.dll!QGlobalStatic<QLibrarySettings,&`anonymous namespace'::Q_QGS_qt_library_settings::innerFunction,&A0x4d6f832f::Q_QGS_qt_library_settings::guard>::operator()() Line 136	C++
       	Qt5Core.dll!QLibraryInfoPrivate::configuration() Line 124	C++
       	Qt5Core.dll!QLibraryInfo::location(QLibraryInfo::LibraryLocation loc) Line 722	C++
       	Qt5Core.dll!QCoreApplication::libraryPathsLocked() Line 2730	C++
       	Qt5Core.dll!QCoreApplication::libraryPaths() Line 2679	C++
       	Qt5Core.dll!QFactoryLoader::update() Line 188	C++
       	Qt5Core.dll!QFactoryLoader::QFactoryLoader(const char * iid, const QString & suffix, Qt::CaseSensitivity cs) Line 355	C++
       	[Inline Frame] Qt5Gui.dll!`anonymous-namespace'::Q_QGS_loader::innerFunction::__l2::Holder::{ctor}() Line 51	C++
       	[Inline Frame] Qt5Gui.dll!?A0x1be0468c::Q_QGS_loader::innerFunction() Line 51	C++
       	Qt5Gui.dll!QGlobalStatic<QFactoryLoader,&`anonymous namespace'::Q_QGS_loader::innerFunction,&A0x1be0468c::Q_QGS_loader::guard>::operator()() Line 136	C++
       	Qt5Gui.dll!QPlatformIntegrationFactory::keys(const QString & platformPluginPath) Line 100	C++
       	Qt5Gui.dll!init_platform(const QString & pluginNamesWithArguments, const QString & platformPluginPath, const QString & platformThemeName, int & argc, char * * argv) Line 1209	C++
       	Qt5Gui.dll!QGuiApplicationPrivate::createPlatformIntegration() Line 1476	C++
       	Qt5Gui.dll!QGuiApplicationPrivate::createEventDispatcher() Line 1493	C++
       	Qt5Core.dll!QCoreApplicationPrivate::init() Line 848	C++
       	Qt5Gui.dll!QGuiApplicationPrivate::init() Line 1524	C++
       	Qt5Gui.dll!QGuiApplication::QGuiApplication(int & argc, char * * argv, int flags) Line 663	C++
       	Qastor64.exe!main(int argc, char * * argv) Line 223	C++
       	Qastor64.exe!WinMain(HINSTANCE__ * __formal, HINSTANCE__ * __formal, char * __formal, int __formal) Line 97	C++
       	[Inline Frame] Qastor64.exe!invoke_main() Line 102	C++
       	Qastor64.exe!__scrt_common_main_seh() Line 288	C++
       	kernel32.dll!BaseThreadInitThunk()	Unknown
       	ntdll.dll!RtlUserThreadStart()	Unknown
      

        Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

          Activity

            People

            Assignee:
            Eddy Edward Welbourne
            Reporter:
            amaia.arrieta Amaia Arrieta
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Dates

              Created:
              Updated:
              Resolved:

                Gerrit Reviews

                There are no open Gerrit changes