Graphics
Intel® graphics drivers and software, compatibility, troubleshooting, performance, and optimization
21282 Discussions

igdumdim64.dll shouldn't call SetUnhandledExceptionFilter()

bvg
Novice
3,012 Views

Hi Intel developers,

 

After hours of investigations, I've realized that the reason why my software, which is using Google breakpad, is no more reporting crash information seems to be due to the "igdumdim64.dll" DLL (version 30.0.101.1338), coming from the installation of the Intel HD Graphics drivers, that calls the system function SetUnhandledExceptionFilter().

 

Calling this function results in the handling function installed by breakpad not being registered as an exception handler anymore, and therefore prevents my software from being able to generate crash reports.

 

It is generally admitted that DLLs shouldn't call SetUnhandledExceptionFilter() for this exact reason: it would interfere with the parent process functionalities.

 

Could it be possible to remove call(s) to this function from this DLL and maybe instead use  __try/ __except statements ?

9 Replies
Jean_Intel
Employee
2,988 Views

Hello bvg,

 

Thank you for posting on the Intel️® communities.

 

Since you are developing your own software, we would recommend you create an account to submit your inquiry in our Intel®️ Developer Zone, as the document you refer to comes from this website. So, you receive further troubleshooting support and get access to documentation. 

 

Intel®️ Developer Zone - Contact Page 

https://software.intel.com/en-us/support

 

Best regards,

Jean O. 

Intel Customer Support Technician


0 Kudos
bvg
Novice
2,969 Views

Hello Jean,

 

Thank you for providing me with a link to the Developer Zone, but I'm not sure about where I should post my message.

 

I'm not looking for help about my software, but wanted to report what I consider a bug in the Intel HD Graphics drivers code which is impacting my software.

There are similar posts on this forum about issues with those drivers (see for instance https://community.intel.com/t5/Graphics/igd10iumd64-dll-may-crash-or-freeze-for-D2D-render/m-p/1341957), so I thought it would be the proper place.

 

Maybe I just need to tag my post with a "GPU driver" label ?

0 Kudos
Jean_Intel
Employee
2,953 Views

Hello bvg

 

We appreciate your response.

 

We will do further research on this matter and post the response on this thread once available.

 

Best regards,

Jean O.

Intel Customer Support Technician

 

0 Kudos
bvg
Novice
2,935 Views

Hi,

 

Thank you very much for looking into this issue, since I suspect it might also affect other softwares that rely on the SetUnhandledExceptionFilter() function to report application crashes.

 

If it could be of any help, here is an excerpt of the call stack of a test program, where I modified breakpad's code to put a hook on "kernel32.dll" so a RedirectedSetUnhandledExceptionFilter() function is called instead of the system SetUnhandledExceptionFilter() function, and a minidump is written:

 

Thread 0 (crashed)
 0  test.exe!google_breakpad::ExceptionHandler::WriteMinidump() [exception_handler.cc : 774 + 0x0]
    rax = 0x000000ed917da6d0   rdx = 0x0000000000000010
    rcx = 0x000000ed917da6d0   rbx = 0x0000022c633e61e0
    rsi = 0x0000000000000000   rdi = 0x0000022c633e61e0
    rbp = 0x000000ed917dac99   rsp = 0x000000ed917da5f0
     r8 = 0x00000000000000c0    r9 = 0x00000000000000c0
    r10 = 0x00007ffe60f90000   r11 = 0x00007ffe60f91b4b
    r12 = 0x0000000000000000   r13 = 0x0000000080070057
    r14 = 0x000000ed917dad88   r15 = 0x00007ffe6a5e2400
    rip = 0x00007ff626957d55
    Found by: given as instruction pointer in context
 1  test.exe!google_breakpad::ExceptionHandler::RedirectedSetUnhandledExceptionFilter(long ) [exception_handler.cc : 1112 + 0x8]
    rbx = 0x0000022c633e61e0   rbp = 0x000000ed917dac99
    rsp = 0x000000ed917dabc0   r12 = 0x0000000000000000
    r13 = 0x0000000080070057   r14 = 0x000000ed917dad88
    r15 = 0x00007ffe6a5e2400   rip = 0x00007ff626957b1e
    Found by: call frame info
 2  igdumdim64.dll + 0xadfa
    rbx = 0x0000022c633e61e0   rbp = 0x000000ed917dac99
    rsp = 0x000000ed917dabf0   r12 = 0x0000000000000000
    r13 = 0x0000000080070057   r14 = 0x000000ed917dad88
    r15 = 0x00007ffe6a5e2400   rip = 0x00007ffe6a4cadfa
    Found by: call frame info
 3  igdumdim64.dll + 0x122400
    rbp = 0x000000ed917dac99   rsp = 0x000000ed917dac18
    rip = 0x00007ffe6a5e2400
    Found by: stack scanning
 4  0x7ffe6a4c0000
    rbp = 0x000000ed917dac99   rsp = 0x000000ed917dac60
    rip = 0x00007ffe6a4c0000
    Found by: stack scanning
 5  d3d9.dll + 0x15c490
    rbp = 0x000000ed917dac99   rsp = 0x000000ed917dac68
    rip = 0x00007ffe0fcec490
    Found by: stack scanning
...
Loaded modules:
... 0x7ffe6a4c0000 - 0x7ffe6a661fff igdumdim64.dll 30.0.101.1338 (WARNING: No symbols, igdumdim64.pdb, 6302DFFCB1024795B7B35EE2880666911)

 

0 Kudos
Jean_Intel
Employee
2,925 Views

Hello bvg,

 

Thanks for your feedback on our graphics drivers. We have shared the information given. We will pass the information on to the corresponding team in charge. Let us know if you have any questions.

 

If you still require assistance, please, refer to the Intel Developer Zone for further support.

 

Best regards,

Jean O.

Intel Customer Support Technician

 

0 Kudos
Jean_Intel
Employee
2,897 Views

Hello bvg,

 

We hope you are doing fine.

 

We have not heard back from you. So we will close this thread. If you need any additional information, submit a new question, as this thread will no longer be monitored.

 

Best regards.

Jean O. 

Intel Customer Support Technician.


0 Kudos
ekalchev
Beginner
2,754 Views

We were investigating the same issue as the original author of this thread. We found that our application crash reporter doesn't work on some machines. We traced the issue to your drivers. You are breaking all 3rd party apps that runs on machines with Inter driver and they can't use Crash Reporting. Please consider removing this code.

0 Kudos
MWolff
Beginner
2,509 Views

Same here, can this please be reopened? Or better yet, fixed in the driver code?

0 Kudos
MWolff
Beginner
2,486 Views

To other developers affected by this: I managed to find a workaround for the Qt application we are working on. The backtrace there was something like this:

> kernel32.dll!SetUnhandledExceptionFilterStub() Unknown
igdumdim64.dll!00007ff95ecfae0a() Unknown
d3d9.dll!CreateDeviceLHDDI() Unknown
d3d9.dll!D3D9CreateDirectDrawObject() Unknown
d3d9.dll!FetchDirectDrawData() Unknown
d3d9.dll!InternalDirectDrawCreate() Unknown
d3d9.dll!CEnum::CEnum() Unknown
d3d9.dll!Direct3DCreate9Impl() Unknown
d3d9.dll!Direct3DCreate9() Unknown
qwindowsd.dll!QDirect3D9Handle::QDirect3D9Handle() Line 108 C++
qwindowsd.dll!GpuDescription::detect() Line 128 C++
qwindowsd.dll!QWindowsWindow::forcedScreenForGLWindow(const QWindow * w) Line 1519 C++
qwindowsd.dll!calcPosition(const QWindow * w, const QSharedPointer<QWindowCreationContext> & context, const QMargins & invMargins) Line 576 C++
qwindowsd.dll!WindowCreationData::create(const QWindow * w, const QWindowsWindowData & data, QString title) Line 800 C++
qwindowsd.dll!QWindowsWindowData::create(const QWindow * w, const QWindowsWindowData & parameters, const QString & title) Line 1557 C++
qwindowsd.dll!QWindowsIntegration::createPlatformWindow(QWindow * window) Line 348 C++
Qt5Guid.dll!QWindowPrivate::create(bool recursive, unsigned __int64 nativeHandle) Line 527 C++
Qt5Guid.dll!QWindow::create() Line 651 C++
Qt5Widgetsd.dll!QWidgetPrivate::create() Line 1316 C++
Qt5Widgetsd.dll!QWidget::create(unsigned __int64 window, bool initializeWindow, bool destroyOldWindow) Line 1182 C++
Qt5Widgetsd.dll!QWidgetPrivate::setVisible(bool visible) Line 8065 C++
Qt5Widgetsd.dll!QWidget::setVisible(bool visible) Line 8044 C++
Qt5Widgetsd.dll!QWidget::show() Line 7670 C++
ex_crashdump.exe!main(int argc, char * * argv) Line 27 C++
[External Code]

By overriding the QApplication::notify (a global event filter could work too), we can get notified about the first PlatformSurface. After handling this, I'm now blindly re-applying the call to SetUnhandledExceptionFilter from breakpad, to ensure its handler is taking precedence over the Intel GPU driver handler. This seems to work in early testing, and we can continue to install the event handler early, minimizing the time frame where no crash reports would be caught by us.

 

Hope that helps!

 

But one way or another, the Intel GPU driver code really needs to be fixed, it's clearly bad/wrong to call this windows API in such a central dll, totally breaking crash reporting tools!

0 Kudos
Reply