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

          For Gerrit Dashboard: QTBUG-108461
          # Subject Branch Project Status CR V

          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: