[Wine] Page fault with MFC42.DLL
adamvietnam
wineforum-user at winehq.org
Thu Mar 22 12:36:23 CDT 2012
Hi,
I get a crash when I dynamically link with MFC42.DLL but not when I link with MFC statically
I've created a simple test program to illustrate...
#include "stdafx.h"
#include "afxole.h"
Code:
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
COleDateTime curTime;
curTime=COleDateTime::GetCurrentTime();
CString nowStr;
nowStr=curTime.Format("'%c'"); /* CRASHES HERE */
printf("%s\n",nowStr);
return 0;
}
My setup is as follows:
1. Build environment.
Visual Studio 6 Service Pack 6
2. Run environment
- Fresh Ubuntu 10.10 install (have tested with 10.04 / 11.04 with same results)
- Fresh install of Wine 1.4 (have tested with Wine 1.2.2 with same results)
- used winetricks to install vcrun6sp6 which automatically pulls in sp4 versions of mfc42, msvcirt, msvcp60)
When I run the above program the following output...
wine: Unhandled page fault on read access to 0x7666e3ac at address 0x759258ff (thread 001a), starting debugger...
Unhandled exception: page fault on read access to 0x7666e3ac in 32-bit code (0x759258ff).
Register dump:
CS:0073 SS:007b DS:007b ES:007b FS:0033 GS:003b
EIP:759258ff ESP:0032fb84 EBP:0032fc28 EFLAGS:00210246( R- -- I Z- -P- )
EAX:00320014 EBX:759edff4 ECX:0032fd2c EDX:00000000
ESI:7edff2f5 EDI:759ee35c
Stack dump:
0x0032fb84: 759cab25 0032fd2c 0032fcef 759ee3a0
0x0032fb94: 759cab25 00000000 00000000 7bc46411
0x0032fba4: 0012c830 759cab3f 759cc324 759cab2e
0x0032fbb4: 00000000 7dcd4848 ffffffef 00000005
0x0032fbc4: 00000000 00000000 ffffffff 00000000
0x0032fbd4: ffffffff 00000000 00000019 00000000
Backtrace:
=>0 0x759258ff in libc.so.6 (+0x908ff) (0x0032fc28)
1 0x759254ca in libc.so.6 (+0x904c9) (0x0032fcd4)
2 0x75926d10 __strftime_l+0x2f() in libc.so.6 (0x0032fcf0)
3 0x75924fd6 strftime+0x45() in libc.so.6 (0x0032fd10)
4 0x6820953d MSVCRT_strftime+0x7c() in msvcrt (0x0032fd70)
5 0x5f41ba0d in mfc42 (+0x1ba0c) (0x0032fdc8)
6 0x00401055 in oletest (+0x1054) (0x0032fe90)
7 0x7b853b9c call_process_entry+0xb() in kernel32 (0x0032fea8)
8 0x7b855feb in kernel32 (+0x45fea) (0x0032fee8)
9 0x7bc6ea20 call_thread_func+0xb() in ntdll (0x0032fef8)
10 0x7bc6ebf0 call_thread_entry_point+0x6f() in ntdll (0x0032ffc8)
11 0x7bc4a32a in ntdll (+0x3a329) (0x0032ffe8)
0x759258ff: movl 0x0(%edi,%eax,4),%eax
Modules:
Module Address Debug info Name (48 modules)
PE 400000- 404000 Export oletest
PE 5f400000-5f4f8000 Export mfc42
ELF 68000000-6801e000 Deferred ld-linux.so.2
ELF 6801e000-6815e000 Export libwine.so.1
ELF 6815e000-68178000 Deferred libpthread.so.0
ELF 68178000-6817c000 Deferred libdl.so.2
ELF 6817c000-681a2000 Deferred libm.so.6
ELF 681a2000-681ad000 Deferred libnss_nis.so.2
ELF 681ad000-681b9000 Deferred libnss_files.so.2
ELF 681b9000-68239000 Export msvcrt<elf>
\-PE 681d0000-68239000 \ msvcrt
ELF 68239000-682c4000 Deferred gdi32<elf>
\-PE 68240000-682c4000 \ gdi32
ELF 682c4000-6831e000 Deferred advapi32<elf>
\-PE 682d0000-6831e000 \ advapi32
ELF 6831e000-6844e000 Deferred user32<elf>
\-PE 68330000-6844e000 \ user32
ELF 6844e000-684c5000 Deferred libfreetype.so.6
ELF 684c5000-684da000 Deferred libz.so.1
ELF 684da000-6850a000 Deferred libfontconfig.so.1
ELF 6850a000-68531000 Deferred libexpat.so.1
ELF 68531000-685d3000 Deferred winex11<elf>
\-PE 68540000-685d3000 \ winex11
ELF 685d3000-685dc000 Deferred libsm.so.6
ELF 685dc000-685f5000 Deferred libice.so.6
ELF 685f5000-68605000 Deferred libxext.so.6
ELF 68605000-68722000 Deferred libx11.so.6
ELF 68722000-68727000 Deferred libuuid.so.1
ELF 68727000-68741000 Deferred libxcb.so.1
ELF 68741000-68745000 Deferred libxau.so.6
ELF 68745000-6874b000 Deferred libxdmcp.so.6
ELF 6874b000-6876c000 Deferred imm32<elf>
\-PE 68750000-6876c000 \ imm32
ELF 6876c000-68770000 Deferred libxinerama.so.1
ELF 68770000-68776000 Deferred libxxf86vm.so.1
ELF 68776000-68780000 Deferred libxrender.so.1
ELF 68780000-68788000 Deferred libxrandr.so.2
ELF 68788000-6878c000 Deferred libxcomposite.so.1
ELF 6878c000-68792000 Deferred libxfixes.so.3
ELF 68792000-6879c000 Deferred libxcursor.so.1
ELF 703b9000-703c1000 Deferred libnss_compat.so.2
ELF 75895000-759f2000 Export libc.so.6
ELF 79962000-79979000 Deferred libnsl.so.1
ELF 7b800000-7b97b000 Export kernel32<elf>
\-PE 7b810000-7b97b000 \ kernel32
ELF 7bc00000-7bcb7000 Export ntdll<elf>
\-PE 7bc10000-7bcb7000 \ ntdll
ELF 7bf00000-7bf04000 Deferred <wine-loader>
Threads:
process tid prio (all id:s are in hex)
0000000e services.exe
00000015 0
00000014 0
00000010 0
0000000f 0
00000011 winedevice.exe
00000016 0
00000013 0
00000012 0
00000019 (D) Z:\home\adminif\revsetup\ole\oletest.exe
0000001a 0 <==
0000001b explorer.exe
0000001c 0
Backtrace:
=>0 0x759258ff in libc.so.6 (+0x908ff) (0x0032fc28)
1 0x759254ca in libc.so.6 (+0x904c9) (0x0032fcd4)
2 0x75926d10 __strftime_l+0x2f() in libc.so.6 (0x0032fcf0)
3 0x75924fd6 strftime+0x45() in libc.so.6 (0x0032fd10)
4 0x6820953d MSVCRT_strftime+0x7c() in msvcrt (0x0032fd70)
5 0x5f41ba0d in mfc42 (+0x1ba0c) (0x0032fdc8)
6 0x00401055 in oletest (+0x1054) (0x0032fe90)
7 0x7b853b9c call_process_entry+0xb() in kernel32 (0x0032fea8)
8 0x7b855feb in kernel32 (+0x45fea) (0x0032fee8)
9 0x7bc6ea20 call_thread_func+0xb() in ntdll (0x0032fef8)
10 0x7bc6ebf0 call_thread_entry_point+0x6f() in ntdll (0x0032ffc8)
11 0x7bc4a32a in ntdll (+0x3a329) (0x0032ffe8)
If I rewrite the test program to call strftime rather than through MFC it works fine.
Does anybody have any suggestions of what I can try next to debug it?
Thanks
Adam
More information about the wine-users
mailing list