>When trying to run a program I get these messages: > >err:local:LOCAL_GetBlock not enough space in GDI heap 10c7 for 116 bytes >trace:ole:OLEFontImpl_get_hFont Returning (nil) >wine: Unhandled exception (thread 0009), starting debugger... > >I had a look at this LOCAL_GetBlock function. There is already code >with some FIXME comments, but it's all #ifdef 0'd out. So that means >it's not tested or not even supposed to work. Is there something else >I could do to increase my GDI heap?
I think that wouldn't help much. I made more traces to find this: trace:font:DumpGdiFontList ---------- gdiFont Cache ---------- trace:gdi:GetObjectW 0xd82 92 0x408bf718 trace:gdi:GDI_GetObjPtr (0xd82): enter 2 trace:gdi:GDI_ReleaseObj (0xd82): leave 2 trace:font:DumpGdiFontList gdiFont=0x40383250 hfont=0xd82 (L"MS Sans Serif") trace:gdi:GetObjectW 0xa6 92 0x408bf718 trace:gdi:GDI_GetObjPtr (0xa6): enter 2 trace:gdi:GDI_ReleaseObj (0xa6): leave 2 trace:font:DumpGdiFontList gdiFont=0x40378f30 hfont=0xa6 (L"System") Looks good, two fonts, but then later: trace:font:DumpGdiFontList ---------- gdiFont Cache ---------- trace:gdi:GetObjectW 0x14c6 92 0x408bf718 trace:gdi:GDI_GetObjPtr (0x14c6): enter 2 trace:gdi:GDI_ReleaseObj (0x14c6): leave 2 trace:font:DumpGdiFontList gdiFont=0x40385938 hfont=0x14c6 (L"MS Sans Serif") trace:gdi:GetObjectW 0xd82 92 0x408bf718 trace:gdi:GDI_GetObjPtr (0xd82): enter 2 trace:gdi:GDI_ReleaseObj (0xd82): leave 2 trace:font:DumpGdiFontList gdiFont=0x40383250 hfont=0xd82 (L"MS Sans Serif") trace:gdi:GetObjectW 0xa6 92 0x408bf718 trace:gdi:GDI_GetObjPtr (0xa6): enter 2 trace:gdi:GDI_ReleaseObj (0xa6): leave 2 trace:font:DumpGdiFontList gdiFont=0x40378f30 hfont=0xa6 (L"System") Already two times MS Sans Serif... trace:font:DumpGdiFontList ---------- gdiFont Cache ---------- trace:gdi:GetObjectW 0x23d6 92 0x408bf70c trace:gdi:GDI_GetObjPtr (0x23d6): enter 2 trace:gdi:GDI_ReleaseObj (0x23d6): leave 2 trace:font:DumpGdiFontList gdiFont=0x403b06f8 hfont=0x23d6 (L"MS Sans Serif") ... all in all 32 fonts MS Sans Serif. ... trace:gdi:GetObjectW 0xa6 92 0x408bf70c trace:gdi:GDI_GetObjPtr (0xa6): enter 2 trace:gdi:GDI_ReleaseObj (0xa6): leave 2 trace:font:DumpGdiFontList gdiFont=0x40378f30 hfont=0xa6 (L"System") trace:font:DumpGdiFontList ---------- gdiFont Cache ---------- trace:gdi:GetObjectW 0x2dfe 92 0x408bf6e8 trace:gdi:GDI_GetObjPtr (0x2dfe): enter 2 trace:gdi:GDI_ReleaseObj (0x2dfe): leave 2 trace:font:DumpGdiFontList gdiFont=0x403dabf8 hfont=0x2dfe (L"MS Sans Serif") ... 32 Fonts MS Sans Serif ... trace:gdi:GetObjectW 0x23e6 92 0x408bf6e8 trace:gdi:GDI_GetObjPtr (0x23e6): enter 2 trace:gdi:GDI_ReleaseObj (0x23e6): leave 2 trace:font:DumpGdiFontList gdiFont=0x403a3b80 hfont=0x23e6 (L"Arial") trace:gdi:GetObjectW 0x23d6 92 0x408bf6e8 trace:gdi:GDI_GetObjPtr (0x23d6): enter 2 trace:gdi:GDI_ReleaseObj (0x23d6): leave 2 trace:font:DumpGdiFontList gdiFont=0x403b06f8 hfont=0x23d6 (L"MS Sans Serif") ... another 32 Fonts MS Sans Serif ... trace:gdi:GetObjectW 0xa6 92 0x408bf6e8 trace:gdi:GDI_GetObjPtr (0xa6): enter 2 trace:gdi:GDI_ReleaseObj (0xa6): leave 2 trace:font:DumpGdiFontList gdiFont=0x40378f30 hfont=0xa6 (L"System") Or some time much later even this: trace:font:DumpGdiFontList ---------- gdiFont Cache ---------- trace:gdi:GetObjectW 0xf48e 92 0x408bf6e8 trace:gdi:GDI_GetObjPtr (0xf48e): enter 2 trace:gdi:GDI_ReleaseObj (0xf48e): leave 2 trace:font:DumpGdiFontList gdiFont=0x47d7c160 hfont=0xf48e (L"MS Sans Serif") ... 180 Fonts MS Sans Serif ... trace:gdi:GetObjectW 0x9a82 92 0x408bf6e8 trace:gdi:GDI_GetObjPtr (0x9a82): enter 2 trace:gdi:GDI_ReleaseObj (0x9a82): leave 2 trace:font:DumpGdiFontList gdiFont=0x4400be90 hfont=0x9a82 (L"Courier") trace:gdi:GetObjectW 0x9a7a 92 0x408bf6e8 trace:gdi:GDI_GetObjPtr (0x9a7a): enter 2 trace:gdi:GDI_ReleaseObj (0x9a7a): leave 2 trace:font:DumpGdiFontList gdiFont=0x4400a678 hfont=0x9a7a (L"MS Sans Serif") ... another 208 Fonts MS Sans Serif ... trace:gdi:GetObjectW 0x23e6 92 0x408bf6e8 trace:gdi:GDI_GetObjPtr (0x23e6): enter 2 trace:gdi:GDI_ReleaseObj (0x23e6): leave 2 trace:font:DumpGdiFontList gdiFont=0x403a3b80 hfont=0x23e6 (L"Arial") trace:gdi:GetObjectW 0x23d6 92 0x408bf6e8 trace:gdi:GDI_GetObjPtr (0x23d6): enter 2 trace:gdi:GDI_ReleaseObj (0x23d6): leave 2 trace:font:DumpGdiFontList gdiFont=0x403b06f8 hfont=0x23d6 (L"MS Sans Serif") ... another 32 Fonts MS Sans Serif ... trace:gdi:GetObjectW 0xa6 92 0x408bf6e8 trace:gdi:GDI_GetObjPtr (0xa6): enter 2 trace:gdi:GDI_ReleaseObj (0xa6): leave 2 trace:font:DumpGdiFontList gdiFont=0x40378f30 hfont=0xa6 (L"System") Now is this an error in my application (VB6 with lots of controls and ocx's) or one in wine? Does my app really create so many fonts or should each only appear once in this list because they're all the same? They do have different handles/addresses but that could be wine too. Of course it works on Windows but that could just be pure luck :) Is there some way to tell on Windows if it really uses so much GDI heap? Being a VB app it's not that easy to debug low-level. Thanks bye Fabi