[Bug 22815] Alt.binz 0.28.5 gives access violation and fails to load settings at default 96 dpi setting (needs at least 101 dpi)

wine-bugs at winehq.org wine-bugs at winehq.org
Tue Jan 17 17:23:21 CST 2012


Anastasius Focht <focht at gmx.net> changed:

           What    |Removed                     |Added
           Keywords|                            |download
                URL|                            |http://proxy.nsanedown.com/
                   |                            |proxy.php?file=altbinz0285.
                   |                            |zip
                 CC|                            |focht at gmx.net
            Summary|Alt.binz 0.28.5 gives       |Alt.binz 0.28.5 gives
                   |access violation and fails  |access violation and fails
                   |to load settings.           |to load settings at default
                   |                            |96 dpi setting (needs at
                   |                            |least 101 dpi)

--- Comment #15 from Anastasius Focht <focht at gmx.net> 2012-01-17 17:23:21 CST ---

confirming, still present.

--- snip ---
0024:Ret  gdi32.CreateDIBSection() retval=000096a4 ret=0051cbac
0024:Call gdi32.CreateCompatibleDC(00000000) ret=0051cbd8
0024:Ret  gdi32.CreateCompatibleDC() retval=000096a8 ret=0051cbd8
0024:Call gdi32.SelectObject(000096a8,000096a4) ret=0051cc35
0024:Ret  gdi32.SelectObject() retval=0000006c ret=0051cc35
0024:trace:seh:raise_exception code=c0000005 flags=0 addr=0x519d0f ip=00519d0f
0024:trace:seh:raise_exception  info[0]=00000001
0024:trace:seh:raise_exception  info[1]=02732000
0024:trace:seh:raise_exception  eax=ff9ebef5 ebx=009ecc40 ecx=00000034
edx=00000062 esi=009f3284 edi=02732000
0024:trace:seh:raise_exception  ebp=00f5be9e esp=0032fadc cs=0023 ds=002b
es=002b fs=0063 gs=006b flags=00210202
0024:trace:seh:call_stack_handlers calling handler at 0x619a60 code=c0000005
0024:trace:seh:call_stack_handlers handler at 0x619a60 returned 1
0024:trace:seh:call_stack_handlers calling handler at 0x61dbdf code=c0000005
0024:trace:seh:call_stack_handlers handler at 0x61dbdf returned 1
0024:trace:seh:call_stack_handlers calling handler at 0x469085 code=c0000005
0024:Call user32.MessageBoxA(000100a0,01c3cfb4 "Access violation at address
00519D0F in module 'altbinz.exe'. Write of address 02732000.",009d2af8
"Alt.Binz 0.28.5",00000010) ret=004707b3
--- snip ---

>From another run using debugger:

32bpp BI_RGB DIB section, top-down (negative height)

--- snip ---
0033FA84  /00000000  ; |hDC = NULL
0033FA88  |009ECE24  ; |pBitmapInfo ! 009ECE24 -> BITMAPINFO {Size=40.,
Width=100., Height=-20., Planes=1, BitCount=32., Compression=BI_RGB,
SizeImage=0, XPelsPerMeter=0, YPelsPerMeter=0, ColorsUsed=0, ColorsImportant=0}
0033FA8C  |00000000  ; |Usage = DIB_RGB_COLORS
0033FA90  |009ECE50  ; |ppBits = 009ECE50 -> NULL
0033FA94  |00000000  ; |hSection = NULL
0033FA98  |00000000  ; \Offset = 0
--- snip ---

*ppBits -> 02720000

100*20*4 -> 8000 (8K rounded -> 0x2000)

Memory view:

--- snip ---
026E0000  00001000  unrar             PE header    Img  R        RWE Copy
026E1000  00023000  unrar  .text      Code         Img  R E      RWE Copy
02704000  0000E000  unrar  .data      Data         Img  RW  Copy>RWE Copy
02712000  00001000  unrar  .tls                    Img  RW  Copy>RWE Copy
02713000  00001000  unrar  .idata     Imports      Img  R        RWE Copy
02714000  00001000  unrar  .edata     Exports      Img  R        RWE Copy
02715000  00001000  unrar  .rsrc      Resources    Img  R        RWE Copy
02716000  00002000  unrar  .reloc     Relocations  Img  R        RWE Copy
02720000  00002000                                 Priv RW       RW
02820000  00001000                                 Priv RW       RW
02830000  00001000                                 Priv RW       RW
--- snip ---

You can verify the reported font height vs. DIB allocation size by changing
default 96 dpi to larger values.
At 101 dpi the app stops crashing at startup and works fine.

The location where the previous crash happened now looks like this:

--- snip ---
0024:Ret  gdi32.CreateDIBSection() retval=0000a288 ret=0051cbac
0024:Call gdi32.CreateCompatibleDC(00000000) ret=0051cbd8
0024:Ret  gdi32.CreateCompatibleDC() retval=0000a28c ret=0051cbd8
0024:Call gdi32.SelectObject(0000a28c,0000a288) ret=0051cc35
0024:Ret  gdi32.SelectObject() retval=0000006c ret=0051cc35
0024:Call gdi32.SelectObject(0000a28c,000079c0) ret=0051e87f
0024:Ret  gdi32.SelectObject() retval=0000007c ret=0051e87f
0024:Call gdi32.SetTextColor(0000a28c,00000000) ret=0051e897
0024:Ret  gdi32.SetTextColor() retval=00000000 ret=0051e897
0024:Call gdi32.SetBkMode(0000a28c,00000001) ret=0051e8a5
0024:Ret  gdi32.SetBkMode() retval=00000002 ret=0051e8a5
0024:Call user32.DrawTextA(0000a28c,01c5eca0 "0.00
MB",00000007,0032fac8,00008025) ret=0051e965
0024:Ret  user32.DrawTextA() retval=00000010 ret=0051e965
0024:Call comctl32.InitCommonControlsEx(0032f984) ret=004311e5
0024:Ret  comctl32.InitCommonControlsEx() retval=00000001 ret=004311e5
0024:Call user32.LoadCursorA(00000000,00007f00) ret=00452da2
0024:Ret  user32.LoadCursorA() retval=0002002c ret=00452da2
0024:Call user32.GetClassInfoA(00400000,0032fa34 "TMyStatusbar",0032f9c0)
0024:Ret  user32.GetClassInfoA() retval=0000c06e ret=00452ec5
0024:Call user32.CreateWindowExA(00010000,0032fa34 "TMyStatusbar",009925dc
0024:trace:win:WIN_CreateWindowEx "" L"TMyStatusbar" ex=00010000 style=46000100
0,549 792x24 parent=0x100b0 menu=(nil) inst=0x400000 params=(nil)
0024:trace:win:dump_window_styles style: WS_CHILD WS_CLIPSIBLINGS
0024:trace:win:dump_window_styles exstyle: WS_EX_CONTROLPARENT
0024:trace:win:WIN_SetWindowLong 0x102a2 -12 0 W
0024:Call hook proc 0x57d724 (id=WH_CBT,code=3,wp=000102a2,lp=0032f538)
0024:Call user32.CallNextHookEx(000100be,00000003,000102a2,0032ef78)
0024:Ret  user32.CallNextHookEx() retval=00000000 ret=0057d7d1
0024:Ret  hook proc 0x57d724 (id=WH_CBT,code=3,wp=000102a2,lp=0032f538)
0024:trace:win:GetWindowRect hwnd 0x102a2 (64,630)-(856,654)
0024:trace:win:invalidate_dce 0x102a2 scope hwnd = 0x100b0 (64,630)-(856,654)
0024:Call gdi32.SelectObject(0000a28c,0000007c) ret=0051e847
0024:Ret  gdi32.SelectObject() retval=000079c0 ret=0051e847
0024:Call gdi32.DeleteDC(0000a28c) ret=0051cb3b
0024:Ret  gdi32.DeleteDC() retval=00000001 ret=0051cb3b
0024:Call gdi32.DeleteObject(0000a288) ret=0051cb56
0024:Ret  gdi32.DeleteObject() retval=00000001 ret=0051cb56 
--- snip ---

That string "0.00 MB" ought to be drawn in a status bar strip.
If you place a breakpoint in gdi32.CreateDIBSection() entry you can see the
regions painted individually (make sure you don't overlap the client area with

At 101 dpi the DIB height is (-)24 pix.
Maybe there is some minimum height expected (app bug) which worked previously
because of larger reported font height.
It would be interesting to know the height of that status bar strip in Windows
(at default 96 dpi).

$ sha1sum altbinz0285.zip 
7fa3bb99db1bca0b0ee3e0c00e4f3a016ac14723  altbinz0285.zip

$ wine --version


Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
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