[Bug 20326] Call of Duty 4: Installer crashes at the end (Exception EExternalException in module ntdll.dll)

wine-bugs at winehq.org wine-bugs at winehq.org
Fri May 3 15:33:42 CDT 2013


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

Anastasius Focht <focht at gmx.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |RESOLVED
                 CC|                            |focht at gmx.net
         Resolution|                            |DUPLICATE
           Severity|trivial                     |minor

--- Comment #17 from Anastasius Focht <focht at gmx.net> 2013-05-03 15:33:42 CDT ---
Hello folks,

fortunately there is still a "backup" available from some "online archive" so I
looked into the installer...

The first thing has already been mentioned: Microsoft Data Access Components
(MDAC)

You need 'winetricks -q mdac28' in clean WINEPREFIX.

The installer spawns the following process as part of post-installation:

--- snip ---
...
0028:trace:process:create_process_impl starting L"E:\\setup\\rsrc\\cod4.exe" as
Win32 binary (0x400000-0xa12000)
0047:trace:loaddll:load_builtin_dll Loaded L"KERNEL32.dll" at 0x7b810000:
builtin
0047:trace:process:init_current_directory starting in L"E:\\setup\\rsrc\\"
(nil)
0047:trace:process:__wine_kernel_init starting process
name=L"E:\\setup\\rsrc\\cod4.exe" argv[0]=L"E:\\setup\\rsrc\\cod4.exe"
0047:trace:loaddll:load_native_dll Loaded L"E:\\setup\\rsrc\\cod4.exe" at
0x400000: native
0028:trace:process:create_process_impl started process pid 0046 tid 0047 
...
0047:err:ole:CoGetClassObject class {00000507-0000-0010-8000-00aa006d2ea4} not
registered
0047:err:ole:create_server class {00000507-0000-0010-8000-00aa006d2ea4} not
registered
0047:err:ole:CoGetClassObject no class object
{00000507-0000-0010-8000-00aa006d2ea4} could be created for context 0x5
0047:trace:seh:raise_exception code=eedfade flags=1 addr=0x7b83aad3 ip=7b83aad3
tid=0047
0047:trace:seh:raise_exception  info[0]=0057de3f
0047:trace:seh:raise_exception  info[1]=00b40d2c
0047:trace:seh:raise_exception  info[2]=006eb394
0047:trace:seh:raise_exception  info[3]=0033f8f4
0047:trace:seh:raise_exception  info[4]=00000000
0047:trace:seh:raise_exception  info[5]=0033f8c8
0047:trace:seh:raise_exception  info[6]=0033f8bc
0047:trace:seh:raise_exception  eax=7b826891 ebx=7b8b96b0 ecx=0033f8bc
edx=0033f850 esi=0033f8f4 edi=00000000 
--- snip ---

GUID "{00000507-0000-0010-8000-00aa006d2ea4}" followed by Delphi external
exception code "0xeedfade" is something not to be ignored -> MDAC.

Anyway ... the next crashes are related to madCodeHook Delphi library -> bug
15437
Louis was right on track.

The executable is wrapped with UPX and there are typical madCodeHook Delphi
library sequences present after unpacking.

Additional proof via trace log:

--- snip ---
...
0024:Call KERNEL32.CreateFileW(0018f640
L"C:\\windows\\system32\\KERNEL32.dll",80000000,00000001,00000000,00000003,00000000,00000000)
ret=0315fa8a
0024:Ret  KERNEL32.CreateFileW() retval=000000e8 ret=0315fa8a 
...
0024:Call
KERNEL32.CreateFileMappingW(000000e8,00000000,00000002,00000000,00000000,00000000)
ret=0315fae6
0024:Ret  KERNEL32.CreateFileMappingW() retval=000000ec ret=0315fae6
0024:Call KERNEL32.MapViewOfFile(000000ec,00000004,00000000,00000000,00000000)
ret=0315fb0e
0024:Ret  KERNEL32.MapViewOfFile() retval=03280000 ret=0315fb0e
0024:Call KERNEL32.CloseHandle(000000ec) ret=0315fb16
0024:Ret  KERNEL32.CloseHandle() retval=00000001 ret=0315fb16
0024:Call KERNEL32.CloseHandle(000000e8) ret=0315fb1c
0024:Ret  KERNEL32.CloseHandle() retval=00000001 ret=0315fb1c 
...
0024:trace:seh:raise_exception code=c0000005 flags=0 addr=0x315fc5a ip=0315fc5a
tid=0024
0024:trace:seh:raise_exception  info[0]=00000000
0024:trace:seh:raise_exception  info[1]=03329994
0024:trace:seh:raise_exception  eax=03329978 ebx=7b810000 ecx=00000001
edx=000a9978 esi=7b810040 edi=03280000
0024:trace:seh:raise_exception  ebp=03329978 esp=0032f490 cs=0023 ds=002b
es=002b fs=0063 gs=006b flags=00010206
0024:trace:seh:call_stack_handlers calling handler at 0x316b605 code=c0000005
flags=0
0024:trace:seh:call_stack_handlers handler at 0x316b605 returned 1
0024:trace:seh:call_stack_handlers calling handler at 0x3143db8 code=c0000005
flags=0
0024:Call KERNEL32.UnhandledExceptionFilter(0032ef70) ret=03143ddc 
...
--- snip ---

Removing Wine's "kernel32.dll" placeholder:

--- snip ---
0024:Call KERNEL32.CreateFileW(0018f640
L"C:\\windows\\system32\\KERNEL32.dll",80000000,00000001,00000000,00000003,00000000,00000000)
ret=0315fa8a
0024:Ret  KERNEL32.CreateFileW() retval=ffffffff ret=0315fa8a 
...
0024:Call KERNEL32.OpenFileMappingW(000f001f,00000000,03180d98
L"Global\\NamedBuffer, mix, Process $00000023, API $7b810000") ret=031657c1
0024:Ret  KERNEL32.OpenFileMappingW() retval=00000000 ret=031657c1
0024:Call KERNEL32.OpenFileMappingW(000f001f,00000000,03180e5c L"NamedBuffer,
mix, Process $00000023, API $7b810000") ret=031657ea
0024:Ret  KERNEL32.OpenFileMappingW() retval=00000000 ret=031657ea 
...
0024:Call KERNEL32.OpenFileMappingW(00000004,00000000,03180d98
L"Global\\NamedBuffer, mAH, Process $00000023, API $7b810000") ret=031657c1
0024:Ret  KERNEL32.OpenFileMappingW() retval=00000000 ret=031657c1
0024:Call KERNEL32.OpenFileMappingW(00000004,00000000,03180e5c L"NamedBuffer,
mAH, Process $00000023, API $7b810000") ret=031657ea
0024:Ret  KERNEL32.OpenFileMappingW() retval=00000000 ret=031657ea 
...
0024:Call KERNEL32.CreateFileW(0018f640
L"C:\\windows\\system32\\user32.dll",80000000,00000001,00000000,00000003,00000000,00000000)
ret=0063cbae
0024:Ret  KERNEL32.CreateFileW() retval=000000f4 ret=0063cbae 
...
0024:Call
KERNEL32.CreateFileMappingW(000000f4,00000000,00000002,00000000,00000000,00000000)
ret=0063cc0a
0024:Ret  KERNEL32.CreateFileMappingW() retval=000000f8 ret=0063cc0a
0024:Call KERNEL32.MapViewOfFile(000000f8,00000004,00000000,00000000,00000000)
ret=0063cc32
0024:Ret  KERNEL32.MapViewOfFile() retval=03280000 ret=0063cc32
0024:Call KERNEL32.CloseHandle(000000f8) ret=0063cc3a
0024:Ret  KERNEL32.CloseHandle() retval=00000001 ret=0063cc3a
0024:Call KERNEL32.CloseHandle(000000f4) ret=0063cc40
0024:Ret  KERNEL32.CloseHandle() retval=00000001 ret=0063cc40 
...
0024:trace:seh:raise_exception code=c0000005 flags=0 addr=0x63cd7e ip=0063cd7e
tid=0024
0024:trace:seh:raise_exception  info[0]=00000000
0024:trace:seh:raise_exception  info[1]=033709f4
0024:trace:seh:raise_exception  eax=033709d8 ebx=7eab0000 ecx=00000001
edx=000f09d8 esi=7eab0040 edi=03280000
0024:trace:seh:raise_exception  ebp=033709d8 esp=0032f8c4 cs=0023 ds=002b
es=002b fs=0063 gs=006b flags=00210206
0024:trace:seh:call_stack_handlers calling handler at 0x648729 code=c0000005
flags=0 
--- snip ---

Again - even if this has already been said multiple times in this bug (it seems
people still messed this up):

1) clean (new) 32-bit WINEPREFIX
2) 'bash winetricks -q mdac28'
3) rm -f $WINEPREFIX/drive_c/windows/system32/kernel32.dll
4) rm -f $WINEPREFIX/drive_c/windows/system32/user32.dll

$WINEPREFIX -> ~/.wine if default is used, otherwise make sure you delete it
from the right one where the game is installed!

If you are installing in 64-bit WINEPREFIX make sure you remove the _right_
placeholders!
32-bit kernel/user placefolder dlls live in "syswow64", "system32" is for
64-bit.

With that steps I got successfully into main menu right after installation.
There is nothing to fix here and it's really a dupe of bug 15437

Regards

*** This bug has been marked as a duplicate of bug 15437 ***

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