https://bugs.winehq.org/show_bug.cgi?id=48822
Bug ID: 48822 Summary: Microsoft Word 6.0 for Windows crashes upon exit on unimplemented function ole2.dll16.WRITEFMTUSERTYPESTG Product: Wine Version: 5.4 Hardware: x86 OS: Linux Status: NEW Severity: normal Priority: P2 Component: ole16 Assignee: wine-bugs@winehq.org Reporter: focht@gmx.net Distribution: ---
Hello folks,
as it says.
--- snip --- $ pwd /home/focht/.wine/drive_c/WINWORD
$ wine ./WINWORD.EXE
002c:fixme:ole:CoRegisterClassObject16 ({00020900-0000-0000-c000-000000000046},01C6FA2E,0x00000004,0x00000001,01C6FA78),stub 002c:fixme:ole:CoRegisterClassObject16 ({00020901-0000-0000-c000-000000000046},01C6FA46,0x00000004,0x00000001,01C6FA7C),stub 002c:fixme:ole:CoRegisterMessageFilter16 (01C6FA52,01C6FA80),stub! 002c:fixme:ole:CreateDispTypeInfo16 (01993A66,2048,01C6E21A),stub 002c:fixme:ole:RegisterActiveObject16 (01A6FFA8,{000209ff-0000-0000-c000-000000000046},0x00000000,01C6D622):stub 002c:fixme:ole:CreateFileMoniker16 (Document1,01C74E82),stub! 002c:fixme:ole:GetRunningObjectTable16 (0,01C74E7E),stub! 002c:fixme:ole:CoLockObjectExternal16 (191F1B4C,1,0),stub! 002c:fixme:ole:RegisterDragDrop16 (0x00dc,191F1B4C),stub! 002c:fixme:gdi:GetOutlineTextMetrics16 (0075,0000,00000000): stub 002c:fixme:gdi:GetOutlineTextMetrics16 (00a5,0000,00000000): stub 002c:fixme:ole:CreateFileMoniker16 (Document1,019AD07A),stub! 002c:fixme:ole:WriteClassStg16 stub:1F5F66E8 {00020900-0000-0000-c000-000000000046} wine: Call from 0x7b00dbc1 to unimplemented function ole2.dll16.WRITEFMTUSERTYPESTG, aborting wine: Unimplemented function ole2.dll16.WRITEFMTUSERTYPESTG called at address 7B00DBC1 (thread 002c), starting debugger... Unhandled exception: unimplemented function ole2.dll16.WRITEFMTUSERTYPESTG called in 32-bit code (0x7b00dbc1). --- snip ---
$ wine --version wine-5.4-356-gab0a3cb2ff
Regards
https://bugs.winehq.org/show_bug.cgi?id=48822
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |win16
https://bugs.winehq.org/show_bug.cgi?id=48822
Vijay Kamuju infyquest@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |infyquest@gmail.com
--- Comment #1 from Vijay Kamuju infyquest@gmail.com --- Can you please test with the following patch https://source.winehq.org/patches/data/186352
https://bugs.winehq.org/show_bug.cgi?id=48822
--- Comment #2 from Anastasius Focht focht@gmx.net --- Hello Vijay,
--- quote --- Can you please test with the following patch https://source.winehq.org/patches/data/186352 --- quote ---
it still crashes with a stub upon exit:
--- snip --- $ pwd /home/focht/.wine/drive_c/WINWORD
$ WINEDEBUG=+seh,+relay,+ole wine ./WINWORD.EXE >>log.txt 2>&1 ... 00b4:Call STORAGE.1: STGCREATEDOCFILEA(0a3f7875 "c:\winword\template\~WRD0004.tmp",00001012,00000000,0a3f:74fa) ret=09e7:0471 ds=0a3f 00b4:trace:ole:StgCreateDocFile16 (c:\winword\template~WRD0004.tmp,0x00001012,0x00000000,017A3C5A) ... 00b4:Call KERNEL32.CreateFileA(017a3fd5 "c:\winword\template\~WRD0004.tmp",c0000000,00000000,00000000,00000001,00000000,00000000) ret=01bd5268 ... 00b4:Ret KERNEL32.CreateFileA() retval=000000c8 ret=01bd5268 00b4:Call krnl386.exe16.MapSL(107f3f78) ret=01bd5276 00b4:Ret krnl386.exe16.MapSL() retval=01cd3f78 ret=01bd5276 ... 00b4:trace:ole:STORAGE_get_pps_entry (n=0) ... 00b4:trace:ole:STORAGE_get_nth_next_big_blocknr (blocknr=1, nr=0) ... 00b4:Ret STORAGE.1: STGCREATEDOCFILEA() retval=00000000 ret=09e7:0471 ds=0a3f ... 00b4:Call OLE2.19: WRITECLASSSTG(107f3f78,09e7:00be) ret=09e7:06f2 ds=0a3f ... 00b4:fixme:ole:WriteClassStg16 stub:107F3F78 {00020900-0000-0000-c000-000000000046} 00b4:Ret OLE2.19: WRITECLASSSTG() retval=80030070 ret=09e7:06f2 ds=0a3f ... 00b4:Call OLE2.75: WRITEFMTUSERTYPESTG(3f78:107f,3f78c050,0a3f:73ec) ret=09e7:0725 ds=0a3f 00b4:fixme:ole:WriteFmtUserTypeStg16 stub:0000107F c050 Microsoft Word 6.0 Document 00b4:Ret OLE2.75: WRITEFMTUSERTYPESTG() retval=80030070 ret=09e7:0725 ds=0a3f 00b4:trace:seh:raise_exception code=c0000005 flags=0 addr=0x770 ip=00000770 tid=00b4 00b4:trace:seh:raise_exception info[0]=00000000 00b4:trace:seh:raise_exception info[1]=0000fff8 00b4:trace:seh:raise_exception eax=80030012 ebx=00007407 ecx=00000a3f edx=0a3f0000 esi=0000107f edi=00003f78 00b4:trace:seh:raise_exception ebp=00007506 esp=000074e0 cs=09e7 ds=0a3f es=107f fs=0063 gs=006b flags=00010282 00b4:trace:seh:call_stack_handlers calling handler at 0x3f2d00 code=c0000005 flags=0 ... wine: Unhandled page fault on read access to 0000FFF8 at address 00000770 (thread 00b4), starting debugger... --- snip ---
It's not really fun to deal with NE/win16 executables. In that specific sequence the HRESULTs from the API calls don't really matter. It seems the app wants to call IStorage16 methods but gets some weird vtable address. Maybe IStorage16Impl struct layout problem but it definately a different issue.
I propose to submit the patch for the stub as-is since the follow-up crash is not related. I will create a new ticket for IStorage16 insufficiencies.
Regards
https://bugs.winehq.org/show_bug.cgi?id=48822
--- Comment #3 from Anastasius Focht focht@gmx.net --- Hello Vijay,
I think the .spec file entry from your patch is not entirely correct. First arg should be 'segptr', like this:
--- snip --- 75 pascal WriteFmtUserTypeStg(segptr word str) WriteFmtUserTypeStg16 --- snip ---
Same with the stub. It should be 'SEGPTR pstg'. There seem to be some inconsistencies w.r.t. IStorage* vs. LPSTORAGE usage in general. It's pretty old code, not touched for long time.
Not that it changes much on the crash site though. Still investigating.
Regards
https://bugs.winehq.org/show_bug.cgi?id=48822
--- Comment #4 from Vijay Kamuju infyquest@gmail.com --- Hi Anastasius
Should I change it to LPSTORAGE16 instead of IStorage *. And changing the spec file as you mentioned.
Will it work? Let me know about your findings.
Cheers Vijay
--- Comment #5 from Vijay Kamuju infyquest@gmail.com --- Hi Anastasius
Should I change it to LPSTORAGE16 instead of IStorage *. And changing the spec file as you mentioned.
Will it work? Let me know about your findings.
Cheers Vijay
https://bugs.winehq.org/show_bug.cgi?id=48822
--- Comment #4 from Vijay Kamuju infyquest@gmail.com --- Hi Anastasius
Should I change it to LPSTORAGE16 instead of IStorage *. And changing the spec file as you mentioned.
Will it work? Let me know about your findings.
Cheers Vijay
--- Comment #5 from Vijay Kamuju infyquest@gmail.com --- Hi Anastasius
Should I change it to LPSTORAGE16 instead of IStorage *. And changing the spec file as you mentioned.
Will it work? Let me know about your findings.
Cheers Vijay
https://bugs.winehq.org/show_bug.cgi?id=48822
--- Comment #6 from Vijay Kamuju infyquest@gmail.com --- Can you also test with the below patches: https://github.com/wine-staging/wine-staging/blob/master/patches/widl-SLTG_T... https://github.com/wine-staging/wine-staging/blob/master/patches/widl-SLTG_T... https://github.com/wine-staging/wine-staging/blob/master/patches/widl-SLTG_T...