[Bug 26025] Atom Zombie Smasher demo fails due to unimpl MSVCP90.cerr at std@@3V?$basic_ostream at DU?$char_traits at D@std@@@1 at A

wine-bugs at winehq.org wine-bugs at winehq.org
Sun May 1 14:57:39 CDT 2011


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

Anastasius Focht <focht at gmx.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |focht at gmx.net
            Summary|Atom Zombie Smasher demo:   |Atom Zombie Smasher demo
                   |fails to run with builtin   |fails due to unimpl
                   |msvcp80                     |MSVCP90.cerr at std@@3V?$basic
                   |                            |_ostream at DU?$char_traits at D@
                   |                            |std@@@1 at A

--- Comment #3 from Anastasius Focht <focht at gmx.net> 2011-05-01 14:57:38 CDT ---
Hello,

the game bundles its own version of MONO.

Gfx resource load (good case):

--- snip ---
0025:CALL csfml-graphics.sfImage_CreateFromFile() ret=00b169d8 
...
0025:Call msvcrt.fopen(030cdbe8 "content\\textures\\portraits01.png",100f27cc
"rb") ret=10034381
...
0025:RET  csfml-graphics.sfImage_CreateFromFile() retval=030cdb88 ret=00b169d8 
--- snip ---

Failing one:

--- snip ---
0025:CALL csfml-graphics.sfImage_CreateFromFile() ret=00b169d8
...
0025:Call
msvcp90.??0?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QAE at PBD@Z(0072f860,030cdbe8
"portraits02") ret=1008a83f
...
0021:Call msvcrt.fopen(0072f864 "portraits02",100f27cc "rb") ret=10034381 
...
0021:Ret  msvcrt.fopen() retval=00000000 ret=10034381
0021:trace:seh:raise_exception code=c0000005 flags=0 addr=0x10004af0
ip=10004af0 tid=0021
0021:trace:seh:raise_exception  info[0]=00000000
0021:trace:seh:raise_exception  info[1]=90909094
0021:trace:seh:raise_exception  eax=90909090 ebx=00000000 ecx=7b171800
edx=100ef689 esi=7b16e004 edi=00000016
0021:trace:seh:raise_exception  ebp=0072f7f8 esp=0072f7cc cs=0073 ds=007b
es=007b fs=0033 gs=003b flags=00010202 
...
0021:Call KERNEL32.WriteFile(0000002c,013e2140,0000000f,0072ef6c,00000000)
ret=73ad887f
Stacktrace:
...
--- snip ---

Looking into "content/textures" subfolder there are several "portraitsXX.png"
files but "portraits02.png" is missing:

--- snip ---
$ pwd
/home/focht/.wine/drive_c/Program Files/Atom Zombie Smasher demo/data
$ ls -l content/textures/
total 4360
-rw-r--r-- 1 focht focht    2832 2010-07-07 10:06 blank.png
-rw-r--r-- 1 focht focht  866583 2011-01-22 22:24 buildings2.png
-rw-r--r-- 1 focht focht  655498 2011-01-22 22:22 buildings.png
-rw-r--r-- 1 focht focht  903582 2010-11-09 13:43 comic01.png
-rw-r--r-- 1 focht focht 1038633 2010-12-06 21:17 comicblank.png
-rw-r--r-- 1 focht focht    8195 2010-12-06 21:27 comicfiller.png
-rw-r--r-- 1 focht focht    3674 2010-11-16 19:20 icon.png
-rw-r--r-- 1 focht focht   53320 2011-01-11 13:24 loading.jpg
-rw-r--r-- 1 focht focht  515833 2010-11-12 21:06 portraits01.png
-rw-r--r-- 1 focht focht  297300 2011-01-20 11:56 portraits03.png
-rw-r--r-- 1 focht focht    4131 2011-02-24 14:22 thumb.png
--- snip ---

If you copy one of the other to same folder, the game starts but fails at:

--- snip ---
$ wine ./atomzombiesmasher.exe fixme:actctx:parse_depend_manifests Could not
find dependent assembly L"Microsoft.VC90.CRT" (9.0.21022.8)
fixme:actctx:parse_depend_manifests Could not find dependent assembly
L"Microsoft.VC90.CRT" (9.0.21022.8)
fixme:actctx:parse_depend_manifests Could not find dependent assembly
L"Microsoft.VC80.CRT" (8.0.50608.0)
wine: Call from 0x7b83821f to unimplemented function
msvcp80.dll.??$?9DU?$char_traits at D@std@@V?$allocator at D@1@@std@@YA_NABV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@0 at PBD@Z,
aborting
--- snip ---

I suspect the file was left out by accident and it should really _fail_ in this
case.

The problem seems to be the error handling.
The app makes usage of cerr object which isn't currently impl in Wine.

(I added annotations for %ecx instance refs to make it easier to read)

--- snip ---
...
0x1001ba6e: movl    0x1008c10c,%ecx ; msvcp90.__wine_stub_msvcp90_dll_1972
; MSVCP90.?endl at std@@YAAAV?$basic_ostream at DU?$char_traits at D@std@@@1 at AAV21@@Z

0x1001ba74: pushl    %ecx
0x1001ba75: call    0x1001fd70 ; fetch ASCII "Unable to open file"

0x1001ba7a: movl    0x1008c110,%edx ; msvcp90.__wine_stub_msvcp90_dll_1610
; MSVCP90.?cerr at std@@3V?$basic_ostream at DU?$char_traits at D@std@@@1 at A 

0x1001ba80: pushl    %eax
0x1001ba81: pushl    $0x100ef6a0 ; ASCII "". Reason : "
0x1001ba86: pushl    %edi
0x1001ba87: pushl    $0x100ef688 ; ASCII "Failed to load image ""
0x1001ba8c: pushl    %edx
0x1001ba8d: call    0x10004ab0 ; *boom* (cerr referenced)
...
--- snip ---

Because cerr at std@@3V?$basic_ostream at DU?$char_traits at D@std@@@1 at A is a stub
symbol, any deref on this symbol (member ptr) will likely crash it.

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