[Bug 48525] Commercial .NET 2.0 app crashes after few days with 'gdi:alloc_gdi_handle out of GDI object handles, expect a crash'

WineHQ Bugzilla wine-bugs at winehq.org
Mon Jan 27 05:08:23 CST 2020


https://bugs.winehq.org/show_bug.cgi?id=48525

Anastasius Focht <focht at gmx.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|0009:err:gdi:alloc_gdi_hand |Commercial .NET 2.0 app
                   |le out of GDI object        |crashes after few days with
                   |handles, expect a crash     |'gdi:alloc_gdi_handle out
                   |                            |of GDI object handles,
                   |                            |expect a crash'
                 CC|                            |focht at gmx.net
           Keywords|                            |dotnet

--- Comment #1 from Anastasius Focht <focht at gmx.net> ---
Hello Robert,

--- quote ---
my +seh log file is full of 

0048:trace:seh:__regs_RtlUnwind handler at 0x7bc82da0 returned 1
0048:trace:seh:raise_exception code=40010006 flags=0 addr=0x7b43e223
ip=7b43e223 tid=0048
0048:trace:seh:raise_exception  info[0]=00000041
0048:trace:seh:raise_exception  info[1]=0d061dd8
0048:trace:seh:raise_exception  eax=7b42a5c1 ebx=00000004 ecx=0733ef20
edx=0733efd0 esi=00000041 edi=40010006
0048:trace:seh:raise_exception  ebp=0733ef78 esp=0733eef4 cs=300023 ds=002b 
--- quote ---

these exceptions are benign. The app uses 'OutputDebugString' API which raises
exception 'DBG_PRINTEXCEPTION_C' = 0x40010006 by design (to be seen by
debuggers/monitor tools).

You could add '+debugstr' to 'WINEDEBUG' and see the actual message.

In general try to run with more recent Wine version, preferably Wine 5.0
release. Are you really sure you don't have a handle leak as well on Windows?

Maybe this helps (on Windows):

https://codingsight.com/gdi-leak-handling/

In general handle leaks can also be a side effect of another bug, where the
resource cleanup/freeing path is not executed.

Since this is a .NET application make sure you actually call 'Dispose' on all
objects that implement 'IDisposable'. Assigning new object instance each time
won't free the underlying OS resources (GDI objects). This is a common mistake
in .NET development.
If you interface with unmanaged code (using DllImport) you need to pay
attention to proper OS resource usage as well.

Regards

-- 
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.



More information about the wine-bugs mailing list