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

EXCEPTION_FLT_INVALID_OPERATION when moving the mouse

    XMLWordPrintable

Details

    • Windows

    Description

      Ever since I moved from Qt5.10 to Qt5.12.3, I started getting occasional floating point invalid operation exceptions while moving the mouse.   In Qt5.12.3, the exceptions were related to calls to OpenGLFunctions_4_2_Compatibility::glPixelStorei.
      I then added a patch in my code that ignored the exception and was able to temporarily continue running my app.
      I since switched to Qt5.13.0 and it seems that that exception is now gone, but I now get another one like that, and also from Qt5Guid.dll.

      Here's an excerpt from my code that handles that exception to illustrate:

      const QString qsInfo = rException.what();

      {{// Patch for intermittent invalid floating point exception with }}
      {{ // Qt5.12.3 and OpenGL when moving/clicking the mouse.}}
      {{ // This ignores the exception.}}
      {{ if ( qsInfo.contains( }}
             "QOpenGLFunctions_4_2_Compatibility::glPixelStorei", Qt::CaseInsensitive ) ) {
         bShowException = false;
          bDebug() << qsInfo;
      {{ }}}
      {{ else {}}
      {{    // Patch for intermittent invalid floating point exception with }}
      {{    // Qt5.13.0 and OpenGL when moving/clicking the mouse. }}
          // This ignores the exception.
          if ( qsInfo.contains( "Qt5Guid.dll", Qt::CaseInsensitive ) &&
              qsInfo.contains( "SE EXCEPTION_FLT_INVALID_OPERATION", Qt::CaseInsensitive ) ) {
            bShowException = false;
             bDebug() << qsInfo;
      {{      }}}
      {{ }}}

      And here's a call stack that I captured in Visual Studio to show how it is getting there:

      Qt5Guid.dll!reciprocal_mul_ps(__m128 a, float mul) Line 150 C++
      Qt5Guid.dll!convertARGBFromARGB32PM_sse4<0,0>(unsigned int * buffer, const unsigned int * src, int count) Line 171 C++
      Qt5Guid.dll!storeARGB32FromARGB32PM_sse4(unsigned char * dest, const unsigned int * src, int index, int count, const QVector<unsigned int> * __formal, QDitherInfo * __formal) Line 377 C++
      Qt5Guid.dll!convert_generic(QImageData * dest, const QImageData * src, QFlags<enum Qt::ImageConversionFlag> flags) Line 217 C++
      Qt5Guid.dll!QImage::convertToFormat_helper(QImage::Format format, QFlags<enum Qt::ImageConversionFlag> flags) Line 2105 C++
      Qt5Guid.dll!QImage::convertToFormat(QImage::Format f, QFlags<enum Qt::ImageConversionFlag> flags) Line 185 C++
      Qt5Guid.dll!qt_imageToWinHBITMAP(const QImage & imageIn, int hbitmapFormat) Line 280 C++
      Qt5Guid.dll!qt_pixmapToWinHBITMAP(const QPixmap & p, int hbitmapFormat) Line 360 C++
      qwindowsd.dll!00007ff98d347f02() Unknown
      qwindowsd.dll!00007ff98d34b2f0() Unknown
      qwindowsd.dll!00007ff98d3483b0() Unknown
      qwindowsd.dll!00007ff98d3485d9() Unknown
      qwindowsd.dll!00007ff98d34b381() Unknown
      qwindowsd.dll!00007ff98d347a88() Unknown
      Qt5Guid.dll!QWindowPrivate::applyCursor() Line 2805 C++
      Qt5Guid.dll!QWindowPrivate::setCursor(const QCursor * newCursor) Line 2785 C++
      Qt5Guid.dll!QWindow::setCursor(const QCursor & cursor) Line 2746 C++
      Qt5Widgetsd.dll!applyCursor(QWidget * w, const QCursor & c) Line 5037 C++
      Qt5Widgetsd.dll!qt_qpa_set_cursor(QWidget * w, bool force) Line 5074 C++
      Qt5Widgetsd.dll!QWidgetPrivate::setCursor_sys(const QCursor & cursor) Line 5010 C++
      Qt5Widgetsd.dll!QWidget::setCursor(const QCursor & cursor) Line 5001 C++
      Qt5Widgetsd.dll!QHeaderView::mouseMoveEvent(QMouseEvent * e) Line 2719 C++
      Qt5Widgetsd.dll!QWidget::event(QEvent * event) Line 8937 C++
      Qt5Widgetsd.dll!QFrame::event(QEvent * e) Line 550 C++
      Qt5Widgetsd.dll!QAbstractScrollArea::viewportEvent(QEvent * e) Line 1221 C++
      Qt5Widgetsd.dll!QAbstractItemView::viewportEvent(QEvent * event) Line 1754 C++
      Qt5Widgetsd.dll!QHeaderView::viewportEvent(QEvent * e) Line 2902 C++
      Qt5Widgetsd.dll!QAbstractScrollAreaPrivate::viewportEvent(QEvent * event) Line 113 C++
      Qt5Widgetsd.dll!QAbstractScrollAreaFilter::eventFilter(QObject * o, QEvent * e) Line 129 C++
      Qt5Cored.dll!QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject * receiver, QEvent * event) Line 1191 C++
      Qt5Widgetsd.dll!QApplicationPrivate::notify_helper(QObject * receiver, QEvent * e) Line 3734 C++
      Qt5Widgetsd.dll!QApplication::notify(QObject * receiver, QEvent * e) Line 3200 C++
      c-spawner.dll!StsApplication::notify(QObject * receiver, QEvent * event) Line 3086 C++
      Qt5Cored.dll!QCoreApplication::notifyInternal2(QObject * receiver, QEvent * event) Line 1065 C++
      Qt5Cored.dll!QCoreApplication::sendSpontaneousEvent(QObject * receiver, QEvent * event) Line 1473 C++
      Qt5Widgetsd.dll!QApplicationPrivate::sendMouseEvent(QWidget * receiver, QMouseEvent * event, QWidget * alienWidget, QWidget * nativeWidget, QWidget * * buttonDown, QPointer<QWidget> & lastMouseReceiver, bool spontaneous, bool onlyDispatchEnterLeave) Line 2686 C++
      Qt5Widgetsd.dll!QWidgetWindow::handleMouseEvent(QMouseEvent * event) Line 664 C++
      Qt5Widgetsd.dll!QWidgetWindow::event(QEvent * event) Line 282 C++
      Qt5Widgetsd.dll!QApplicationPrivate::notify_helper(QObject * receiver, QEvent * e) Line 3740 C++
      Qt5Widgetsd.dll!QApplication::notify(QObject * receiver, QEvent * e) Line 3096 C++
      c-spawner.dll!StsApplication::notify(QObject * receiver, QEvent * event) Line 3086 C++
      Qt5Cored.dll!QCoreApplication::notifyInternal2(QObject * receiver, QEvent * event) Line 1065 C++
      Qt5Cored.dll!QCoreApplication::sendSpontaneousEvent(QObject * receiver, QEvent * event) Line 1473 C++
      Qt5Guid.dll!QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent * e) Line 2112 C++
      Qt5Guid.dll!QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent * e) Line 1847 C++
      Qt5Guid.dll!QWindowSystemInterface::sendWindowSystemEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags) Line 1154 C++
      qwindowsd.dll!00007ff98d3d0da2() Unknown
      Qt5Cored.dll!qt_internal_proc(HWND__ * hwnd, unsigned int message, unsigned __int64 wp, __int64 lp) Line 247 C++
      [External Code]
      Qt5Cored.dll!QEventDispatcherWin32::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags) Line 640 C++
      qwindowsd.dll!00007ff98d3d0d54() Unknown
      Qt5Cored.dll!QEventLoop::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags) Line 139 C++
      Qt5Cored.dll!QEventLoop::exec(QFlags<enum QEventLoop::ProcessEventsFlag> flags) Line 225 C++
      Qt5Cored.dll!QCoreApplication::exec() Line 1373 C++
      Qt5Guid.dll!QGuiApplication::exec() Line 1789 C++
      Qt5Widgetsd.dll!QApplication::exec() Line 2897 C++
      c-spawner.dll!AtsRunParent(QLibrary & rSystemDll, HWND__ * * const pHwndMainWidget) Line 796 C++
      c-ats.exe!main(int argc, char * * argv) Line 854 C++
      c-ats.exe!WinMain(HINSTANCE__ * _formal, HINSTANCE_ * __formal, char * __formal, int __formal) Line 97 C++

       

      Attachments

        Issue Links

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

          Activity

            People

              srutledg Shawn Rutledge
              rtauber Richard Tauber
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Gerrit Reviews

                  There are no open Gerrit changes