<div dir="ltr"><div>Qt Version: 5.15.1 / OS Version: Windows 11</div><div><br></div>Hi all,<div><br></div><div>I spent already a full day searching for a nasty crash in QAbstractEventDispatcher::filterNativeEvent() when I try to open a QMessageBox.</div><div><br></div><div>Has anyone an idea what could have caused this behavior?</div><div><br></div><div>I don't use explicit event filters, so I have no idea where the invalid filter should come from. However, I am using QThread, and the crash happens in a slot connected (queued connection) to a signal emitted by the thread (m_pWorkerThread). The slot looks like this:</div><div><br></div><div><font face="monospace">void MyMainWindow::threadDone()<br>{<br>  QApplication::restoreOverrideCursor();<br><br>  m_pWorkerThread->quit();<br>  m_pWorkerThread->wait();<br>  m_pWorkerThread->deleteLater();<br>  m_pWorkerThread = nullptr;<br><br></font></div><div><font face="monospace">  QMessageBox::information( this, "MyApplication", "Processing finished." );<br>}</font><br></div><div><br></div><div>Call Stack:</div><div><br></div><div><font face="monospace">>       Qt5Core_TP.dll!QAbstractEventDispatcher::filterNativeEvent(const QByteArray & eventType, void * message, long * result) Line 495    C++<br>  [Inline Frame] qwindows.dll!QWindowsContext::filterNativeEvent(tagMSG *) Line 1728      C++<br>  qwindows.dll!QWindowsContext::windowsProc(HWND__ * hwnd, unsigned int message, QtWindows::WindowsEventType et, unsigned __int64 wParam, __int64 lParam, __int64 * result, QWindowsWindow * * platformWindowPtr) Line 1157       C++<br>  qwindows.dll!qWindowsWndProc(HWND__ * hwnd, unsigned int message, unsigned __int64 wParam, __int64 lParam) Line 1684    C++<br>  user32.dll!UserCallWinProcCheckWow()    Unknown<br>      user32.dll!DispatchClientMessage()      Unknown<br>      user32.dll!__fnINLPCREATESTRUCT()       Unknown<br>      ntdll.dll!KiUserCallbackDispatcherContinue ()   Unknown<br>      win32u.dll!NtUserCreateWindowEx ()      Unknown<br>      user32.dll!VerNtUserCreateWindowEx()    Unknown<br>      user32.dll!CreateWindowInternal()       Unknown<br>      user32.dll!CreateWindowExW ()   Unknown<br>      qwindows.dll!WindowCreationData::create(const QWindow * w, const QWindowsWindowData & data, QString title) Line 809 C++<br>  qwindows.dll!QWindowsWindowData::create(const QWindow * w, const QWindowsWindowData & parameters, const QString & title) Line 1553      C++<br>  qwindows.dll!QWindowsIntegration::createPlatformWindow(QWindow * window) Line 348       C++<br>  Qt5Gui_TP.dll!QWindowPrivate::create(bool recursive, unsigned __int64 nativeHandle) Line 527    C++<br>  Qt5Widgets_TP.dll!QWidgetPrivate::create() Line 1316    C++<br>  Qt5Widgets_TP.dll!QWidget::create(unsigned __int64 window, bool initializeWindow, bool destroyOldWindow) Line 1182      C++<br>  Qt5Widgets_TP.dll!QWidgetPrivate::setVisible(bool visible) Line 8062    C++<br>  Qt5Widgets_TP.dll!QWidget::setVisible(bool visible) Line 8044   C++<br>  Qt5Widgets_TP.dll!QDialog::setVisible(bool visible) Line 791    C++<br>  Qt5Widgets_TP.dll!QDialog::exec() Line 595      C++<br>  Qt5Widgets_TP.dll!showNewMessageBox(QWidget * parent, QMessageBox::Icon icon, const QString & title, const QString & text, QFlags<enum QMessageBox::StandardButton> buttons, QMessageBox::StandardButton defaultButton) Line 1647 C++<br>  Qt5Widgets_TP.dll!QMessageBox::information(QWidget * parent, const QString & title, const QString & text, QFlags<enum QMessageBox::StandardButton> buttons, QMessageBox::StandardButton defaultButton) Line 1683  C++<br></font><div><br></div><div>Debugger data at the location of the crash (look at "filter"):</div><div><br></div><div><font face="monospace">-          d       0x0000020000030600 {threadId=0x00004d60 interrupt={...} internalHwnd=0x00000000003c087e {unused=??? } ...}      QAbstractEventDispatcherPrivate * const {QEventDispatcherWin32Private}<br>  -            [QEventDispatcherWin32Private]  {threadId=0x00004d60 interrupt={...} internalHwnd=0x00000000003c087e {unused=??? } ...} QEventDispatcherWin32Private<br>    +           QAbstractEventDispatcherPrivate {eventFilters={ size = 0x00000001 } }   QAbstractEventDispatcherPrivate<br>      threadId      0x00004d60      unsigned long<br>    +          interrupt       {...}   QAtomicInt<br>    +             internalHwnd    0x00000000003c087e {unused=??? }        HWND__ *<br>    +               getMessageHook  0x000000000aba0ab9 {unused=0x00000000 } HHOOK__ *<br>      sendPostedEventsTimerId     0x0000000000000000      unsigned __int64<br>    +               wakeUps {...}   QAtomicInt<br>    +             timerVec        { size = 0x00000003 }   QList<WinTimerInfo *><br>    +            timerDict       { size = 0x00000003 }   QHash<int,WinTimerInfo *><br>    +                sn_read { size = 0x00000000 }   QHash<int,QSockNot *><br>    +            sn_write        { size = 0x00000000 }   QHash<int,QSockNot *><br>    +            sn_except       { size = 0x00000000 }   QHash<int,QSockNot *><br>    +            active_fd       { size = 0x00000000 }   QHash<int,QSockFd><br>      activateNotifiersPosted      false   bool<br>      closingDown      false   bool<br>      winEventNotifierListModified     false   bool<br>      winEventNotifierActivatedEvent   0x0000000000000000      void *<br>    +         winEventNotifierList    { size = 0x00000000 }   QList<QWinEventNotifier *><br>    +               queuedUserInputEvents   { size = 0x00000000 }   QList<tagMSG><br>    +            queuedSocketEvents      { size = 0x00000000 }   QList<tagMSG><br>  +               QObjectPrivate  {extraData=0x0000020000063780 {userData={ size = 0x00000000 } propertyNames={ size = 0x00000000 } propertyValues=...} ...}      QObjectPrivate<br>  +            eventFilters    { size = 0x00000001 }   QList<QAbstractNativeEventFilter *><br>+            eventType       windows_generic_MSG     const QByteArray &<br>+               <b>filter </b>0x00000200048cefc0 {d=<b>0xdfdfdfdfdfdfdfdf</b> {...} }   QAbstractNativeEventFilter *<br>  i      0x00000000      int<br>  message 0x000000000014a720      void *<br>-               result  0x000000000014a6f8 {0x00000000} long *<br>    0x00000000        long<br>-         scopeLevelCounter       {threadData=0x00000200000e0600 {_ref={...} loopLevel=0x00000001 scopeLevel=0x00000002 ...} }    QScopedScopeLevelCounter<br>  -          threadData      0x00000200000e0600 {_ref={...} loopLevel=0x00000001 scopeLevel=0x00000002 ...}  QThreadData *<br>    +          _ref    {...}   QAtomicInt<br>      loopLevel  0x00000001      int<br>      scopeLevel        0x00000002      int<br>    +            eventLoops      { size = 0x00000001 }   QStack<QEventLoop *><br>    +             postEventList   { size = 0x00000050 }   QPostEventList<br>    +         thread  {...}   QAtomicPointer<QThread><br>    +          threadId        {...}   QAtomicPointer<void><br>    +             eventDispatcher {...}   QAtomicPointer<QAbstractEventDispatcher><br>    +         tls     { size = 0x00000008 }   QVector<void *><br>    +          flaggedSignatures       {idx=0x000002d0 locations=0x00000200000e0660 {0x0000000140855740 "1postprocess()", 0x0000000140855790 "2calculationDone()"} }       QThreadData::FlaggedDebugSignatures<br>      quitNow   false   bool<br>      canWait  false   bool<br>      isAdopted        true    bool<br>      requiresCoreApplication  true    bool</font><br></div><div><br></div>-- <br><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><br style="color:rgb(51,51,51);font-family:sans-serif;font-size:13px"><table cellpadding="0" cellspacing="0" style="border-spacing:0px;border-collapse:collapse;background-color:transparent;font-size:13px;width:480px;border:none;padding:0px;color:rgb(34,34,34);margin:0px"><tbody><tr><td style="padding:0px"><span><span style="font-weight:700">Rainer Wiesenfarth</span></span><br><span style="display:block;padding:0px 0px 5px">Senior Software Engineer<br>Geospatial Division</span><table cellpadding="0" cellspacing="0" border="0" style="border-spacing:0px;border-collapse:collapse;background-color:transparent;width:326.4px"><tbody><tr><td style="padding:0px"> </td></tr><tr><td style="padding:0px;border-top:1px solid rgb(34,34,34)"><br><img src="https://cdn.filestackcontent.com/FxRuIkIxQ7CX1xzjzYEQ" width="100" height="23" style="border:0px;vertical-align:middle;display:block;margin-bottom:10px"></td></tr></tbody></table><p style="margin:0px;line-height:1.4em">Rotebühlstr. 81, 70178 Stuttgart<br>Germany<br><br><a href="mailto:Rainer_Wiesenfarth@trimble.com" style="background-color:transparent;color:rgb(0,99,163)" target="_blank">Rainer_Wiesenfarth@trimble.com</a><br><a href="https://geospatial.trimble.com/products-and-solutions/trimble-inpho" style="background-color:transparent;color:rgb(0,99,163)" target="_blank">geospatial.trimble.com/products-and-solutions/trimble-inpho</a></p><table cellpadding="0" cellspacing="0" style="border-spacing:0px;border-collapse:collapse;background-color:transparent;width:480px;border:none"><tbody><tr><td valign="top" style="padding:7px 0px 0px"><table cellpadding="0" cellspacing="0" style="border-spacing:0px;border-collapse:collapse;background-color:transparent;border:none"><tbody><tr></tr></tbody></table></td></tr></tbody></table><br><span style="display:block;font-size:10px">Trimble Germany GmbH, Am Prime Parc 11, 65479 Raunheim, Eingetragen beim Amtsgericht Darmstadt unter HRB 83893, Geschäftsführer: Rob Reeder, Jürgen Kesper</span></td></tr></tbody></table></div></div></div></div>