[Wine] Re: Wine unhandled exception running PocketFMS

Duane Clark junkmail at junkmail.com
Mon Mar 19 00:52:20 CDT 2007

Rob Turk wrote:
> I'm trying to get the PocketFMS flight assistant program to work under Wine. 
> This program is available for free at www.pocketfms.com .
> The installation of PocketFMS works OK with a few 'fixme' warnings, but 
> running the installed program causes an immediate crash. As this program is 
> still in development itself and not designed to run on anything but Windows, 
> I'd like to know if the information below points to a bug in Wine, or a bug 
> in PocketFMS. The host is Slackware 11 with a Linux kernel, and 
> Wine is 0.9.28 compiled from source.
> At the bottom there's information generated with WINEDEBUG=+relay set. It 
> appears something is wrong with a call to gdi32.StretchDIBits() but I'm not 
> enough into Wine debugging to confirm this.

I am not really much of a debugger either, but here is my two cents worth...

> ==============>8===========================
> root at slack11:~# wine "c:\program files\pocketfms\pocketfms.exe"
> wine: Unhandled page fault on read access to 0x0465bf70 at address 
> 0x7e4ec030 (thread 0009), starting debugger...
> Unhandled exception: page fault on read access to 0x0465bf70 in 32-bit code 
> (0x7e4ec030).

So the program crashes on an attempt to read from 0x0465bf70, and the 
relay trace shows that indeed a call was made to StretchDIBits with that 
value for a BITMAPINFO pointer.

 > gdi32.StretchDIBits(00000540,00000000,00000000,000000d0,0000001a,
 > 00000000,00000000,000000d0,0000001a,0465bf70,00af5cf8,00000000,00cc0020)
 > ret=0053eafd

The return value indicates the call was made from within PocketFMS, 
rather than from somewhere in Wine.

 > Module  Address                 Debug info      Name (91 modules)
 > PE      400000-6b8000   Export          pocketfms

I notice that shortly before the crash, the program locks some resources 
near a similar address:

 > 0009:Call kernel32.LockResource(0065bf48) ret=0053e9cf
 > 0009:Ret  kernel32.LockResource() retval=0065bf48 ret=0053e9cf

I find the similarity with the crashing address to be a bit surprising 
to be a coincidence. What it all means though, I have no idea ;) It 
would appear that for some reason, the program is setting a high order 
bit in a pointer address.

More information about the wine-users mailing list