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 2.6.19.1 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.
All comments are welcome..
Thanks,
Rob
==============>8==========================root@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).
Register dump:
CS:0073 SS:007b DS:007b ES:007b FS:0033 GS:003b
EIP:7e4ec030 ESP:0034ed74 EBP:0034ed90 EFLAGS:00210297( - 00 RISAP1C)
EAX:7c06d1f8 EBX:7e53655c ECX:0000001a EDX:00000034
ESI:0465bf70 EDI:00000000
Stack dump:
0x0034ed74: 00000000 00000034 00000000 00000000
0x0034ed84: 7c06d1f8 000000d0 0465bf70 0034efb0
0x0034ed94: 7e4e513b 000000d0 0000001a 0465bf70
0x0034eda4: 00000270 7c06d1f8 fffffcc0 0034efb0
0x0034edb4: 7e4e2f4e 7e9ef960 0000ffff 0000005c
0x0034edc4: 7e4f7f1d 0019f8e8 7e9e7c88 fffffcc0
Backtrace:
=>1 0x7e4ec030 convert_888_to_0888_asis+0xc0(width=0x7c06d1f8, height=0x1a,
srcbits=0x465bf70, srclinebytes=0x270, dstbits=0x7c06d1f8,
dstlinebytes=0xfffffcc0)
[/usr/src/wine-0.9.28/dlls/winex11.drv/dib_convert.c:852] in winex11
(0x0034ed90)
2 0x7e4e513b X11DRV_DIB_SetImageBits+0x221b(descr=0x34f008)
[/usr/src/wine-0.9.28/dlls/winex11.drv/dib.c:2543] in winex11 (0x0034efb0)
3 0x7e4e9ea3 X11DRV_SetDIBits+0x1e3(physDev=<register EAX not in topmost
frame>, hbitmap=0x558, startscan=0x0, lines=<register ESI not in topmost
frame>, bits=<register EAX not in topmost frame>, info=0xaf5ce8,
coloruse=<register EDX not in topmost frame>)
[/usr/src/wine-0.9.28/dlls/winex11.drv/dib.c:3931] in winex11 (0x0034f080)
fixme:dbghelp_dwarf:dwarf2_parse_variable Unsupported constant size in
function
4 0x7e9a653f SetDIBits+0x11f(hdc=0x54c, hbitmap=0x558, startscan=0x0,
lines=0x1a, bits=0x465bf70, info=0xaf5ce8, coloruse=0x0)
[/usr/src/wine-0.9.28/dlls/gdi32/dib.c:344] in gdi32 (0x0034f0c0)
5 0x7e9a66e4 StretchDIBits+0x184(hdc=<register EDI not in topmost
frame>,
xDst=0x0, yDst=0x0, widthDst=0xd0, heightDst=0x1a, xSrc=0x0, ySrc=0x0,
widthSrc=0xd0, heightSrc=0x1a, bits=0x465bf70, info=<register ESI not in
topmost frame>, wUsage=0x0, dwRop=0xcc0020)
[/usr/src/wine-0.9.28/dlls/gdi32/dib.c:290] in gdi32 (0x0034f120)
6 0x0053eafd in pocketfms (+0x13eafd) (0x0034f178)
7 0x0054b8cf in pocketfms (+0x14b8cf) (0x0034f1b4)
8 0x00455621 in pocketfms (+0x55621) (0x0034f1ac)
9 0x00af2504 (0x00661428)
10 0x0008001a (0x001a0001)
0x7e4ec030 convert_888_to_0888_asis+0xc0
[/usr/src/wine-0.9.28/dlls/winex11.drv/dib_convert.c:852] in winex11: movl
0x0(%esi),%ecx
852 srcval1=srcpixel[0];
Modules:
Module Address Debug info Name (91 modules)
PE 400000-6b8000 Export pocketfms
PE 10000000-10066000 Deferred zipdll
PE 21300000-21312000 Deferred rapi
PE 22b00000-22b0b000 Deferred ceutil
ELF 7bf00000-7bf03000 Deferred <wine-loader>
ELF 7e081000-7e096000 Deferred midimap<elf>
\-PE 7e090000-7e096000 \ midimap
ELF 7e0bb000-7e0f6000 Deferred wineoss<elf>
\-PE 7e0c0000-7e0f6000 \ wineoss
ELF 7e0f6000-7e22f000 Deferred libcrypto.so.0
ELF 7e22f000-7e26d000 Deferred libssl.so.0
ELF 7e26d000-7e289000 Deferred libcups.so.2
ELF 7e28b000-7e2a3000 Deferred msacm32<elf>
\-PE 7e290000-7e2a3000 \ msacm32
ELF 7e2c3000-7e2f4000 Deferred uxtheme<elf>
\-PE 7e2d0000-7e2f4000 \ uxtheme
ELF 7e2f4000-7e2f9000 Deferred libxfixes.so.3
ELF 7e2f9000-7e302000 Deferred libxcursor.so.1
ELF 7e31c000-7e338000 Deferred imm32<elf>
\-PE 7e320000-7e338000 \ imm32
ELF 7e338000-7e356000 Deferred ximcp.so.2
ELF 7e356000-7e3bd000 Deferred libgl.so.1
ELF 7e3bd000-7e48a000 Deferred libx11.so.6
ELF 7e48a000-7e498000 Deferred libxext.so.6
ELF 7e498000-7e4b0000 Deferred libice.so.6
ELF 7e4b0000-7e4b9000 Deferred libsm.so.6
ELF 7e4b9000-7e53f000 Dwarf winex11<elf>
\-PE 7e4d0000-7e53f000 \ winex11
ELF 7e53f000-7e551000 Deferred libz.so.1
ELF 7e551000-7e5bb000 Deferred libfreetype.so.6
ELF 7e5bd000-7e5c1000 Deferred iso8859-1.so
ELF 7e5c2000-7e5c5000 Deferred xlcdef.so.2
ELF 7e5c5000-7e5c9000 Deferred libxrandr.so.2
ELF 7e5c9000-7e5d2000 Deferred libxrender.so.1
ELF 7e5d2000-7e5d5000 Deferred libxinerama.so.1
ELF 7e5d5000-7e5f4000 Deferred mpr<elf>
\-PE 7e5e0000-7e5f4000 \ mpr
ELF 7e5f4000-7e637000 Deferred wininet<elf>
\-PE 7e600000-7e637000 \ wininet
ELF 7e637000-7e6c8000 Deferred oleaut32<elf>
\-PE 7e650000-7e6c8000 \ oleaut32
ELF 7e6c8000-7e6e9000 Deferred oledlg<elf>
\-PE 7e6d0000-7e6e9000 \ oledlg
ELF 7e6e9000-7e773000 Deferred winmm<elf>
\-PE 7e6f0000-7e773000 \ winmm
ELF 7e773000-7e787000 Deferred msimg32<elf>
\-PE 7e780000-7e787000 \ msimg32
ELF 7e787000-7e7e8000 Deferred msvcrt<elf>
\-PE 7e7a0000-7e7e8000 \ msvcrt
ELF 7e7e8000-7e813000 Deferred ws2_32<elf>
\-PE 7e7f0000-7e813000 \ ws2_32
ELF 7e813000-7e841000 Deferred winspool<elf>
\-PE 7e820000-7e841000 \ winspool
ELF 7e841000-7e8f3000 Deferred comctl32<elf>
\-PE 7e850000-7e8f3000 \ comctl32
ELF 7e8f3000-7e907000 Deferred libresolv.so.2
ELF 7e907000-7e924000 Deferred iphlpapi<elf>
\-PE 7e910000-7e924000 \ iphlpapi
ELF 7e924000-7e975000 Deferred rpcrt4<elf>
\-PE 7e930000-7e975000 \ rpcrt4
ELF 7e975000-7ea00000 Dwarf gdi32<elf>
\-PE 7e990000-7ea00000 \ gdi32
ELF 7ea00000-7eb28000 Deferred user32<elf>
\-PE 7ea20000-7eb28000 \ user32
ELF 7eb28000-7eb69000 Deferred advapi32<elf>
\-PE 7eb30000-7eb69000 \ advapi32
ELF 7eb69000-7ebf8000 Deferred ole32<elf>
\-PE 7eb80000-7ebf8000 \ ole32
ELF 7ebf8000-7ec4c000 Deferred shlwapi<elf>
\-PE 7ec10000-7ec4c000 \ shlwapi
ELF 7ec4c000-7ed35000 Deferred shell32<elf>
\-PE 7ec60000-7ed35000 \ shell32
ELF 7ed35000-7edcf000 Deferred comdlg32<elf>
\-PE 7ed40000-7edcf000 \ comdlg32
ELF 7edfb000-7ef0e000 Deferred kernel32<elf>
\-PE 7ee10000-7ef0e000 \ kernel32
ELF 7ef0e000-7ef19000 Deferred libnss_files.so.2
ELF 7ef19000-7ef23000 Deferred libnss_nis.so.2
ELF 7ef23000-7ef39000 Deferred libnsl.so.1
ELF 7ef39000-7ef43000 Deferred libnss_compat.so.2
ELF 7ef43000-7ef66000 Deferred libm.so.6
ELF 7ef66000-7ef80000 Deferred wsock32<elf>
\-PE 7ef70000-7ef80000 \ wsock32
ELF 7ef80000-7f000000 Deferred ntdll<elf>
\-PE 7ef90000-7f000000 \ ntdll
ELF b7cf0000-b7cf5000 Deferred libxxf86vm.so.1
ELF b7cf6000-b7cfa000 Deferred libdl.so.2
ELF b7cfa000-b7e29000 Deferred libc.so.6
ELF b7e29000-b7e3b000 Deferred libpthread.so.0
ELF b7e56000-b7f67000 Deferred libwine.so.1
ELF b7f67000-b7f7f000 Deferred ld-linux.so.2
Threads:
process tid prio (all id:s are in hex)
0000000a
0000000b 0
00000008 (D) C:\program files\pocketfms\pocketfms.exe
00000009 0 <=
===============>8========== with WINEDEBUG=+relay =============
0009:Ret user32.SetRect() retval=00000001 ret=7e8b4151
0009:Call user32.SetRect(001b59ac,000000e7,00000000,00000108,00000021)
ret=7e8b4151
0009:Ret user32.SetRect() retval=00000001 ret=7e8b4151
0009:Ret window proc 0x7e8bb920
(hwnd=0x10036,msg=WM_USER+31,wp=00000000,lp=00210021) retval=00000001
0009:Ret user32.CallWindowProcA() retval=00000001 ret=0053011e
0009:Call user32.SetWindowLongA(00010036,fffffff0,5400084e) ret=0053f47c
0009:Call window proc 0x532222
(hwnd=0x10036,msg=WM_STYLECHANGING,wp=fffffff0,lp=0034eaa8)
0009:Call kernel32.TlsGetValue(00000007) ret=0054cb70
0009:Ret kernel32.TlsGetValue() retval=001ad120 ret=0054cb70
0009:Call kernel32.TlsGetValue(00000007) ret=0054cb70
0009:Ret kernel32.TlsGetValue() retval=001ad120 ret=0054cb70
0009:Call kernel32.TlsGetValue(00000007) ret=0054cb70
0009:Ret kernel32.TlsGetValue() retval=001ad120 ret=0054cb70
0009:Call
user32.CallWindowProcA(ffff0015,00010036,0000007c,fffffff0,0034eaa8)
ret=0053011e
0009:Call window proc 0x7e8bb920
(hwnd=0x10036,msg=WM_STYLECHANGING,wp=fffffff0,lp=0034eaa8)
0009:Call user32.GetWindowLongW(00010036,00000000) ret=7e8bb943
0009:Ret user32.GetWindowLongW() retval=001b56e8 ret=7e8bb943
0009:Call user32.DefWindowProcW(00010036,0000007c,fffffff0,0034eaa8)
ret=7e8bbf1c
0009:Ret user32.DefWindowProcW() retval=00000000 ret=7e8bbf1c
0009:Ret window proc 0x7e8bb920
(hwnd=0x10036,msg=WM_STYLECHANGING,wp=fffffff0,lp=0034eaa8) retval=00000000
0009:Ret user32.CallWindowProcA() retval=00000000 ret=0053011e
0009:Ret window proc 0x532222
(hwnd=0x10036,msg=WM_STYLECHANGING,wp=fffffff0,lp=0034eaa8) retval=00000000
0009:Call winex11.drv.SetWindowStyle(00010036,5400884e) ret=7eaa8d1a
0009:Ret winex11.drv.SetWindowStyle() retval=00008000 ret=7eaa8d1a
0009:Call window proc 0x532222
(hwnd=0x10036,msg=WM_STYLECHANGED,wp=fffffff0,lp=0034eaa8)
0009:Call kernel32.TlsGetValue(00000007) ret=0054cb70
0009:Ret kernel32.TlsGetValue() retval=001ad120 ret=0054cb70
0009:Call kernel32.TlsGetValue(00000007) ret=0054cb70
0009:Ret kernel32.TlsGetValue() retval=001ad120 ret=0054cb70
0009:Call kernel32.TlsGetValue(00000007) ret=0054cb70
0009:Ret kernel32.TlsGetValue() retval=001ad120 ret=0054cb70
0009:Call
user32.CallWindowProcA(ffff0015,00010036,0000007d,fffffff0,0034eaa8)
ret=0053011e
0009:Call window proc 0x7e8bb920
(hwnd=0x10036,msg=WM_STYLECHANGED,wp=fffffff0,lp=0034eaa8)
0009:Call user32.GetWindowLongW(00010036,00000000) ret=7e8bb943
0009:Ret user32.GetWindowLongW() retval=001b56e8 ret=7e8bb943
0009:Call user32.GetWindowLongW(00010036,00000000) ret=7e8b7bb2
0009:Ret user32.GetWindowLongW() retval=001b56e8 ret=7e8b7bb2
0009:Ret window proc 0x7e8bb920
(hwnd=0x10036,msg=WM_STYLECHANGED,wp=fffffff0,lp=0034eaa8) retval=00000000
0009:Ret user32.CallWindowProcA() retval=00000000 ret=0053011e
0009:Ret window proc 0x532222
(hwnd=0x10036,msg=WM_STYLECHANGED,wp=fffffff0,lp=0034eaa8) retval=00000000
0009:Ret user32.SetWindowLongA() retval=5400884e ret=0053f47c
0009:Ret window proc 0x532222
(hwnd=0x10036,msg=WM_USER+31,wp=00000000,lp=00210021) retval=00000001
0009:Ret user32.SendMessageA() retval=00000001 ret=0054b86d
0009:Call user32.InvalidateRect(00010036,00000000,00000001) ret=0054b87a
0009:Ret user32.InvalidateRect() retval=00000001 ret=0054b87a
0009:Call kernel32.TlsGetValue(00000007) ret=0054cb70
0009:Ret kernel32.TlsGetValue() retval=001ad120 ret=0054cb70
0009:Call kernel32.FindResourceA(00400000,00000105,00000002) ret=0054b8c0
0009:Ret kernel32.FindResourceA() retval=005c4aa0 ret=0054b8c0
0009:Call kernel32.LoadResource(00400000,005c4aa0) ret=0053e9ba
0009:Ret kernel32.LoadResource() retval=0065bf48 ret=0053e9ba
0009:Call kernel32.LockResource(0065bf48) ret=0053e9cf
0009:Ret kernel32.LockResource() retval=0065bf48 ret=0053e9cf
0009:Call ntdll.RtlAllocateHeap(00af0000,00000000,00000068) ret=00518b02
0009:Ret ntdll.RtlAllocateHeap() retval=00af5cf8 ret=00518b02
0009:Call user32.GetDC(00000000) ret=0053eaa0
0009:Call winex11.drv.GetDCEx(00010020,00000000,00000003) ret=7ea8f91e
0009:Ret winex11.drv.GetDCEx() retval=0000035c ret=7ea8f91e
0009:Ret user32.GetDC() retval=0000035c ret=0053eaa0
0009:Call gdi32.CreateCompatibleBitmap(0000035c,000000d0,0000001a)
ret=0053eaac
0009:Ret gdi32.CreateCompatibleBitmap() retval=0000053c ret=0053eaac
0009:Call gdi32.CreateCompatibleDC(0000035c) ret=0053eabc
0009:Ret gdi32.CreateCompatibleDC() retval=00000540 ret=0053eabc
0009:Call gdi32.SelectObject(00000540,0000053c) ret=0053eaca
0009:Ret gdi32.SelectObject() retval=0000006c ret=0053eaca
0009:Call
gdi32.StretchDIBits(00000540,00000000,00000000,000000d0,0000001a,00000000,00000000,000000d0,0000001a,0465bf70,00af5cf8,00000000,00cc0020)
ret=0053eafd
0009:Call kernel32.GetLastError() ret=0051fc72
0009:Ret kernel32.GetLastError() retval=00000000 ret=0051fc72
0009:Call kernel32.TlsGetValue(00000006) ret=0051fc80
0009:Ret kernel32.TlsGetValue() retval=00af00f8 ret=0051fc80
0009:Call kernel32.SetLastError(00000000) ret=0051fcd6
0009:Ret kernel32.SetLastError() retval=00000000 ret=0051fcd6
0009:Call kernel32.GetLastError() ret=0051fc72
0009:Ret kernel32.GetLastError() retval=00000000 ret=0051fc72
0009:Call kernel32.TlsGetValue(00000006) ret=0051fc80
0009:Ret kernel32.TlsGetValue() retval=00af00f8 ret=0051fc80
0009:Call kernel32.SetLastError(00000000) ret=0051fcd6
0009:Ret kernel32.SetLastError() retval=00000000 ret=0051fcd6
0009:Call kernel32.UnhandledExceptionFilter(0034e6b0) ret=00526afd
0009:Call kernel32.IsBadCodePtr(7e7ace30) ret=005290cb
0009:Ret kernel32.IsBadCodePtr() retval=00000000 ret=005290cb
wine: Unhandled page fault on read access to 0x0465bf70 at address
0x7e4ec030 (thread 0009), starting debugger...
0009:Ret kernel32.UnhandledExceptionFilter() retval=00000000 ret=00526afd
Unhandled exception: page fault on read access to 0x0465bf70 in 32-bit code
(0x7e4ec030).
Register dump:
CS:0073 SS:007b DS:007b ES:007b FS:0033 GS:003b
EIP:7e4ec030 ESP:0034eb3c EBP:0034eb58 EFLAGS:00210297( - 00 RISAP1C)
EAX:7c06d1e8 EBX:7e53655c ECX:0000001a EDX:00000034
ESI:0465bf70 EDI:00000000
Stack dump:
0x0034eb3c: 00000000 00000034 00000000 00000000
0x0034eb4c: 7c06d1e8 000000d0 0465bf70 0034ed78
0x0034eb5c: 7e4e513b 000000d0 0000001a 0465bf70
0x0034eb6c: 00000270 7c06d1e8 fffffcc0 0034ed78
0x0034eb7c: 7e4e2f4e 7e9ef960 0000ffff 0000005c
0x0034eb8c: 7e4f7f1d 001b5e50 7e9e7c88 fffffcc0
Backtrace:
=>1 0x7e4ec030 convert_888_to_0888_asis+0xc0(width=0x7c06d1e8, height=0x1a,
srcbits=0x465bf70, srclinebytes=0x270, dstbits=0x7c06d1e8,
dstlinebytes=0xfffffcc0)
[/usr/src/wine-0.9.28/dlls/winex11.drv/dib_convert.c:852] in winex11
(0x0034eb58)
2 0x7e4e513b X11DRV_DIB_SetImageBits+0x221b(descr=0x34edd0)
[/usr/src/wine-0.9.28/dlls/winex11.drv/dib.c:2543] in winex11 (0x0034ed78)
3 0x7e4e9ea3 X11DRV_SetDIBits+0x1e3(physDev=<register EAX not in topmost
frame>, hbitmap=0x558, startscan=0x0, lines=<register ESI not in topmost
frame>, bits=<register EAX not in topmost frame>, info=0xaf5cf8,
coloruse=<register EDX not in topmost frame>)
[/usr/src/wine-0.9.28/dlls/winex11.drv/dib.c:3931] in winex11 (0x0034ee48)
fixme:dbghelp_dwarf:dwarf2_parse_variable Unsupported constant size in
function
4 0x7e9a653f SetDIBits+0x11f(hdc=0x54c, hbitmap=0x558, startscan=0x0,
lines=0x1a, bits=0x465bf70, info=0xaf5cf8, coloruse=0x0)
[/usr/src/wine-0.9.28/dlls/gdi32/dib.c:344] in gdi32 (0x0034ee88)
5 0x7e9a66e4 StretchDIBits+0x184(hdc=<register EDI not in topmost
frame>,
xDst=0x0, yDst=0x0, widthDst=0xd0, heightDst=0x1a, xSrc=0x0, ySrc=0x0,
widthSrc=0xd0, heightSrc=0x1a, bits=0x465bf70, info=<register ESI not in
topmost frame>, wUsage=0x0, dwRop=0xcc0020)
[/usr/src/wine-0.9.28/dlls/gdi32/dib.c:290] in gdi32 (0x0034eee8)
6 0x7efc5410 call_entry_point+0x20() in ntdll (0x0034ef38)
7 0x7efc603d relay_call_from_32+0x1bd(descr=0x7e9eaad0, idx=<register EAX
not in topmost frame>, stack=0x34efbc)
[/usr/src/wine-0.9.28/dlls/ntdll/relay.c:390] in ntdll (0x0034efa8)
8 0x7e995789 in gdi32 (+0x5789) (0x0034f010)
9 0x0054b8cf in pocketfms (+0x14b8cf) (0x0034f04c)
10 0x00455621 in pocketfms (+0x55621) (0x0034f044)
11 0x00af2514 (0x00661428)
12 0x0008001a (0x001a0001)
13 0x780000ee (0x01900000)
14 0x00000000 (0x00000000)
0x7e4ec030 convert_888_to_0888_asis+0xc0
[/usr/src/wine-0.9.28/dlls/winex11.drv/dib_convert.c:852] in winex11: movl
0x0(%esi),%ecx
852 srcval1=srcpixel[0];