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

Floating-point invalid operation in QIcon::pimap() / reciprocal_mul_ps()

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • P2: Important
    • 5.12.4, 5.13.1, 5.14.0 Alpha
    • 5.12.3
    • GUI: Painting
    • None
    • Windows 10, 1809, Visual Studio 2017, compile in x64 with option /EHa and e /fp:precise (for my application)
    • Windows
    • 4d2ee7f358a5cea64e7093aa0ab54e6422f8915e (qt/qtbase/5.12)

    Description

      I have an application with run on Windows, compile with Visual Studio 2017, 64 bits and SEH exception enable (option  /EHa and e /fp:precise).

      Since I update to the Qt 5.12.3, I have "Floating-point invalid operation" exception through inside QIcon conversion, especially inside reciprocal_mul_ps() function. Before, in version Qt 5.9.4, I have no problem.

       

      Here part of the call stack:

      static inline void convertARGBFromARGB32PM_sse4(uint *buffer, const uint *src, int count) (Where the exception occured)

      void QT_FASTCALL storeARGB32FromARGB32PM_sse4(...)

      ...

      void convert_generic()

      ....

      QPixmap QPixmapIconEngine::pixmap(const QSize &size, QIcon::Mode mode, QIcon::State state)

       

      The exception occured on ligne "ia = _mm_sub_ps(_mm_add_ps(ia, ia), _mm_mul_ps(ia, _mm_mul_ps(ia, a)));" (line 101 of qdrawhelper_sse4.cpp)

       

      As example, this exception occurred when I call QWidget::setWindowIcon() with a QIcon (.ico, .png, etc.).

       

      It's very annoying, because it happen during painting also, so it's not possible to disable locally the FPE exception for part of code which call Qt.

       

      Attachments

        Issue Links

          Activity

            People

              allan.jensen Allan Sandfeld Jensen
              francoisj Francois JEAN
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: