otya128 / winevdm

16-bit Windows (Windows 1.x, 2.x, 3.0, 3.1, etc.) on 64-bit Windows
GNU General Public License v2.0
2.66k stars 152 forks source link

stub function ole2disp.dll16 VARBSTRFROMI2 / Quanvert SPSS 1.7.3 #529

Open sotirovlyu opened 5 years ago

sotirovlyu commented 5 years ago

Hello,

I'm hitting a possibly unimplemented function stub function ole2disp.dll16 VARBSTRFROMI2 and my program exits. It is a Visual Basic 4.0 app, as far as I can see called Quanvert SPSS 1.7.3

version: 1056
2a9c:fixme:ole:OaBuildVersion16 197: If you get version error messages, please report them
2a9c:fixme:ole:OaBuildVersion16 215: Version value not known yet. Please investigate it!
2a9c:fixme:hook:SetWindowsHookEx16 813: System-global hooks (4) broken in Win16
2a9c:fixme:hook:SetWindowsHookEx16 813: System-global hooks (4) broken in Win16
2a9c:fixme:hook:SetWindowsHookEx16 813: System-global hooks (4) broken in Win16
2a9c:fixme:hook:SetWindowsHookEx16 813: System-global hooks (4) broken in Win16
2a9c:fixme:hook:SetWindowsHookEx16 813: System-global hooks (4) broken in Win16
2a9c:fixme:hook:SetWindowsHookEx16 813: System-global hooks (4) broken in Win16
2a9c:fixme:hook:SetWindowsHookEx16 813: System-global hooks (4) broken in Win16
2a9c:fixme:hook:SetWindowsHookEx16 813: System-global hooks (4) broken in Win16
2a9c:fixme:hook:SetWindowsHookEx16 813: System-global hooks (4) broken in Win16
2a9c:fixme:hook:SetWindowsHookEx16 813: System-global hooks (4) broken in Win16
2a9c:fixme:hook:SetWindowsHookEx16 813: System-global hooks (4) broken in Win16
2a9c:fixme:hook:SetWindowsHookEx16 813: System-global hooks (4) broken in Win16
2a9c:fixme:hook:SetWindowsHookEx16 813: System-global hooks (4) broken in Win16
2a9c:fixme:hook:SetWindowsHookEx16 813: System-global hooks (4) broken in Win16
2a9c:fixme:hook:SetWindowsHookEx16 813: System-global hooks (4) broken in Win16
2a9c:fixme:hook:SetWindowsHookEx16 813: System-global hooks (4) broken in Win16
2a9c:fixme:hook:SetWindowsHookEx16 813: System-global hooks (4) broken in Win16
stub function ole2disp.dll16 VARBSTRFROMI2

I can provide a trace file, if this can somehow help to fix this function, though there might be new ones after it :) ?

otya128 commented 5 years ago

I added that function. You can try the latest build. Click Environment: THIS_BUILD_IS_RECOMMENDED__VCXPROJ_BUILD=1, then click Artifact to download.

sotirovlyu commented 5 years ago

@otya128 Fantastic, great news, thanks for the fast response! It did run now, though I'll be able to verify full functionality a bit later. Some err messages are there for C:\WINNT\SYSTEM\stdole.tlb now?

0668:err:ole:TLB_ReadTypeLib 3511: Loading of typelib L"C:\WINNT\SYSTEM\stdole.tlb" failed with error 3 0668:err:ole:TLB_ReadTypeLib 3511: Loading of typelib L"C:\WINNT\SYSTEM\stdole.tlb" failed with error 3 0668:err:ole:TLB_ReadTypeLib 3511: Loading of typelib L"C:\WINNT\SYSTEM\stdole.tlb" failed with error 3 0668:err:ole:TLB_ReadTypeLib 3511: Loading of typelib L"C:\WINNT\SYSTEM\stdole.tlb" failed with error 3 0668:err:ole:TLB_ReadTypeLib 3511: Loading of typelib L"C:\WINNT\SYSTEM\stdole.tlb" failed with error 3 0668:err:ole:TLB_ReadTypeLib 3511: Loading of typelib L"C:\WINNT\SYSTEM\stdole.tlb" failed with error 3 0668:err:ole:TLB_ReadTypeLib 3511: Loading of typelib L"C:\WINNT\SYSTEM\stdole.tlb" failed with error 3 0668:err:ole:TLB_ReadTypeLib 3511: Loading of typelib L"C:\WINNT\SYSTEM\stdole.tlb" failed with error 3 0668:err:typelib:sltg_get_typelib_ref 3908: Unable to find reference 0668:err:typelib:sltg_get_typelib_ref 3908: Unable to find reference 0668:err:typelib:sltg_get_typelib_ref 3908: Unable to find reference 0668:err:typelib:sltg_get_typelib_ref 3908: Unable to find reference 0668:err:typelib:sltg_get_typelib_ref 3908: Unable to find reference 0668:err:typelib:sltg_get_typelib_ref 3908: Unable to find reference 0668:err:ole:TLB_ReadTypeLib 3511: Loading of typelib L"C:\WINNT\SYSTEM\stdole.tlb" failed with error 3 0668:err:ole:TLB_ReadTypeLib 3511: Loading of typelib L"C:\WINNT\SYSTEM\stdole.tlb" failed with error 3

I already have in the settings:

WINVER=3.1 IAmNotNT=1

sotirovlyu commented 5 years ago

@otya128 When trying to open project now I hit stub function ole2disp.dll16 SAFEARRAYREDIM do you think you can implement also this one at some point? Thanks for your patience.

sotirovlyu commented 5 years ago

Thanks for fixing it, I have downloaded latest build and tested it. I have two more questions, since the software from time to time executes external executables from its directory are they also being executed in the context of otvdm, since the main exe is started by it?

There seems to be one int21 message with registers when filesystem calls are present (like opening a project), and opening the external exe also produced same int21 calls in the console, and an error was produced.

151c:err:int21:INT21_Ioctl_Block 2714: int21: unknown/not implemented parameters: int21: AX 440d, BX 0001, CX 0873, DX 0000, SI 0dfa, DI 0000, DS 0061, ES 0061 151c:err:int21:INT21_Ioctl_Block 2714: int21: unknown/not implemented parameters: int21: AX 440d, BX 0003, CX 0873, DX 0000, SI 0dfa, DI 0001, DS 0061, ES 0061 151c:fixme:hook:SetWindowsHookEx16 812: System-global hooks (4) broken in Win16 1e70:fixme:toolhelp:InterruptUnRegister16 628: (0), semi-stub. 1e70:fixme:toolhelp:NotifyUnRegister16 530: (0), semi-stub.

and MsgBox:

Executing 'C:\QVTW\wqvpack.exe demo.pkd' failed Error code 0 System was out of memory, executable file was corrupt, or relocations were invalid

cracyc commented 5 years ago

Win16 programs run from other win16 programs run in the same context. Ioctl command 0x73 isn't documented and the only reference I can find to it applies only to pcmcia cards which shouldn't be relevant. We'd probably need a more detailed trace to understand why wqvpack.exe failed to run.

sotirovlyu commented 5 years ago

So, can you recommend WINEDEBUG flags that can be useful here, or what other trace?

For the int21 error, it seems it was coincidence, it appears frequently when I have a filesystem browse dialog in this Visual Basic app. Wheter it would be File/Open or "Browse" button. Also sometimes navigating through the file system hierarchy seems to not work, it doesn't populate/load the dirs, it's a bit random.

cracyc commented 5 years ago

WINEDEBUG=+relay,+int21 is a good start.