[Bug 28273] Unhandled page fault while installing some 64-bit IE7/IE8 DLLs

wine-bugs at winehq.org wine-bugs at winehq.org
Sun Apr 22 06:18:06 CDT 2012


http://bugs.winehq.org/show_bug.cgi?id=28273

--- Comment #6 from Anastasius Focht <focht at gmx.net> 2012-04-22 06:18:06 CDT ---
Hello,

--- snip ---
0028:Ret  KERNEL32.LoadLibraryExA() retval=1a400000 ret=7fbeb9ad6d8c
0028:Call KERNEL32.GetProcAddress(1a400000,7fbeb9ad7064 "DllInstall")
ret=7fbeb9ad6d9f
0028:Ret  KERNEL32.GetProcAddress() retval=1a451c50 ret=7fbeb9ad6d9f
0028:Call KERNEL32.CompareStringW(0000007f,00001001,00000001,ffffffff,1a4f6aa0
L"HKCU",ffffffff) ret=1a4082e7
0028:trace:seh:raise_exception code=c0000005 flags=0 addr=0x7fbeba2b51e3
ip=7fbeba2b51e3 tid=0028
0028:trace:seh:raise_exception  info[0]=0000000000000000
0028:trace:seh:raise_exception  info[1]=0000000000000001
0028:trace:seh:raise_exception  rax=00007fbeba2b4fd0 rbx=0000000000000001
rcx=000000000000007f rdx=0000000000001001
0028:trace:seh:raise_exception  rsi=000000000022f580 rdi=000000000022f3c0
rbp=0000000000001001 rsp=000000000022f2b0
0028:trace:seh:raise_exception   r8=00000000ffffffff  r9=0000000000000000
r10=00000000000011f3 r11=0000000000000246
0028:trace:seh:raise_exception  r12=000000001a4f6aa0 r13=0000000000014af0
r14=0000000000000000 r15=000000000022f578
--- snip ---

The str1 argument to CompareStringW() looks suspicious (0x1, like a bool).
It should be the stack address of "command_line" passed to DllInstall().

Unfortunately you have to go through a debugging session ...
First start regsvr32 in 64-bit mode with a debugger:

--- snip ---
$ WINEDLLOVERRIDES=urlmon=n wine64 winedbg regsvr32 /i urlmon.dll
WineDbg starting on pid 0023
0x00007fcb866b5f59 DbgBreakPoint+0x1 in ntdll: ret    
--- snip ---

Set a breakpoint to "InstallDll" and "continue":

--- snip ---
Wine-dbg>b InstallDll
Breakpoint 1 at 0x00007fcb7fde9aa5 InstallDll
[/home/focht/projects/wine/wine-git/programs/regsvr32/regsvr32.c:161] in
regsvr32

Wine-dbg>c
--- snip ---

It will stop at breakpoint:

--- snip ---
Stopped on breakpoint 1 at 0x00007fcb7fde9aa5 InstallDll
[/home/focht/projects/wine/wine-git/programs/regsvr32/regsvr32.c:161] in
regsvr32
InstallDll () at
/home/focht/projects/wine/wine-git/programs/regsvr32/regsvr32.c:161
161    {
--- snip ---

Source step over using "n" (next) 4 times until you see line 170: hr =
pfInstall(install, command_line);

--- snip ---
Wine-dbg>n
164        HMODULE DllHandle = NULL;
Wine-dbg>n
166        pfInstall = LoadProc(strDll, "DllInstall", &DllHandle);
Wine-dbg>n
...
fixme:thread:ReleaseSRWLockShared (0x5dec0298): stub
167        if (!pfInstall)
Wine-dbg>n
170        hr = pfInstall(install, command_line);
--- snip ---

Say "info locals":

--- snip ---
Wine-dbg>info locals
0x00007f0e3f9aaaec InstallDll+0x47: (0023fb10)
    BOOL install=0x1 (parameterRBP)
    char* strDll="urlmon.dll" (parameterRBP)
    WCHAR* command_line="" (parameterRBP)
    HRESULT hr=0 (localRBP)
    DLLINSTALL pfInstall=0x1a451c50 (localRBP)
    HMODULE DllHandle=0x1a400000 (localRBP)
--- snip ---

Say "bt" (backtrace):

--- snip ---
Wine-dbg>bt
Backtrace:
=>0 0x00007f0e3f9aaaec InstallDll+0x47(install=0x1, strDll="urlmon.dll",
command_line="")
[/home/focht/projects/wine/wine-git/programs/regsvr32/regsvr32.c:170] in
regsvr32 (0x000000000023fb10)
  1 0x00007f0e3f9aaff4 main+0x453(argc=0x3, argv=0x10640)
[/home/focht/projects/wine/wine-git/programs/regsvr32/regsvr32.c:278] in
regsvr32 (0x000000000023fbd0)
  2 0x00007f0e3f9ab0e9 __wine_spec_exe_entry+0xa0(peb=0x7fffffbef000)
[/home/focht/projects/wine/wine-git/dlls/winecrt0/exe_entry.c:36] in regsvr32
(0x000000000023fcc0)
  3 0x000000007b878685 call_process_entry+0x1c(peb=0x7fffffbef000,
entry=0x7f0e3f9ab048)
[/home/focht/projects/wine/wine-git/dlls/kernel32/process.c:1052] in kernel32
(0x000000000023fd00)
  4 0x000000007b878837 start_process+0x1af(peb=0x7fffffbef000)
[/home/focht/projects/wine/wine-git/dlls/kernel32/process.c:1083] in kernel32
(0x000000000023fe20)
...
--- snip ---

Now instruction single step 5 times using "si" until you see "calll *%ecx"

--- snip ---
Wine-dbg>si
0x00007f7397ebaaf0 InstallDll+0x4b
[/home/focht/projects/wine/wine-git/programs/regsvr32/regsvr32.c:170] in
regsvr32: movl    0xffffffffffffffdc(%rbp),%eax
170        hr = pfInstall(install, command_line);
Wine-dbg>si
0x00007f7397ebaaf3 InstallDll+0x4e
[/home/focht/projects/wine/wine-git/programs/regsvr32/regsvr32.c:170] in
regsvr32: movq    0xfffffffffffffff8(%rbp),%rcx
170        hr = pfInstall(install, command_line);
Wine-dbg>si
0x00007f7397ebaaf7 InstallDll+0x52
[/home/focht/projects/wine/wine-git/programs/regsvr32/regsvr32.c:170] in
regsvr32: movq    %rdx,%rsi
170        hr = pfInstall(install, command_line);
Wine-dbg>si
0x00007f7397ebaafa InstallDll+0x55
[/home/focht/projects/wine/wine-git/programs/regsvr32/regsvr32.c:170] in
regsvr32: movl    %eax,%edi
170        hr = pfInstall(install, command_line);
Wine-dbg>si
0x00007f7397ebaafc InstallDll+0x57
[/home/focht/projects/wine/wine-git/programs/regsvr32/regsvr32.c:170] in
regsvr32: calll    *%ecx
170        hr = pfInstall(install, command_line);
--- snip ---

Dump the register context at this point using "info reg":

--- snip ---
Wine-dbg>info reg
Register dump:
 rip:00007f7397ebaafc rsp:000000000023fab0 rbp:000000000023fb10 eflags:00000306
(   - --  IT  - -P- )
 rax:0000000000000001 rbx:00007fffffbe8000 rcx:000000001a451c50
rdx:000000000023fb70
 rsi:000000000023fb70 rdi:0000000000000001  r8:0000000000010710 
r9:0000000000000007 r10:000000399ab2eaa0
 r11:000000000023f220 r12:000000007bf00bc0 r13:00007fff70b63ae0
r14:0000000000000000 r15:0000000000000000
--- snip ---

Attach the output of the debugging session.

Regards

-- 
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