Search code examples
c++qtqt5seh

Qt5Core.dll crashing


I have an application that uses Qt, it works on some machines (Windows 7 64bits, Windows Server Standard 32bits), and on other machines (Windows Server 2012 R2 64bits, Windows 10 Pro 64bits) it gives an SEH exception. I've been trying to debug this for some time but I don't know how to find the root.

This exception is not caught by the try/catch, and I wasn't able to use __try/__except because it cannot be used together with the first, and also it says it can only be used in code that does not require unwinding (if I remember correctly).

Problem signature:
  Problem Event Name:   APPCRASH
  Application Name: gpeh_parser.exe
  Application Version:  0.0.0.0
  Application Timestamp:    584051a0
  Fault Module Name:    Qt5Core.dll
  Fault Module Version: 5.1.1.0
  Fault Module Timestamp:   521a52ae
  Exception Code:   c0000005
  Exception Offset: 00023087
  OS Version:   6.3.9600.2.0.0.272.7
  Locale ID:    11274
  Additional Information 1: 5861
  Additional Information 2: 5861822e1919d7c014bbb064c64908b2
  Additional Information 3: 01d7
  Additional Information 4: 01d7340064827245f2249cd1f1a7c264

I also tried to use windbg, but wasn't able to find the root of the problem (altough that might be due to my very little experience with it).

What else can I do to find what's happening?


Solution

  • I've found that enabling /EHa (Structured Exception Handling) on the compiler solves my problem, as I can then use my default exception handling code (try/catch).

    Appending this to my .pro did it:

    win* {
       QMAKE_CXXFLAGS_EXCEPTIONS_ON = /EHa
       QMAKE_CXXFLAGS_STL_ON = /EHa
    }