https://bugs.winehq.org/show_bug.cgi?id=35636
Bug ID: 35636 Summary: JobTabs Free Resume Builder 2013 (vb6 app) fails on startup (failure to parse app SxS manifest referencing registry free COM server) Product: Wine Version: 1.7.12 Hardware: x86 OS: Linux Status: NEW Severity: normal Priority: P2 Component: ntdll Assignee: wine-bugs@winehq.org Reporter: focht@gmx.net
Hello folks,
as the summary says ...
Reported in bug 14218 (the infamous 'fixme:ole:OleLoadPictureEx' fallacy)
I can explain it a thousand times http://bugs.winehq.org/show_bug.cgi?id=14218#c16 and people still get it wrong...
Prerequisites: 'winetricks -q mfc42 vb6run'
Relevant part of trace log:
--- snip --- $ pwd /home/focht/.wine/drive_c/Program Files/JobTabsRB ... $ WINEDEBUG=+tid,+seh,+relay,+snoop,+ole,+variant,+actctx wine ./rb.exe
log.txt 2>&1
... 002c:trace:actctx:RtlCreateActivationContext 0xffeb1d0c 00000088 002c:trace:actctx:get_manifest_in_module looking for res #0001 in module 0x400000 L"C:\Program Files\JobTabsRB\rb.exe" 002c:trace:actctx:get_manifest_in_associated_manifest looking for manifest associated with (null) id 1 002c:trace:actctx:get_manifest_in_manifest_file loading manifest file L"\??\C:\Program Files\JobTabsRB\rb.exe.manifest" 002c:trace:actctx:parse_manifest parsing manifest loaded from L"\??\C:\Program Files\JobTabsRB\rb.exe.manifest" base dir (null) 002c:trace:actctx:parse_assembly_elem (0xffeb1afc) 002c:trace:actctx:parse_assembly_identity_elem name=L"rb.exe" version=1.0.0.48 arch=L"x86" 002c:trace:actctx:parse_description_elem Got description L"Built with: Side-by-Side Manifest Maker, Command Line (4.0.0.4650) (x86)" 002c:trace:actctx:parse_description_elem Got description L"Copyright: (c) Maze Computer Communications, Inc. All rights reserved." 002c:trace:actctx:parse_description_elem Got description L"Licensee: JobTabs LLC; 2095 Hartford Ct.; Marietta; GA; United States" 002c:trace:actctx:parse_description_elem Got description L"License: 1 user license" 002c:trace:actctx:parse_file_elem name=L"msado15.dll" 002c:warn:actctx:parse_typelib_flags unknown flags value L"hasdiskimage" 002c:fixme:actctx:parse_manifest_buffer failed to parse manifest L"C:\Program Files\JobTabsRB\rb.exe.manifest" ... 002c:err:ole:create_server class {ce2e4226-494a-4db2-9b45-7c8586cc01a3} not registered 002c:err:ole:CoGetClassObject no class object {ce2e4226-494a-4db2-9b45-7c8586cc01a3} could be created for context 0x5 002c:Ret ole32.CoCreateInstanceEx() retval=80040154 ret=660e3937 002c:Call ole32.GetErrorInfo(00000000,0033fa2c) ret=660d8306 002c:trace:ole:GetErrorInfo (0, 0x33fa2c, (nil)) 002c:Ret ole32.GetErrorInfo() retval=00000001 ret=660d8306 002c:Call oleaut32.SysFreeString(00000000) ret=6600e1a9 002c:Ret oleaut32.SysFreeString() retval=0033fa00 ret=6600e1a9 002c:Call oleaut32.SysFreeString(00000000) ret=6600e1ae 002c:Ret oleaut32.SysFreeString() retval=0033fa00 ret=6600e1ae 002c:Call oleaut32.SysFreeString(00000000) ret=6600e1b3 002c:Ret oleaut32.SysFreeString() retval=0033fa00 ret=6600e1b3 002c:Call KERNEL32.RaiseException(c000008f,00000001,00000002,0033fa30) ret=660d0956 002c:trace:seh:raise_exception code=c000008f flags=1 addr=0x7b83a97b ip=7b83a97b tid=002c 002c:trace:seh:raise_exception info[0]=deadcafe 002c:trace:seh:raise_exception info[1]=deadcafe 002c:trace:seh:raise_exception eax=7b8269e1 ebx=7b8bb000 ecx=deadcafe edx=0033f984 esi=0033fa30 edi=0033f9f0 002c:trace:seh:raise_exception ebp=0033f9c8 esp=0033f964 cs=0023 ds=002b es=002b fs=0063 gs=006b flags=00000283 002c:trace:seh:call_stack_handlers calling handler at 0x4131a6 code=c000008f flags=1 002c:CALL MSVBVM60.__vbaExceptHandler(<unknown, check return>) ret=7bc867b1 ... 002c:Call KERNEL32.MultiByteToWideChar(00000000,00000000,0033f5b8 "ActiveX component can't create object",ffffffff,00000000,00000000) ret=660d9fcb --- snip ---
'rb.exe.manifest':
--- snip --- ... <file name="msado15.dll" hashalg="SHA1"> <typelib tlbid="{2A75196C-D9EB-4129-B803-931327F72D5C}" version="2.8" helpdir="" flags="hasdiskimage"/> </file> ... --- snip ---
Wine parses typelib flags values case-sensitive, expecting upper-case, leading to parser failure.
Source: http://source.winehq.org/git/wine.git/blob/1e1084232d8d95540fbd7196c948ee4f8...
--- snip --- 588 static const WCHAR hasdiskimageW[] = {'H','A','S','D','I','S','K','I','M','A','G','E',0}; --- snip ---
Source: http://source.winehq.org/git/wine.git/blob/1e1084232d8d95540fbd7196c948ee4f8...
--- snip --- 1635 static BOOL parse_typelib_flags(const xmlstr_t *value, struct entity *entity) 1636 { 1637 WORD *flags = &entity->u.typelib.flags; 1638 const WCHAR *str = value->ptr, *start; 1639 int i = 0; 1640 1641 *flags = 0; 1642 1643 /* it's comma separated list of flags */ 1644 while (i < value->len) 1645 { 1646 start = str; 1647 while (*str != ',' && (i++ < value->len)) str++; 1648 1649 if (!strncmpW(start, restrictedW, str-start)) 1650 *flags |= LIBFLAG_FRESTRICTED; 1651 else if (!strncmpW(start, controlW, str-start)) 1652 *flags |= LIBFLAG_FCONTROL; 1653 else if (!strncmpW(start, hiddenW, str-start)) 1654 *flags |= LIBFLAG_FHIDDEN; 1655 else if (!strncmpW(start, hasdiskimageW, str-start)) 1656 *flags |= LIBFLAG_FHASDISKIMAGE; ... --- snip ---
$ sha1sum jrbsetup.exe f355548489f803ef10a7954b34e965b7ea8eb14b jrbsetup.exe
$ du -sh jrbsetup.exe 25M jrbsetup.exe
$ wine --version wine-1.7.13
Regards