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

Bluetooth blocks the main thread for a short time

    XMLWordPrintable

Details

    • Windows
    • c68e5d095 (dev), 4c92565f0 (dev), 703db341e (6.4), 1c5c34385 (6.4), bcc8988b4 (6.5), c2556321d (6.5), 574fabf40 (tqtc/lts-6.2), f908f6591 (tqtc/lts-6.2)
    • Foundation Sprint 72, Foundation Sprint 73

    Description

      In the attached video the UI is blocked for a few seconds at the following video times:
      00:14
      00:26
      00:35
      00:40

      The problem seems to appear when disconnectFromDevice intersects with (unfinished?) service discovery.

      Steps to reproduce:

      1. Make sure that the Bluetooth device is paired with Windows but out of reach/offline so that buffered Bluetooth device information is used.
      2. Start the lowenergyscanner example app.
      3. Click on the offline Bluetooth device and select a service as shown in the video.
      4. Go back to the main device list. The UI will now randomly (not always) block for a short time.

      In very rare cases I can also trigger a crash/dead lock in when exiting:

                                                                                                                                                                             
      1  ZwWaitForAlertByThreadId                                                                                                        ntdll                                         0x7fff098b0ab4 
      2  RtlWaitOnAddress                                                                                                                ntdll                                         0x7fff098738ad 
      3  RtlWaitOnAddress                                                                                                                ntdll                                         0x7fff09873762 
      4  RtlWaitOnAddress                                                                                                                ntdll                                         0x7fff09873473 
      5  WaitOnAddress                                                                                                                   KERNELBASE                                    0x7fff075edaaf 
      6  QtWindowsFutex::futexWait<QBasicAtomicPointer<QMutexPrivate>>                                                                   qfutex_p.h                               124  0x7ffe455dd3d6 
      7  QBasicMutex::lockInternal                                                                                                       qmutex.cpp                               615  0x7ffe455dcac9 
      8  QBasicMutex::lock                                                                                                               qmutex.h                                 77   0x7ffe4506cd91 
      9  std::unique_lock<QMutex>::unique_lock<QMutex>                                                                                   mutex                                    138  0x7ffe451a3b07 
      10 `anonymous namespace'::qt_unique_lock<QMutex,std::unique_lock<QMutex>>                                                          qlocking_p.h                             67   0x7ffe451a27a6 
      11 QCoreApplicationPrivate::lockThreadPostEventList                                                                                qcoreapplication.cpp                     1482 0x7ffe4519a18e 
      12 QCoreApplication::removePostedEvents                                                                                            qcoreapplication.cpp                     1835 0x7ffe4519537e 
      13 QObjectPrivate::~QObjectPrivate                                                                                                 qobject.cpp                              191  0x7ffe4526494b 
      14 QObjectPrivate::`vector deleting destructor'                                                                                    Qt6Cored                                      0x7ffe4527a817 
      15 QScopedPointerDeleter<QObjectData>::cleanup                                                                                     qscopedpointer.h                         24   0x7ffe4527c9ea 
      16 QScopedPointer<QObjectData,QScopedPointerDeleter<QObjectData>>::~QScopedPointer<QObjectData,QScopedPointerDeleter<QObjectData>> qscopedpointer.h                         81   0x7ffe45279231 
      17 QObject::~QObject                                                                                                               qobject.cpp                              1108 0x7ffe4525d1e7 
      18 QWinRTBluetoothDeviceDiscoveryWorker::~QWinRTBluetoothDeviceDiscoveryWorker                                                     qbluetoothdevicediscoveryagent_winrt.cpp 322  0x7ffe6d7770c5 
      19 QWinRTBluetoothDeviceDiscoveryWorker::`scalar deleting destructor'                                                              Qt6Bluetoothd                                 0x7ffe6d7a14e8 
      20 std::_Destroy_in_place<QWinRTBluetoothDeviceDiscoveryWorker>                                                                    xmemory                                  313  0x7ffe6d786e96 
      21 std::_Ref_count_obj2<QWinRTBluetoothDeviceDiscoveryWorker>::_Destroy                                                            memory                                   2048 0x7ffe6d7a5deb 
      22 std::_Ref_count_base::_Decref                                                                                                   memory                                   1110 0x7ffe6d7a5963 
      23 std::_Ptr_base<QWinRTBluetoothDeviceDiscoveryWorker>::_Decref                                                                   memory                                   1341 0x7ffe6d7a5914 
      24 std::shared_ptr<QWinRTBluetoothDeviceDiscoveryWorker>::~shared_ptr<QWinRTBluetoothDeviceDiscoveryWorker>                        memory                                   1629 0x7ffe6d79a7c4 
      25 std::shared_ptr<QWinRTBluetoothDeviceDiscoveryWorker>::`scalar deleting destructor'                                             Qt6Bluetoothd                                 0x7ffe6d7a13a8 
      26 <lambda_b0f3cc96497b7acd339f90a19b66bee0>::operator()                                                                           qmetatype.h                              2327 0x7ffe6d79fad0 
      27 <lambda_b0f3cc96497b7acd339f90a19b66bee0>::<lambda_invoker_cdecl>                                                               qmetatype.h                              2327 0x7ffe6d773670 
      28 QMetaType::destroy                                                                                                              qmetatype.cpp                            615  0x7ffe451f028b 
      29 QMetaCallEvent::~QMetaCallEvent                                                                                                 qobject.cpp                              594  0x7ffe45266e4a 
      30 QMetaCallEvent::`vector deleting destructor'                                                                                    Qt6Cored                                      0x7ffe45068997 
      31 QCoreApplicationPrivate::cleanupThreadData                                                                                      qcoreapplication.cpp                     472  0x7ffe45199fb5 
      32 QGuiApplicationPrivate::~QGuiApplicationPrivate                                                                                 qguiapplication.cpp                      1695 0x7ffe52c7557f 
      33 QApplicationPrivate::~QApplicationPrivate                                                                                       qapplication.cpp                         132  0x7ffe662bcb1b 
      34 QApplicationPrivate::`vector deleting destructor'                                                                               Qt6Widgetsd                                   0x7ffe662dd95a 
      35 QScopedPointerDeleter<QObjectData>::cleanup                                                                                     qscopedpointer.h                         24   0x7ffe4527c9ea 
      36 QScopedPointer<QObjectData,QScopedPointerDeleter<QObjectData>>::~QScopedPointer<QObjectData,QScopedPointerDeleter<QObjectData>> qscopedpointer.h                         81   0x7ffe45279231 
      37 QObject::~QObject                                                                                                               qobject.cpp                              1108 0x7ffe4525d1e7 
      38 QCoreApplication::~QCoreApplication                                                                                             qcoreapplication.cpp                     878  0x7ffe45193f21 
      39 QGuiApplication::~QGuiApplication                                                                                               qguiapplication.cpp                      687  0x7ffe52c727c8 
      40 QApplication::~QApplication                                                                                                     qapplication.cpp                         704  0x7ffe662b6004 
      41 main                                                                                                                            main.cpp                                 57   0x7ff71f2e6e68 
      42 WinMain                                                                                                                         qtentrypoint_win.cpp                     50   0x7ff71f772bb2 
      43 invoke_main                                                                                                                     exe_common.inl                           107  0x7ff71f7709a2 
      44 __scrt_common_main_seh                                                                                                          exe_common.inl                           288  0x7ff71f77088e 
      45 __scrt_common_main                                                                                                              exe_common.inl                           331  0x7ff71f77074e 
      46 WinMainCRTStartup                                                                                                               exe_winmain.cpp                          17   0x7ff71f770a3e 
      47 BaseThreadInitThunk                                                                                                             KERNEL32                                      0x7fff078774b4 
      48 RtlUserThreadStart                                                                                                              ntdll                                         0x7fff098626a1 
      

      Attachments

        Issue Links

          Activity

            People

              ivan.solovev Ivan Solovev
              Harald Meyer Harald Meyer
              Vladimir Minenko Vladimir Minenko
              Alex Blasche Alex Blasche
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: