https://bugs.winehq.org/show_bug.cgi?id=32227
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |focht@gmx.net Component|oleaut32 |windowscodecs Summary|wine doesent let me to run |P2kCommander v6.0.0 crashes |P2kCommander-V6.0.0 |on startup (Wine's ungif | |reports app .gif image as | |broken)
--- Comment #7 from Anastasius Focht focht@gmx.net --- Hello folks,
confirming.
All official downloads are dead but some file hosters still carry it:
http://downloads.ziddu.com/downloadfile/6637188/P2kCommander-V6.0.0.zip.html
The app prepares a .gif image in memory which is passed as OLE stream to OleLoadPicture(). Wine's 'ungif' lib, part of 'windowscodecs' doesn't like it and flags the .gif image as broken, hence the failure. The app doesn't expect a failure here and proceeds to call a method on the null picture object.
Microsoft's OLE image decoder can cope with this and happily returns a picture object.
Debugger session:
--- snip --- Wine-dbg>n 903 return (GIF_ERROR); Wine-dbg>bt Backtrace:
=>0 0x7d59d0a3 DGifSlurp+0xe3(GifFile=0x164e60) [/home/focht/projects/wine/wine.repo/src/dlls/windowscodecs/ungif.c:903] in windowscodecs (0x0033e618)
1 0x7d569338 GifDecoder_Initialize+0x1c0(iface=<couldn't compute location>, pIStream=<couldn't compute location>, cacheOptions=<couldn't compute location>) [/home/focht/projects/wine/wine.repo/src/dlls/windowscodecs/gifformat.c:1131] in windowscodecs (0x0033e6b8)
2 0x7e22f0fb OLEPictureImpl_LoadWICDecoder+0x15a(This=0x164358, decoder_clsid=0x7e2f9200, xbuf="GIF89aá", xread=0x96f) [/home/focht/projects/wine/wine.repo/build-x86/dlls/oleaut32/../../include/wincodec.h:3511] in oleaut32 (0x0033e758)
3 0x7e2300b7 OLEPictureImpl_Load+0x9f7(iface=<couldn't compute location>, pStm=<couldn't compute location>) [/home/focht/projects/wine/wine.repo/src/dlls/oleaut32/olepicture.c:1490] in oleaut32 (0x0033e8b8)
4 0x7e23243a OleLoadPicture+0x19e(lpstream=<couldn't compute location>, lSize=<couldn't compute location>, fRunmode=<couldn't compute location>, riid=<couldn't compute location>, ppvObj=<couldn't compute location>) [/home/focht/projects/wine/wine.repo/build-x86/dlls/oleaut32/../../include/objidl.h:3149] in oleaut32 (0x0033e978)
5 0x00415715 in p2kcommander (+0x15714) (0x0033e9ec) 6 0x00415945 in p2kcommander (+0x15944) (0x0033ea0c) 7 0x00415dca in p2kcommander (+0x15dc9) (0x0033ea78) --- snip ---
I dumped the .gif from memory and it gets indeed reported as "broken" (giflib code is probably shared/similar).
--- snip --- $ identify dumped.gif dumped.gif GIF 160x149 160x149+0+0 8-bit PseudoClass 16c 2.42KB 0.000u 0:00.000 identify: corrupt image `pic.gif' @ error/gif.c/PingGIFImage/961. --- snip ---
Wine Internet Exploder can still display it though.
Interesting tidbit why only the combination of two 'winetricks' recipes work:
'vcrun6sp6' installs 'asycfilt.dll' which is the MS OLE image decoder, needed by native OLE. The decoder lib is loaded on demand - when OLE picture API is used. Failure to load the library (if not present) just results in common 0x80040005 OLE error code.
$ sha1sum P2kCommander-V6.0.0.zip b914bdec7e25c2db5786f8f9e32ee1390864dcc7 P2kCommander-V6.0.0.zip
$ du -sh P2kCommander-V6.0.0.zip 416K P2kCommander-V6.0.0.zip
$ wine --version wine-1.7.17-65-gfba08e3
Regards