ptitSeb / box86

Box86 - Linux Userspace x86 Emulator with a twist, targeted at ARM Linux devices
https://box86.org
MIT License
3.19k stars 221 forks source link

.NET 3.5sp1 crashes on install #227

Closed WheezyE closed 3 years ago

WheezyE commented 3 years ago

box86 2375d707, wine-devel=5.18~buster, latest winetricks (patched for box86) All components install correctly on x86 Linux (Debian 10, VMWare) with same version of wine.

Overview

I'd like to get dotnet35sp1 to install so that Winlink will run more stably (RMS Express opens with mono, but doesn't function correctly since it doesn't allow us to open modems through the RMS Express program).

I get a crash here in XPSEPSC's update.exe (contained within dotnet30's installer) that I think is the main problem -- see below for more info:

0818:fixme:setupapi:pSetupGetGlobalFlags stub
13196|SIGSEGV @0x7c8a8d00 (???) (x86pc=0x1004cf0/???:"???"), for accessing (nil) (code=1), db=0x46f16a0(0x1004cf0/???)
13196|SIGSEGV @0x7c467c00 (???) (x86pc=0x1005313/???:"???"), for accessing (nil) (code=1), db=0x46249d8(0x1005313/???)
0818:fixme:wintrust:WinVerifyTrust unimplemented for 4
0818:fixme:wintrust:SOFTPUB_VerifyImageHash Cannot verify hash for pszObjId=(null)
13196|Double SIGSEGV!

.NET 3.5 SP1 depends on .NET 3.0 (which crashes)

dotnet35sp1 installer contains all previous dotnet installers and runs them before installing itself. Therefore, we can either ask winetricks to install dotnet35sp1, or we can also just install all previous dotnets individually (to make debugging easier).

So far, I've been able to get dotnet20 and dotnet20sp2 to install with box86 2375d707 with dynarec turned off. However, dotnet30 installer seems to crash.

I piped the output of BOX86_DYNAREC=0 winetricks dotnet30 >> log.file 2>&1 to a logfile and pasted the whole log of the box86 dotnet30 install and crash here if you want to see it - though this log doesn't show the reason for the crash - just shows wine errors and an eventual SIGSEGV. Here is a log of the same install on x86 Linux, which completes successfully. On both Pi and on x86 Linux, I installed a fresh wineprefix without mono, then ran winetricks dotnet20 before I ran winetricks dotnet30.

.Net 3.0's crash is probably caused by XPSEPSC update.exe crashing

I think the entire crash might be traced back to a problem with XPSEPSC's update.exe ("XML Paper Specification Shared Components Pack 1.0 Installation Wizard" to update Windows XP components). This exe is nested inside several installers, but gets run during dotnet30 install (and dotnet30 install gets run during dotnet35sp1 install): [dotnetfx3.exe > dotnetfx3_extracted/wcu/XPS/XPSEPSC-x86-en-US.exe > XPSEPSC-x86-en-US_extracted/update/update.exe] If you want to get to that update.exe to play with it, you can extract these exe files using 7zip: 7z x ___.exe -o"extracted_dir"

First I had to run winetricks winxp (I learned from x86 Linux that update.exe needs Windows to be "winxp,").

Running this update.exe with box86 (with or without dynarec) crashes with:

0818:fixme:setupapi:pSetupGetGlobalFlags stub
13196|SIGSEGV @0x7c8a8d00 (???) (x86pc=0x1004cf0/???:"???"), for accessing (nil) (code=1), db=0x46f16a0(0x1004cf0/???)
13196|SIGSEGV @0x7c467c00 (???) (x86pc=0x1005313/???:"???"), for accessing (nil) (code=1), db=0x46249d8(0x1005313/???)
0818:fixme:wintrust:WinVerifyTrust unimplemented for 4
0818:fixme:wintrust:SOFTPUB_VerifyImageHash Cannot verify hash for pszObjId=(null)
13196|Double SIGSEGV!

(Installer window pops up, but then crashes on this SIGSEGV - this crash also happens when I try to run this installer with the Windows /q quiet install flag).

On x86 Linux (if we do a fresh wineprefix, run winetricks dotnet20, then run wine update.exe on its own):

pi@debian:~/.cache/winetricks/dotnet30/extracted/wcu/XPS/out/update$ wine update.exe
0050:err:ole:start_rpcss Failed to start RpcSs service
00c4:fixme:ntdll:NtQuerySystemInformation info_class SYSTEM_PERFORMANCE_INFORMATION
0024:fixme:setupapi:pSetupGetGlobalFlags stub
0024:fixme:wintrust:WinVerifyTrust unimplemented for 4
0024:fixme:wintrust:SOFTPUB_VerifyImageHash Cannot verify hash for pszObjId=(null)
0024:err:ole:com_get_class_object class {acadf079-cbcd-4032-83f2-fa47c4db096f} not registered
0024:err:ole:com_get_class_object no class object {acadf079-cbcd-4032-83f2-fa47c4db096f} could be created for context 0x1

(Installer window pops up, waits for me to press "Next", then goes on to install stuff)

It's kind of funny, ExaGear had the same problem with this exact same update.exe , which I believe was the reason I couldn't install dotnet35sp1 on ExaGear either.

Why I think update.exe is the problem

If we go to ~/.cache/winetricks/dotnet30/ and run wine dotnetfx3.exe (dotnet30 installer) we see DecryptFileA ("c:\\6504e39d706cc26fa29f1f78b383\\", where dotnetfx3.exe successfully extracts its contents to the temporary directory ~/.wine/drive_c/6504e39d706cc26fa29f1f78b383/

Then we see this and the dotnet30 Windows installer GUI says installation failed:

0168:fixme:advapi:DecryptFileA ("y:\\c82308bf6d53948e57\\", 00000000): stub
Box86 with Dynarec v0.1.3 2375d707 built on Oct 11 2020 13:13:32
0174:fixme:setupapi:pSetupGetGlobalFlags stub
7681|SIGSEGV @0x2856134 (???) (x86pc=(nil)/???:"???"), for accessing (nil) (code=1), db=(nil)((nil)/???)
7681|Double SIGSEGV!

The DecryptFileA ("y:\\c82308bf6d53948e57\\", 00000000): stub I'm pretty sure is where an .msi or .exe (contained within ~/.wine/drive_c/6504e39d706cc26fa29f1f78b383/) attempts to extract its contents into a temporary directory within our wineprefix.

After this failure, the installer's own Windows crash log reports:

[10/11/20,20:19:33] setup.exe: [2] ISetupComponent::Pre/Post/Install() failed in ISetupManager::InternalInstallManager() with HRESULT -2147023293.
[10/12/20,06:33:03] setup.exe: [2] ISetupComponent::Pre/Post/Install() failed in ISetupManager::InternalInstallManager() with HRESULT -2147023293.
[10/12/20,06:34:12] WapUI: [2] DepCheck indicates XPSEPSC x86 Installer is not installed.
[10/12/20,06:39:52] setup.exe: [2] ISetupComponent::Pre/Post/Install() failed in ISetupManager::InternalInstallManager() with HRESULT -2147023293.
[10/12/20,06:40:53] WapUI: [2] DepCheck indicates XPSEPSC x86 Installer is not installed.

We can extract dotnetfx3.exe's contents with pi@raspberrypi:~/.cache/winetricks/dotnet30 $ 7z x dotnetfx3.exe -o"unzipped" && cd unzipped And run the XPSEPSC install ourselves: cd ~/.cache/winetricks/dotnet30/unzipped/wcu/XPS && wine XPSEPSC-x86-en-US.exe to find that the XPSEPSC installer crashes here with Box86 (with or without dynarec, also trying a /q windos flag to run the installer quietly doesn't help):

pi@raspberrypi:~/.cache/winetricks/dotnet30/unzipped/wcu/XPS $ wine XPSEPSC-x86-en-US.exe 
Box86 with Dynarec v0.1.3 2375d707 built on Oct 11 2020 13:13:32
Box86 with Dynarec v0.1.3 2375d707 built on Oct 11 2020 13:13:32
Box86 with Dynarec v0.1.3 2375d707 built on Oct 11 2020 13:13:32
0778:fixme:clusapi:GetNodeClusterState ((null),1020ECC4) stub!
0778:fixme:advapi:DecryptFileA ("c:\\1a42330abefda3ee2c54ec\\", 00000000): stub
078c:fixme:setupapi:pSetupGetGlobalFlags stub
078c:fixme:wintrust:WinVerifyTrust unimplemented for 4
078c:fixme:wintrust:SOFTPUB_VerifyImageHash Cannot verify hash for pszObjId=(null)

If I CTRL-C in the terminal right after fixme:advapi:DecryptFileA runs, then I can navigate to the ~/.wine/drive_c/1a42330abefda3ee2c54ec temporary folder where the contents are extracted and play with those files. It's here where I track the error to

pi@raspberrypi:~/.wine/drive_c/1a42330abefda3ee2c54ec/update $ wine update.exe 
Box86 with Dynarec v0.1.3 2375d707 built on Oct 11 2020 13:13:32
Box86 with Dynarec v0.1.3 2375d707 built on Oct 11 2020 13:13:32
Box86 with Dynarec v0.1.3 2375d707 built on Oct 11 2020 13:13:32
0818:fixme:setupapi:pSetupGetGlobalFlags stub
13196|SIGSEGV @0x7c8a8d00 (???) (x86pc=0x1004cf0/???:"???"), for accessing (nil) (code=1), db=0x46f16a0(0x1004cf0/???)
13196|SIGSEGV @0x7c467c00 (???) (x86pc=0x1005313/???:"???"), for accessing (nil) (code=1), db=0x46249d8(0x1005313/???)
0818:fixme:wintrust:WinVerifyTrust unimplemented for 4
0818:fixme:wintrust:SOFTPUB_VerifyImageHash Cannot verify hash for pszObjId=(null)
13196|Double SIGSEGV!
Segmentation fault
ptitSeb commented 3 years ago

So I should focus on that "update.exe" probably, first by trying ot isolate it myself...

ptitSeb commented 3 years ago

I have improve the signal handler again. Analysing that "update.exe", I realised SEGFAULT are a normal process on windows app: that's how Exception are generated and trapped. So I modified Signal Handler to allow a same signal multiple time from the same address if there is a signal handler. It seems to go farther, but there are some other (not so normal I think) exception later... To be continued...

WheezyE commented 3 years ago

Nice! Many you're fast. Yeah, now I'm getting

pi@raspberrypi:~/.cache/winetricks/dotnet30/unzipped/wcu/XPS $ wine XPSEPSC-x86-en-US.exe /q
Box86 with Dynarec v0.1.3 4d1307e2 built on Oct 12 2020 15:38:34
Box86 with Dynarec v0.1.3 4d1307e2 built on Oct 12 2020 15:38:34
Box86 with Dynarec v0.1.3 4d1307e2 built on Oct 12 2020 15:38:34
0314:fixme:clusapi:GetNodeClusterState ((null),1020ECC4) stub!
0314:fixme:advapi:DecryptFileA ("c:\\125cd6fa7a81d32c71c9b5\\", 00000000): stub
0330:fixme:setupapi:pSetupGetGlobalFlags stub
0330:fixme:wintrust:WinVerifyTrust unimplemented for 4
0330:fixme:wintrust:SOFTPUB_VerifyImageHash Cannot verify hash for pszObjId=(null)
0330:err:ole:com_get_class_object class {acadf079-cbcd-4032-83f2-fa47c4db096f} not registered
0330:err:ole:com_get_class_object no class object {acadf079-cbcd-4032-83f2-fa47c4db096f} could be created for context 0x1
0348:err:virtual:virtual_setup_exception stack overflow 1512 bytes in thread 0348 addr 0xb5c42750 stack 0x1b20a18 (0x1b20000-0x1b21000-0x1c20000)
0330:fixme:sfc:SRSetRestorePointA 0133BD44 0133B8E0
0330:fixme:sfc:SfcConnectToServer 0
0330:fixme:wintrust:CryptCATGetCatAttrInfo 011B76B0, L"SPAttr"
0330:fixme:wintrust:CryptCATGetCatAttrInfo 011B6050, L"SPAttr"
0330:fixme:wintrust:CryptCATGetCatAttrInfo 011B6050, L"SPLevel"
0330:fixme:wintrust:CryptCATGetCatAttrInfo 011B6050, L"SPLevel"
0330:fixme:wintrust:SOFTPUB_VerifyImageHash Cannot verify hash for pszObjId=(null)
wine: Call from 7B00F969 to unimplemented function prntvpt.dll.DllRegisterServer, aborting
wine: Unimplemented function prntvpt.dll.DllRegisterServer called at address 7B00F969 (thread 01a4), starting debugger...

From: http://www.dejadejadeja.com/detech/ocxdb/licdll.dll.txt.lisp ACADF079-CBCD-4032-83F2-FA47C4DB096F might refer to "ICOMLicenseAgent" "ICOMLicenseAgent2"?

WheezyE commented 3 years ago

Alright, with the improved signal handling in d4984fd0 I'm now getting this opcode:

pi@raspberrypi:~/.cache/winetricks/dotnet30/unzipped/wcu/XPS/update $ wine update.exe 
Box86 with Dynarec v0.1.3 d4984fd0 built on Oct 14 2020 07:44:24
Box86 with Dynarec v0.1.3 d4984fd0 built on Oct 14 2020 07:44:24
Box86 with Dynarec v0.1.3 d4984fd0 built on Oct 14 2020 07:44:24
0380:fixme:setupapi:pSetupGetGlobalFlags stub
21881|SIGSEGV @0x7c8a8d00 (???) (x86pc=0x1004cf0/???:"???"), for accessing (nil) (code=1), db=0x426bc98(0x1004cf0/???)
21881|0xb5c863d5: Unimplemented Opcode 0F AE A9 00 FE FF FF 8B

(I also realize in my last post, I accidentally posted the error log of wine XPSEPSC-x86-en-US.exe, but it looks like you sorted that out - sorry about that).

ptitSeb commented 3 years ago

I have pushed a fixed. Hopefully that new opcode (that is a bit tricly to implement) will not be called anymore.

WheezyE commented 3 years ago

That opened the dialog box for the install wizard without crashing! I was able to hit the Next button to begin the install, but then it crashes again here. We're making progress!

image

03c0:err:virtual:virtual_setup_exception stack overflow 1512 bytes in thread 03c0 addr 0xb5bfb750 stack 0x10f50a18 (0x10f50000-0x10f51000-0x11050000)
23595|SIGSEGV @0x79769b00 (???) (x86pc=0x10057b0/???:"???"), for accessing (nil) (code=1), db=0x562c848(0x10057b0/???)
23595|SIGSEGV @0x79769b00 (???) (x86pc=0x10057b0/???:"???"), for accessing (nil) (code=1), db=0x562c848(0x10057b0/???)
03b4:fixme:sfc:SRSetRestorePointA 1020BD44 1020B8E0
23595|SIGSEGV @0x78a48300 (???) (x86pc=0x1005e78/???:"???"), for accessing (nil) (code=1), db=0x5694e10(0x1005e78/???)
03b4:fixme:sfc:SfcConnectToServer 0
03b4:fixme:wintrust:CryptCATGetCatAttrInfo 10B51150, L"SPAttr"
03b4:fixme:wintrust:CryptCATGetCatAttrInfo 10B51150, L"SPAttr"
03b4:fixme:wintrust:CryptCATGetCatAttrInfo 10B51150, L"SPLevel"
03b4:fixme:wintrust:CryptCATGetCatAttrInfo 10B51150, L"SPLevel"
03b4:fixme:wintrust:SOFTPUB_VerifyImageHash Cannot verify hash for pszObjId=(null)
23595|SIGSEGV @0x78a48300 (???) (x86pc=0x1005e78/???:"???"), for accessing (nil) (code=1), db=0x5694e10(0x1005e78/???)
wine: Call from 7B00F969 to unimplemented function prntvpt.dll.DllRegisterServer, aborting
wine: Unimplemented function prntvpt.dll.DllRegisterServer called at address 7B00F969 (thread 03c8), starting debugger...
WheezyE commented 3 years ago

Oh interesting, if I close the Windows debugger window, then hit CTRL-C in the terminal, the Wizard says it finishes. I'll have to try to see if this actually installed everything. Then the terminal window hangs on: 03b8:err:virtual:virtual_setup_exception stack overflow 1108 bytes in thread 03b8 addr 0xb5bfb750 stack 0x107c0bac (0x107c0000-0x107c1000-0x108c0000)

UPDATE: After trying wine XPSEPSC-x86-en-US.exe which contains update.exe, it looks like this crash in update.exe still prevents install of XPSEPSC-x86-en-US.exe (and thus would also still prevent full install of dotnetfx3.exe)

ptitSeb commented 3 years ago

With that error: wine: Call from 7B00F969 to unimplemented function prntvpt.dll.DllRegisterServer, aborting I'm not sure it's still a box86 error at this point?

WheezyE commented 3 years ago

That's possible, although I don't think this error shows up on x86 Linux in wine when update.exe is run. I'll double-check and update this post with the full output

UPDATE: x86 Linux wine-devel=5.18~buster. Update.exe re-run and successfully installed. (Update.exe was already successfully installed once before on this wineprefix, but the wizards seemed to install the same way the second time - I'll try a new wineprefix with dotnet20 installed though to be sure).

pi@debian:~/.cache/winetricks/dotnet30/extracted/wcu/XPS/out/update$ wine update.exe 
0050:err:ole:start_rpcss Failed to start RpcSs service
0024:fixme:setupapi:pSetupGetGlobalFlags stub
0024:fixme:wintrust:WinVerifyTrust unimplemented for 4
0024:fixme:wintrust:SOFTPUB_VerifyImageHash Cannot verify hash for pszObjId=(null)
0024:err:ole:com_get_class_object class {acadf079-cbcd-4032-83f2-fa47c4db096f} not registered
0024:err:ole:com_get_class_object no class object {acadf079-cbcd-4032-83f2-fa47c4db096f} could be created for context 0x1
0024:fixme:sfc:SRSetRestorePointA 0031BD44 0031B8E0
0024:fixme:sfc:SfcConnectToServer 0
0024:fixme:wintrust:CryptCATGetCatAttrInfo 0117D4D8, L"SPAttr"
0024:fixme:wintrust:CryptCATGetCatAttrInfo 0117D4D8, L"SPAttr"
0024:fixme:wintrust:CryptCATGetCatAttrInfo 0117D4D8, L"SPLevel"
0024:fixme:wintrust:CryptCATGetCatAttrInfo 0117D4D8, L"SPLevel"
0024:fixme:wintrust:SOFTPUB_VerifyImageHash Cannot verify hash for pszObjId=(null)
00e8:fixme:ntdll:EtwRegisterTraceGuidsW (010182D6, 01099138, {aefe45f4-8548-42b4-b1c8-25673b07ad8b}, 1, 0031FDE0, (null), (null), 01099140): stub
00e8:fixme:ntdll:EtwRegisterTraceGuidsW   register trace class {aefe45f4-8548-42b4-b1c8-25673b07ad8b}
00e8:fixme:heap:RtlSetHeapInformation 00000000 1 00000000 0 stub
00e8:fixme:advapi:RegisterEventSourceW ((null),L"Microsoft-Windows-SpoolerFilterPipelineSVC"): stub
00e8:fixme:psdrv:PSDRV_UpdateDevCaps Can't find page
00e8:fixme:psdrv:PSDRV_UpdateDevCaps Can't find page
00e8:fixme:psdrv:PSDRV_UpdateDevCaps Can't find page
00e8:fixme:winspool:AddPrintProcessorW ((null),L"Windows NT x86",L"filterpipelineprintproc.dll",L"MS_XPS"): stub
00e8:fixme:ntdll:EtwUnregisterTraceGuids deadbeef: stub
0024:fixme:setupapi:pSetupGetGlobalFlags stub
0024:fixme:setupapi:pSetupGetGlobalFlags stub
0024:fixme:advapi:RegisterEventSourceA ((null),"NtServicePack"): stub
0024:fixme:advapi:RegisterEventSourceW (L"",L"NtServicePack"): stub
0024:fixme:advapi:ReportEventA (CAFE4242,0x0004,0x0000,0x400e1119,007A5738,0x0002,0x00000000,0031BD58,00000000): stub
0024:fixme:advapi:ReportEventW (CAFE4242,0x0004,0x0000,0x400e1119,007A5738,0x0002,0x00000000,011810A8,00000000): stub
0024:fixme:advapi:DeregisterEventSource (CAFE4242) stub

UPDATE2: Yeah, the terminal output is the same when update.exe installs into a fresh wineprefix with dotnet20 when update.exe hasn't ever been installed before (just some memory addresses change)

WheezyE commented 3 years ago

That opened the dialog box for the install wizard without crashing! I was able to hit the Next button to begin the install, but then it crashes again here. We're making progress!

image

03c0:err:virtual:virtual_setup_exception stack overflow 1512 bytes in thread 03c0 addr 0xb5bfb750 stack 0x10f50a18 (0x10f50000-0x10f51000-0x11050000)
23595|SIGSEGV @0x79769b00 (???) (x86pc=0x10057b0/???:"???"), for accessing (nil) (code=1), db=0x562c848(0x10057b0/???)
23595|SIGSEGV @0x79769b00 (???) (x86pc=0x10057b0/???:"???"), for accessing (nil) (code=1), db=0x562c848(0x10057b0/???)
03b4:fixme:sfc:SRSetRestorePointA 1020BD44 1020B8E0
23595|SIGSEGV @0x78a48300 (???) (x86pc=0x1005e78/???:"???"), for accessing (nil) (code=1), db=0x5694e10(0x1005e78/???)
03b4:fixme:sfc:SfcConnectToServer 0
03b4:fixme:wintrust:CryptCATGetCatAttrInfo 10B51150, L"SPAttr"
03b4:fixme:wintrust:CryptCATGetCatAttrInfo 10B51150, L"SPAttr"
03b4:fixme:wintrust:CryptCATGetCatAttrInfo 10B51150, L"SPLevel"
03b4:fixme:wintrust:CryptCATGetCatAttrInfo 10B51150, L"SPLevel"
03b4:fixme:wintrust:SOFTPUB_VerifyImageHash Cannot verify hash for pszObjId=(null)
23595|SIGSEGV @0x78a48300 (???) (x86pc=0x1005e78/???:"???"), for accessing (nil) (code=1), db=0x5694e10(0x1005e78/???)
wine: Call from 7B00F969 to unimplemented function prntvpt.dll.DllRegisterServer, aborting
wine: Unimplemented function prntvpt.dll.DllRegisterServer called at address 7B00F969 (thread 03c8), starting debugger...

I tracked this error back to C:\Windows\system32\regsvr32.exe trying to register C:\Windows\system32\prntvpt.dll and failing. We can do this manually to reproduce the error to help debugging:

pi@raspberrypi:~/.wine/drive_c/windows/system32 $ wine regsvr32.exe prntvpt.dll 
Box86 with Dynarec v0.1.3 f6022de7 built on Oct 16 2020 06:00:00
Box86 with Dynarec v0.1.3 f6022de7 built on Oct 16 2020 06:00:00
Box86 with Dynarec v0.1.3 f6022de7 built on Oct 16 2020 06:00:00
wine: Call from 7B00F969 to unimplemented function prntvpt.dll.DllRegisterServer, aborting
wine: Unimplemented function prntvpt.dll.DllRegisterServer called at address 7B00F969 (thread 0100), starting debugger...
^C0110:err:seh:NtRaiseException Unhandled exception code c0000005 flags 0 addr 0x7bc56833
pi@raspberrypi:~/.wine/drive_c/windows/system32 $ BOX86_DYNAREC=0 wine regsvr32.exe prntvpt.dll 
Box86 with Dynarec v0.1.3 f6022de7 built on Oct 16 2020 06:00:00
Box86 with Dynarec v0.1.3 f6022de7 built on Oct 16 2020 06:00:00
Box86 with Dynarec v0.1.3 f6022de7 built on Oct 16 2020 06:00:00
wine: Call from 7B00F969 to unimplemented function prntvpt.dll.DllRegisterServer, aborting
wine: Unimplemented function prntvpt.dll.DllRegisterServer called at address 7B00F969 (thread 0130), starting debugger...

I was unable to use ollydbg with x86 Linux wine on the update.exe, but I'm gonna see if I can investigating further with ollydbg on this "regsvr32.exe prntvpt.dll" somehow, since it registers ok on x86 Linux. I'm also gonna try other wine versions too in box86

ptitSeb commented 3 years ago

Do you know what is the behaviour of "regsvr32.exe prntvpt.dll" on a a regular x86 linux with wine?

WheezyE commented 3 years ago

I get this on regular x86 Linux wine. (lol man you're speedy - I'm always amazed by that)

pi@debian:~/.wine/drive_c/windows/system32$ wine regsvr32.exe prntvpt.dll 
regsvr32: Successfully registered DLL 'prntvpt.dll'

The version of wine on my x86 Linux is the same as on my Pi

ptitSeb commented 3 years ago

Ah ok, so it seems some entry point is not found in the dll with box86. Strange. I'll need to get a full BOX86_LOG=2 log to see what function are done and why it seems to fail. (I don't advise you to try, because the whole wine runtime will also get dumped, it's quite tricky just to generate the log, but you get some timeouts...)

WheezyE commented 3 years ago

Cool, ok yeah. Not sure if these factors would help to reproduce the errors faithfully, but my wineprefix is currrently set to winxp mode (for that update.exe) and I installed dotnet20 before attempting this registration. The update.exe can be run many times in a row (learned from x86 Linux wine). I'm running wine-devel=5.18~buster on x86Linux & Pi, and box86 with Dynarec v0.1.3 f6022de7

WheezyE commented 3 years ago

Different memory address error using wine-5.13 (from the Twister OS FAQ). EDIT: my previous version of this post said the memory address was the same with wine-5.13

pi@raspberrypi:~/.wine/drive_c/windows/system32 $ wine regsvr32.exe prntvpt.dll 
Box86 with Dynarec v0.1.3 f6022de7 built on Oct 16 2020 06:00:00
Box86 with Dynarec v0.1.3 f6022de7 built on Oct 16 2020 06:00:00
Box86 with Dynarec v0.1.3 f6022de7 built on Oct 16 2020 06:00:00
0064:err:vulkan:wine_vk_init Failed to load libvulkan.so.1.
wine: Call from 7B034B1F to unimplemented function prntvpt.dll.DllRegisterServer, aborting
wine: Unimplemented function prntvpt.dll.DllRegisterServer called at address 7B034B1F (thread 0024), starting debugger...
Box86 with Dynarec v0.1.3 f6022de7 built on Oct 16 2020 06:00:00

Also, as a side-note, wine-5.13 errors on update.exe. so I guess newer wine versions like 5.18 are the ones to test with this dotnet30 installer.

WheezyE commented 3 years ago

More terminal output. Not sure if this is helpful at all. Also not sure what box86 will do to ollydbg's analysis.

I installed ollydbg110 on x86 Linux wine with winetricks ollydbg110 and ran it, opening regsvr32.exe (while passing it an argument prntvpt.dll when opening that exe in olly). image

EDIT: Here's the program when olly loads its entrypoint image

I'm a newb reverser and don't know how to dump a log of ollydbg steps, but the wine terminal output looked like this on x86 Linux.

0024:fixme:commdlg:GetFileName95 Flags 0x00010000 not yet implemented
0024:fixme:dbghelp:FindDebugInfoFileEx ("regsvr32" "C:\\windows\\system32\\;C:\\ollydbg110;C:\\ollydbg110" "C:\\windows\\system32\\" 0049103C 0031BBD8): stub
0024:fixme:dbghelp:FindDebugInfoFileEx ("advapi32" "C:\\windows\\system32\\;C:\\ollydbg110;C:\\ollydbg110" "C:\\windows\\system32\\" 0049103C 0031BBD8): stub
0024:fixme:dbghelp:FindDebugInfoFileEx ("rpcrt4" "C:\\windows\\system32\\;C:\\ollydbg110;C:\\ollydbg110" "C:\\windows\\system32\\" 0049103C 0031BBD8): stub
0024:fixme:dbghelp:FindDebugInfoFileEx ("version" "C:\\windows\\system32\\;C:\\ollydbg110;C:\\ollydbg110" "C:\\windows\\system32\\" 0049103C 0031BBD8): stub
0024:fixme:dbghelp:FindDebugInfoFileEx ("combase" "C:\\windows\\system32\\;C:\\ollydbg110;C:\\ollydbg110" "C:\\windows\\system32\\" 0049103C 0031BBD8): stub
0024:fixme:dbghelp:FindDebugInfoFileEx ("ole32" "C:\\windows\\system32\\;C:\\ollydbg110;C:\\ollydbg110" "C:\\windows\\system32\\" 0049103C 0031BBD8): stub
0024:fixme:dbghelp:FindDebugInfoFileEx ("sechost" "C:\\windows\\system32\\;C:\\ollydbg110;C:\\ollydbg110" "C:\\windows\\system32\\" 0049103C 0031BBD8): stub
0024:fixme:dbghelp:FindDebugInfoFileEx ("setupapi" "C:\\windows\\system32\\;C:\\ollydbg110;C:\\ollydbg110" "C:\\windows\\system32\\" 0049103C 0031BBD8): stub
0024:fixme:dbghelp:FindDebugInfoFileEx ("user32" "C:\\windows\\system32\\;C:\\ollydbg110;C:\\ollydbg110" "C:\\windows\\system32\\" 0049103C 0031BBD8): stub
0024:fixme:dbghelp:FindDebugInfoFileEx ("imm32" "C:\\windows\\system32\\;C:\\ollydbg110;C:\\ollydbg110" "C:\\windows\\system32\\" 0049103C 0031BBD8): stub
0024:fixme:dbghelp:FindDebugInfoFileEx ("kernelbase" "C:\\windows\\system32\\;C:\\ollydbg110;C:\\ollydbg110" "C:\\windows\\system32\\" 0049103C 0031BBD8): stub
0024:fixme:dbghelp:FindDebugInfoFileEx ("kernel32" "C:\\windows\\system32\\;C:\\ollydbg110;C:\\ollydbg110" "C:\\windows\\system32\\" 0049103C 0031BBD8): stub
0024:fixme:dbghelp:FindDebugInfoFileEx ("ntdll" "C:\\windows\\system32\\;C:\\ollydbg110;C:\\ollydbg110" "C:\\windows\\system32\\" 0049103C 0031BBD8): stub
0024:fixme:dbghelp:FindDebugInfoFileEx ("gdi32" "C:\\windows\\system32\\;C:\\ollydbg110;C:\\ollydbg110" "C:\\windows\\system32\\" 0049103C 0031BBD8): stub
0024:fixme:dbghelp:FindDebugInfoFileEx ("ucrtbase" "C:\\windows\\system32\\;C:\\ollydbg110;C:\\ollydbg110" "C:\\windows\\system32\\" 0049103C 0031BBD8): stub
0024:fixme:dbghelp:FindDebugInfoFileEx ("winex11" "C:\\windows\\system32\\;C:\\ollydbg110;C:\\ollydbg110" "C:\\windows\\system32\\" 0049103C 0031D6F0): stub
0024:fixme:dbghelp:FindDebugInfoFileEx ("oleaut32" "C:\\windows\\system32\\;C:\\ollydbg110;C:\\ollydbg110" "C:\\windows\\system32\\" 0049103C 0031D6F0): stub
0024:fixme:dbghelp:FindDebugInfoFileEx ("winspool" "C:\\windows\\system32\\;C:\\ollydbg110;C:\\ollydbg110" "C:\\windows\\system32\\" 0049103C 0031D6F0): stub
0024:fixme:dbghelp:FindDebugInfoFileEx ("prntvpt" "C:\\windows\\system32\\;C:\\ollydbg110;C:\\ollydbg110" "C:\\windows\\system32\\" 0049103C 0031D6F0): stub
0024:fixme:dbghelp:FindDebugInfoFileEx ("msvcrt" "C:\\windows\\system32\\;C:\\ollydbg110;C:\\ollydbg110" "C:\\windows\\system32\\" 0049103C 0031D6F0): stub
0024:fixme:dbghelp:FindDebugInfoFileEx ("OLEAUT32" "C:\\windows\\system32\\;C:\\ollydbg110;C:\\ollydbg110" "C:\\windows\\system32\\" 0049103C 0031D6F0): stub
0024:fixme:dbghelp:FindDebugInfoFileEx ("WINSPOOL" "C:\\windows\\system32\\;C:\\ollydbg110;C:\\ollydbg110" "C:\\windows\\system32\\" 0049103C 0031D6F0): stub
regsvr32: Successfully registered DLL 'prntvpt.dll'

In ollydbg110 on Pi w/ box86, olly crashed upon loading regsvr32.exe with the dll as an argument (and then said "Debugged program was unable to process exception" when I hit shift F7). I couldn't step through the program at all before it crashed. image

And then I got the following wine terminal output

pi@raspberrypi:~/.wine/drive_c/ollydbg110 $ wine OLLYDBG.EXE 
Box86 with Dynarec v0.1.3 f6022de7 built on Oct 16 2020 06:00:00
Box86 with Dynarec v0.1.3 f6022de7 built on Oct 16 2020 06:00:00
Box86 with Dynarec v0.1.3 f6022de7 built on Oct 16 2020 06:00:00
0050:err:vulkan:wine_vk_init Failed to load libvulkan.so.1.
0050:err:ole:start_rpcss Failed to start RpcSs service
Box86 with Dynarec v0.1.3 f6022de7 built on Oct 16 2020 06:00:00
0024:fixme:ntdll:NtQuerySystemInformation info_class SYSTEM_PERFORMANCE_INFORMATION
0024:fixme:font:freetype_SelectFont Untranslated charset 255
0024:fixme:font:freetype_SelectFont Untranslated charset 255
0024:fixme:commdlg:GetFileName95 Flags 0x00010000 not yet implemented
0024:fixme:shell:ShellView_OnNotify LVN_KEYDOWN key=0x00000052
0024:fixme:shell:ShellView_OnNotify LVN_KEYDOWN key=0x00000045
0024:fixme:shell:ShellView_OnNotify LVN_KEYDOWN key=0x00000053
0024:fixme:msg:pack_message msg 14 (WM_ERASEBKGND) not supported yet
wine: Call from 7B00F969 to unimplemented function prntvpt.dll.DllRegisterServer, aborting
ptitSeb commented 3 years ago

You cannot really debug with box86, the CC "Trap interupt" opcode is not implemented ;)

WheezyE commented 3 years ago

Ah! Darn - I was actually kind of low-key excited to do some challenge exe’s on 'xp'/Twister with olly like the old days. ;)

It’s interesting though that olly enters at the same memory address in regsvr32.exe that wine throws in the terminal when using Box86 - maybe that’s related to the problem regsvr is having?

WheezyE commented 3 years ago

Hey again. I ran BOX86_LOG=2 wine regsvr32.exe prntvpt.dll 2>&1 | tee SomeFile.txt and attached the file here. SomeFile.txt

Line 33352 reads: 25456|0xb5a9c65d: Calling write (00000002, B5AF3CE8, 0000005B...) =>wine: Call from 7B034B1F to unimplemented function prntvpt.dll.DllRegisterServer, aborting return 0x0000005B

Interesting, this error is referencing a different memory address now with the newer Box86 verison I'm using

WheezyE commented 3 years ago

Thanks for taking another look at this with the signal handling in cc8d1f9bf2ff29731eb1b2555c064ef9bb5be6ae and the shoutout on the discord! I’m sorry to say I’m still getting the same error, but I appreciate your efforts!

pi@raspberrypi:~/.wine/drive_c/windows/system32 $ wine regsvr32.exe prntvpt.dll
Box86 with Dynarec v0.1.5 416e1612 built on Nov 18 2020 04:35:38
Box86 with Dynarec v0.1.5 416e1612 built on Nov 18 2020 04:35:38
Box86 with Dynarec v0.1.5 416e1612 built on Nov 18 2020 04:35:38
wine: Call from 7B034B1F to unimplemented function prntvpt.dll.DllRegisterServer, aborting
wine: Unimplemented function prntvpt.dll.DllRegisterServer called at address 7B034B1F (thread 0024), starting debugger...
Box86 with Dynarec v0.1.5 416e1612 built on Nov 18 2020 04:35:38
winedbg detected, not launching it!
0024:err:seh:start_debugger Couldn't start debugger L"winedbg --auto 32 112" (1359)
Read the Wine Developers Guide on how to set up winedbg or another debugger
pi@raspberrypi:~/.wine/drive_c/windows/system32 $ 

This is wine 5.13 but I’ll test newer wines soon. (I got this error in the past with 5.18 too)

WheezyE commented 3 years ago

Just tried wine-5.18-devel and wine-5.21-devel and they have similar errors, though with different memory addresses (strange...). This is all on Raspberry Pi OS (haven't actually tried TwisterOS yet but I've always gotten similar behavior between Raspbian and Twister).

pi@raspberrypi:~/.wine/drive_c/windows/system32 $ wine --version
Box86 with Dynarec v0.1.5 416e1612 built on Nov 18 2020 04:35:38
wine-5.18
pi@raspberrypi:~/.wine/drive_c/windows/system32 $ wine regsvr32.exe prntvpt.dll
Box86 with Dynarec v0.1.5 416e1612 built on Nov 18 2020 04:35:38
Box86 with Dynarec v0.1.5 416e1612 built on Nov 18 2020 04:35:38
Box86 with Dynarec v0.1.5 416e1612 built on Nov 18 2020 04:35:38
0050:err:ole:start_rpcss Failed to start RpcSs service
0050:err:ole:start_rpcss Failed to start RpcSs service
003c:err:service:process_send_command receiving command result timed out
003c:fixme:service:scmdatabase_autostart_services Auto-start service L"MountMgr" failed to start: 1053
Box86 with Dynarec v0.1.5 416e1612 built on Nov 18 2020 04:35:38
wine: Call from 7B00F969 to unimplemented function prntvpt.dll.DllRegisterServer, aborting
wine: Unimplemented function prntvpt.dll.DllRegisterServer called at address 7B00F969 (thread 0024), starting debugger...
0024:err:seh:start_debugger Couldn't start debugger L"winedbg --auto 32 128" (1359)
Read the Wine Developers Guide on how to set up winedbg or another debugger
5589|SIGSEGV @(nil) (???) (x86pc=0x7bc56833/???:"???", esp=0x7f29ff6c), for accessing (nil) (code=1), db=(nil)((nil):(nil)/(nil):(nil)/???)
0024:err:seh:NtRaiseException Unhandled exception code c0000005 flags 0 addr 0x7bc56833
pi@raspberrypi:~/.wine/drive_c/windows/system32 $ wine --version
Box86 with Dynarec v0.1.5 416e1612 built on Nov 18 2020 04:35:38
wine-5.21
pi@raspberrypi:~/.wine/drive_c/windows/system32 $ wine regsvr32.exe prntvpt.dll
Box86 with Dynarec v0.1.5 416e1612 built on Nov 18 2020 04:35:38
Box86 with Dynarec v0.1.5 416e1612 built on Nov 18 2020 04:35:38
Box86 with Dynarec v0.1.5 416e1612 built on Nov 18 2020 04:35:38
0050:err:ole:start_rpcss Failed to start RpcSs service
Box86 with Dynarec v0.1.5 416e1612 built on Nov 18 2020 04:35:38
wine: Call from 7B00FB19 to unimplemented function prntvpt.dll.DllRegisterServer, aborting
wine: Unimplemented function prntvpt.dll.DllRegisterServer called at address 7B00FB19 (thread 0024), starting debugger...
0024:err:seh:start_debugger Couldn't start debugger L"winedbg --auto 32 128" (1359)
Read the Wine Developers Guide on how to set up winedbg or another debugger
5971|SIGSEGV @(nil) (???) (x86pc=0x7bc55b83/???:"???", esp=0x7f2aff6c), for accessing (nil) (code=1), db=(nil)((nil):(nil)/(nil):(nil)/???)
0024:err:seh:NtRaiseException Unhandled exception code c0000005 flags 0 addr 0x7bc55b83
pi@raspberrypi:~/.wine/drive_c/windows/system32 $ 
WheezyE commented 3 years ago

Oh! This same memory address error shows up on x86 wine too if I'm using a fresh wineprefix! My testing of the dotnet35sp1 installation via running just wine regsvr32.exe prntvpt.dll may be a flawed method for testing. I'm gonna do more testing

WheezyE commented 3 years ago

Ok, installing winetricks dotnet35sp1 (with wine-devel-5.21 and box86 a8b247cd on Raspbian [fresh wineprefix, wineboot, no mono, yes Gecko] dynarec disabled*) errors here:

0484:err:eventlog:ReportEventW L".NET Runtime version 2.0.50727.3053 - Fatal Execution Engine Error (7A097706) (80131506)"
0484:fixme:advapi:DeregisterEventSource (CAFE4242) stub
0484:err:virtual:virtual_setup_exception stack overflow 1532 bytes in thread 0484 addr 0x7bc47574 stack 0x7f8d0a04 (0x7f8d0000-0x7f8d1000-0x7f9d0000)

winetricks_dotnet35sp1_box86-a8b247cd_nodynarec.log (install time about 1.5hrs. Progress bar goes all the way to completion, then terminal window starts outputting info about dotnet20)

(* I turned off Dynarec since box86 416e1612 under the same conditions errored here: "C:\\windows\\Microsoft.NET\\Framework\\v2.0.50727\\", (null), 00000000): stub 011c:err:msiexec:custom_action_server Failed to read from custom action server pipe: 109 I've also always had to shut off dynarec in the past to get dotnet20 installed with previous box86 versions. Dotnet20 is first in the chain of installers that run in sequence to get dotnet35sp1 installed)

WheezyE commented 3 years ago

winetricks dotnet35sp1 on x86 linux (vmware) with wine-devel-5.21 installs ok with this log: x86_winetricks_dotnet35sp1.zip

WheezyE commented 3 years ago

Nice! dotnet20sp2 installs with dynarec now. Trying dotnet30 next...

WheezyE commented 3 years ago

Hm, installing dotnet30 now after dotnet20sp2 completed seems to hang and not continue.... (waiting about 10 minutes) dotnet30_box86log2.log.zip re-running after wineserver -k doesn't help.

I'm deleting the wineprefix, making a fresh wineprefix, then running winetricks dotnet30 next ...

WheezyE commented 3 years ago

Ok I've been trying to start fresh on tracking down this bug in dotnet30. (We already implicated the XPSEPSC installer in the DecryptFileA ("h:\\d48d932f260aa2728f048e911c\\" part of the log near the error, but the sigsegv's seem to be happening when the dotnet30 installer invokes the XPSEPSC installer(?), so I wanted to start from scratch on tracking the bug just in case I was missing something).

I've compared logs of the dotnet30 installer (wine-devel-5.21, fresh wineprefix) on x86 linux (expected behavior), on box86 (crash), and with box86_log=2 (crash) (1.2GB log file = 17MB 7zip file).

Logs were generated with: winetricks dotnet30 2>&1 | tee x86_winetricks_dotnet30.log (x86 linux) winetricks dotnet30 2>&1 | tee dotnet30_box86_log0.log (Pi4B) BOX86_LOG=2 winetricks dotnet30 2>&1 | tee dotnet30_box86_log2.log (Pi4B) I had to use Large Text File Viewer 5.2 to read the log file, save the large log smaller files, then open those files in notepad++ and search for text. Box86 a8b247c is on Raspbian [fresh wineprefix, wineboot, no mono, yes Gecko, dynarec enabled, winetricks is a patched version of 20200412]

I believe that the dotnet30 installer crashes here (dotnet30_box86_log0.log): Crash probably happens at the first instance of The .NET Runtime Optimization Service is started and paused.

Microsoft (R) CLR Native Image Generator - Version 2.0.50727.42
Copyright (C) Microsoft Corporation 1998-2002. All rights reserved.

The .NET Runtime Optimization Service is started and paused.
076c:fixme:msvcrt:__clean_type_info_names_internal (0x7d313a50) stub
077c:fixme:clusapi:GetNodeClusterState ((null),0122ECBC) stub!
077c:fixme:advapi:DecryptFileA ("h:\\d48d932f260aa2728f048e911c\\", 00000000): stub
Box86 with Dynarec v0.1.5 a8b247cd built on Nov 18 2020 08:46:21
0788:fixme:setupapi:pSetupGetGlobalFlags stub
25325|SIGSEGV @0x7ac13200 (???) (x86pc=0x1004cf0/???:"???", esp=0x133bc2c), for accessing (nil) (code=1), db=0x7c289788(0x7ac13200:0x7ac13248/0x1004cf0:0x1004cff/???)
25325|SIGSEGV @0x7ac53400 (???) (x86pc=0x1005313/???:"???", esp=0x133bc24), for accessing (nil) (code=1), db=0x7c08fd10(0x7ac53400:0x7ac534ac/0x1005313:0x1005348/???)
0788:fixme:wintrust:WinVerifyTrust unimplemented for 4
0788:fixme:wintrust:SOFTPUB_VerifyImageHash Cannot verify hash for pszObjId=(null)
25325|SIGSEGV @0x7ac53400 (???) (x86pc=0x1005313/???:"???", esp=0x133bc10), for accessing (nil) (code=1), db=0x7c08fd10(0x7ac53400:0x7ac534ac/0x1005313:0x1005348/???)
0788:err:ole:com_get_class_object class {acadf079-cbcd-4032-83f2-fa47c4db096f} not registered
0788:err:ole:com_get_class_object no class object {acadf079-cbcd-4032-83f2-fa47c4db096f} could be created for context 0x1
Box86 with Dynarec v0.1.5 a8b247cd built on Nov 18 2020 08:46:21
Box86 with Dynarec v0.1.5 a8b247cd built on Nov 18 2020 08:46:21
25325|SIGSEGV @0x79223700 (???) (x86pc=0x10057b0/???:"???", esp=0x133bc30), for accessing (nil) (code=1), db=0x7965ccb8(0x79223700:0x79223748/0x10057b0:0x10057bf/???)
25332|SIGSEGV @0x7ac53400 (???) (x86pc=0x1005313/???:"???", esp=0x791efd50), for accessing (nil) (code=1), db=0x7c08fd10(0x7ac53400:0x7ac534ac/0x1005313:0x1005348/???)
Warning, suspicious Seg: emu=0x796669e8, seg=4, emu->segs[]=0xaa40
Warning, suspicious Seg: emu=0x796669e8, seg=4, emu->segs[]=0xaa40
Box86 with Dynarec v0.1.5 a8b247cd built on Nov 18 2020 08:46:21
07a8:fixme:ntdll:NtQuerySystemInformation info_class SYSTEM_PERFORMANCE_INFORMATION
Microsoft (R) CLR Native Image Generator - Version 2.0.50727.42
Copyright (C) Microsoft Corporation 1998-2002. All rights reserved.

In the expected behavior log (x86_winetricks_dotnet30.log), this part should say:

Microsoft (R) CLR Native Image Generator - Version 2.0.50727.42
Copyright (C) Microsoft Corporation 1998-2002. All rights reserved.

The .NET Runtime Optimization Service is started and paused.
0758:fixme:msvcrt:__clean_type_info_names_internal (0x64083a50) stub
0764:fixme:clusapi:GetNodeClusterState ((null),0031ECBC) stub!
0764:fixme:advapi:DecryptFileA ("y:\\ee18cfdc1f4aa9cd389a13b0232833\\", 00000000): stub
0770:fixme:setupapi:pSetupGetGlobalFlags stub
0770:fixme:wintrust:WinVerifyTrust unimplemented for 4
0770:fixme:wintrust:SOFTPUB_VerifyImageHash Cannot verify hash for pszObjId=(null)
0770:err:ole:com_get_class_object class {acadf079-cbcd-4032-83f2-fa47c4db096f} not registered
0770:err:ole:com_get_class_object no class object {acadf079-cbcd-4032-83f2-fa47c4db096f} could be created for context 0x1
0770:fixme:sfc:SRSetRestorePointA 0031BD3C 0031B8D8
0770:fixme:sfc:SfcConnectToServer 0
0770:fixme:wintrust:CryptCATGetCatAttrInfo 00177670, L"SPAttr"
0770:fixme:wintrust:CryptCATGetCatAttrInfo 001963E8, L"SPAttr"
0770:fixme:wintrust:CryptCATGetCatAttrInfo 00113B18, L"SPLevel"
0770:fixme:wintrust:CryptCATGetCatAttrInfo 001963E8, L"SPLevel"
0770:fixme:wintrust:SOFTPUB_VerifyImageHash Cannot verify hash for pszObjId=(null)
0790:fixme:ntdll:EtwRegisterTraceGuidsW (010182D6, 01099138, {aefe45f4-8548-42b4-b1c8-25673b07ad8b}, 1, 0031FDD8, (null), (null), 01099140): stub
0790:fixme:ntdll:EtwRegisterTraceGuidsW   register trace class {aefe45f4-8548-42b4-b1c8-25673b07ad8b}
0790:fixme:heap:RtlSetHeapInformation 00000000 1 00000000 0 stub
0790:fixme:advapi:RegisterEventSourceW ((null),L"Microsoft-Windows-SpoolerFilterPipelineSVC"): stub
0790:fixme:psdrv:PSDRV_UpdateDevCaps Can't find page
0790:fixme:psdrv:PSDRV_UpdateDevCaps Can't find page
0790:fixme:psdrv:PSDRV_UpdateDevCaps Can't find page
0790:fixme:winspool:AddPrintProcessorW ((null),L"Windows NT x86",L"filterpipelineprintproc.dll",L"MS_XPS"): stub
0790:fixme:ntdll:EtwUnregisterTraceGuids deadbeef: stub
0770:fixme:setupapi:pSetupGetGlobalFlags stub
0770:fixme:setupapi:pSetupGetGlobalFlags stub
0770:fixme:advapi:RegisterEventSourceA ((null),"NtServicePack"): stub
0770:fixme:advapi:RegisterEventSourceW (L"",L"NtServicePack"): stub
0770:fixme:advapi:ReportEventA (CAFE4242,0x0004,0x0000,0x400e1119,00CB4A50,0x0002,0x00000000,0031BD50,00000000): stub
0770:fixme:advapi:ReportEventW (CAFE4242,0x0004,0x0000,0x400e1119,00CB4A50,0x0002,0x00000000,00132650,00000000): stub
0770:fixme:advapi:DeregisterEventSource (CAFE4242) stub
07bc:fixme:ntdll:NtQuerySystemInformation info_class SYSTEM_PERFORMANCE_INFORMATION
Microsoft (R) CLR Native Image Generator - Version 2.0.50727.42
Copyright (C) Microsoft Corporation 1998-2002. All rights reserved.

The .NET Runtime Optimization Service is started and paused.
07bc:fixme:msvcrt:__clean_type_info_names_internal (0x64083a50) stub
00f8:fixme:advapi:LsaOpenPolicy ((null),0031D158,0x00000001,0031D14C) stub
00f8:fixme:security:GetWindowsAccountDomainSid (0031D0D8 018EA64C 0031D0D4): semi-stub
00f8:fixme:secur32:GetComputerObjectNameW NameFormat 7 not implemented
00f8:fixme:advapi:LsaClose (0000CAFE) stub
00f8:fixme:advapi:LsaOpenPolicy ((null),0031D158,0x00000001,0031D14C) stub
00f8:fixme:security:GetWindowsAccountDomainSid (0031D0D8 018EB044 0031D0D4): semi-stub
00f8:fixme:secur32:GetComputerObjectNameW NameFormat 7 not implemented
00f8:fixme:advapi:LsaClose (0000CAFE) stub
00f8:fixme:advapi:LsaOpenPolicy ((null),0031D158,0x00000001,0031D14C) stub
00f8:fixme:security:GetWindowsAccountDomainSid (0031D0D8 018F2E6C 0031D0D4): semi-stub
00f8:fixme:secur32:GetComputerObjectNameW NameFormat 7 not implemented
00f8:fixme:advapi:LsaClose (0000CAFE) stub
00f8:fixme:advapi:LsaOpenPolicy ((null),0031D158,0x00000001,0031D14C) stub
00f8:fixme:security:GetWindowsAccountDomainSid (0031D0D8 018F1FC4 0031D0D4): semi-stub
00f8:fixme:secur32:GetComputerObjectNameW NameFormat 7 not implemented
00f8:fixme:advapi:LsaClose (0000CAFE) stub
00f8:fixme:advapi:LsaOpenPolicy ((null),0031D158,0x00000001,0031D14C) stub
00f8:fixme:security:GetWindowsAccountDomainSid (0031D0D8 018F2E6C 0031D0D4): semi-stub
00f8:fixme:secur32:GetComputerObjectNameW NameFormat 7 not implemented
00f8:fixme:advapi:LsaClose (0000CAFE) stub

So I tracked down an area of the 1.2GB dotnet30_box86_log2.log file that I believe corresponds to the same area in the logs above (near line 7,013,342 of the 1.2GB file). I distilled just the buggy area (I believe) to this file: important_bit_2.zip . I believe the bug is in there somewhere, possibly here:

22527|0xb5c929b1: Calling ioctl(5, 0x82187201, 0x133ad48) => return 0x00000000
22527|0xb5c92aa7: Calling close (00000005, 82187201, 0133AD48...) => return 0x00000000
22527|0xb5c9256f: Calling opendir("/home/pi/.wine/dosdevices/h:/e71be30d0eb8ae492cc4763511ab0c12/update") => return 0x7C229A48
22527|0xb5c925a6: Calling readdir64 (7C229A48, 82187201, 0133AD48...) => return 0x7C229A68
22527|0xb5c925c5: Calling strlen(0x7c229a7b(".")) => return 0x00000001
22527|0xb5c925a6: Calling readdir64 (7C229A48, 7C229A7B, 0133AF78...) => return 0x7C229A80
22527|0xb5c925c5: Calling strlen(0x7c229a93("..")) => return 0x00000002
22527|0xb5c925a6: Calling readdir64 (7C229A48, 7C229A93, 0133AF78...) => return 0x7C229A98
22527|0xb5c925c5: Calling strlen(0x7c229aab("xpsepsc.cat")) => return 0x0000000B
22527|0xb5c925a6: Calling readdir64 (7C229A48, 7C229AAB, 0133AF78...) => return 0x7C229AB8
22527|0xb5c925c5: Calling strlen(0x7c229acb("spcustom.dll")) => return 0x0000000C
22527|0xb5c925a6: Calling readdir64 (7C229A48, 7C229ACB, 0133AF78...) => return 0x7C229AD8
22527|0xb5c925c5: Calling strlen(0x7c229aeb("updspapi.dll")) => return 0x0000000C
22527|0xb5c925a6: Calling readdir64 (7C229A48, 7C229AEB, 0133AF78...) => return 0x7C229AF8
22527|0xb5c925c5: Calling strlen(0x7c229b0b("update.exe")) => return 0x0000000A
22527|0xb5c925a6: Calling readdir64 (7C229A48, 00000005, 0133AF78...) => return 0x7C229B18
22527|0xb5c925c5: Calling strlen(0x7c229b2b("update.inf")) => return 0x0000000A
22527|0xb5c925a6: Calling readdir64 (7C229A48, 00000005, 0133AF78...) => return 0x7C229B38
22527|0xb5c925c5: Calling strlen(0x7c229b4b("update.ver")) => return 0x0000000A
22527|0xb5c925a6: Calling readdir64 (7C229A48, 00000005, 0133AF78...) => return 0x00000000
22527|0xb5c92816: Calling closedir (7C229A48, 00000005, 0133AF78...) => return 0x00000000
22527|0xb5c95a7d: Calling free (7C229790, 00000044, 00000001...) => return 0x7C229790
22527|0xb5cccc74: Calling sysinfo (0133B190, 00000044, 00000001...) => return 0x00000000
22527|0xb5cb029b: Calling pthread_sigmask (00000000, B5CFA040, 0133BAB0...) => return 0x00000000
22527|0xb5cb01b0: Calling writev (00000003, 0133BA60, 00000002...) => return 0x00000076
22527|0xb5caf354: Calling read (00000004, 0133BB84, 00000040...) => return 0x00000040
22527|0xb5cb02b2: Calling pthread_sigmask (00000002, 0133BAB0, 00000000...) => return 0x00000000
22527|0xb5cb029b: Calling pthread_sigmask (00000000, B5CFA040, 0133B950...) => return 0x00000000
22527|0xb5cb01b0: Calling writev (00000003, 0133B900, 00000002...) => return 0x00000054
22527|0xb5caf354: Calling read (00000004, 0133BA44, 00000040...) => return 0x00000040
22527|0xb5caf354: Calling read (00000004, 0133BC38, 0000001C...) => return 0x0000001C
22527|0xb5cb02b2: Calling pthread_sigmask (00000002, 0133B950, 00000000...) => return 0x00000000
22527|0xb5cb029b: Calling pthread_sigmask (00000000, B5CFA040, 0133B950...) => return 0x00000000
22527|0xb5cb01b0: Calling writev (00000003, 0133B900, 00000002...) => return 0x00000054
22527|0xb5caf354: Calling read (00000004, 0133BA44, 00000040...) => return 0x00000040
22527|0xb5caf354: Calling read (00000004, 0133BC38, 0000001C...) => return 0x0000001C
22527|0xb5cb02b2: Calling pthread_sigmask (00000002, 0133B950, 00000000...) => return 0x00000000
22527|0xb5cb029b: Calling pthread_sigmask (00000000, B5CFA040, 0133BBB0...) => return 0x00000000
22527|0xb5cb01ff: Calling write (00000003, 0133BC80, 00000040...) => return 0x00000040
22527|0xb5caf354: Calling read (00000004, 0133BC80, 00000040...) => return 0x00000040
22527|0xb5cb02b2: Calling pthread_sigmask (00000002, 0133BBB0, 00000000...) => return 0x00000000
22527|0xb5cb029b: Calling pthread_sigmask (00000000, B5CFA040, 0133BA90...) => return 0x00000000
22527|0xb5cb01b0: Calling writev (00000003, 0133BA40, 00000002...) => return 0x00000090
22527|0xb5caf354: Calling read (00000004, 0133BB64, 00000040...) => return 0x00000040
22527|0xb5cb02b2: Calling pthread_sigmask (00000002, 0133BA90, 00000000...) => return 0x00000000
22527|0xb5cb029b: Calling pthread_sigmask (00000000, B5CFA040, 0133B930...) => return 0x00000000
22527|0xb5cb01b0: Calling writev (00000003, 0133B8E0, 00000002...) => return 0x00000054
22527|0xb5caf354: Calling read (00000004, 0133BA24, 00000040...) => return 0x00000040
22527|0xb5caf354: Calling read (00000004, 0133BC14, 00000004...) => return 0x00000004
22527|0xb5cb02b2: Calling pthread_sigmask (00000002, 0133B930, 00000000...) => return 0x00000000
22527|0xb5cb029b: Calling pthread_sigmask (00000000, B5CFA040, 0133BB90...) => return 0x00000000
22527|0xb5cb01ff: Calling write (00000003, 0133BC60, 00000040...) => return 0x00000040
22527|0xb5caf354: Calling read (00000004, 0133BC60, 00000040...) => return 0x00000040
22527|0xb5cb02b2: Calling pthread_sigmask (00000002, 0133BB90, 00000000...) => return 0x00000000
22527|0xb5cb029b: Calling pthread_sigmask (00000000, B5CFA040, 0133BAB0...) => return 0x00000000
22527|0xb5cb01b0: Calling writev (00000003, 0133BA60, 00000002...) => return 0x0000009E
22527|0xb5caf354: Calling read (00000004, 0133BB84, 00000040...) => return 0x00000040
22527|0xb5cb02b2: Calling pthread_sigmask (00000002, 0133BAB0, 00000000...) => return 0x00000000
22527|0xb5cb029b: Calling pthread_sigmask (00000000, B5CFA040, 0133B950...) => return 0x00000000
22527|0xb5cb01b0: Calling writev (00000003, 0133B900, 00000002...) => return 0x0000004E
22527|0xb5caf354: Calling read (00000004, 0133BA44, 00000040...) => return 0x00000040
22527|0xb5caf354: Calling read (00000004, 0133BC34, 00000008...) => return 0x00000008
22527|0xb5cb02b2: Calling pthread_sigmask (00000002, 0133B950, 00000000...) => return 0x00000000
22527|0xb5cb029b: Calling pthread_sigmask (00000000, B5CFA040, 0133B950...) => return 0x00000000
22527|0xb5cb01b0: Calling writev (00000003, 0133B900, 00000002...) => return 0x0000004E
22527|0xb5caf354: Calling read (00000004, 0133BA44, 00000040...) => return 0x00000040
22527|0xb5caf354: Calling read (00000004, 0133BC34, 00000008...) => return 0x00000008
22527|0xb5cb02b2: Calling pthread_sigmask (00000002, 0133B950, 00000000...) => return 0x00000000
22527|0xb5c95959: Calling strlen(0x63f82f88("/home/pi/.wine")) => return 0x0000000E
22527|0xb5c95970: Calling malloc (00000126, 0133B608, 01132784...) => return 0x7C23B6F0
22527|0xb5c9598d: Calling stpcpy (7C23B6F0, 63F82F88, 01132784...) => return 0x7C23B6FE
22527|0xb5c936c6: Calling __xstat64(3, 0x7c23b6f0("/home/pi/.wine/dosdevices/c:/"), 0x133b424) => return 0x00000000
22527|0xb5c8f73f: Calling __lxstat64(3, 0x7c23b6f0("/home/pi/.wine/dosdevices/c:/"), 0x133ba44) => return 0x00000000
22527|0xb5c8f805: Calling strlen(0x7c23b6f0("/home/pi/.wine/dosdevices/c:/")) => return 0x0000001D
22527|0xb5c8f813: Calling malloc (00000021, 7C23B6F0, 0133BA44...) => return 0x7C23B820
22527|0xb5c8f849: Calling memcpy (7C23B820, 7C23B6F0, 0000001D...) => return 0x7C23B820
22527|0xb5c8f862: Calling __xstat64(3, 0x7c23b820("/home/pi/.wine/dosdevices/c://.."), 0x133b990) => return 0x00000000
22527|0xb5c8f8a2: Calling free (7C23B820, 7C23B820, 0133B990...) => return 0x00000006
22527|0xb5c9903e: Calling free (7C23B6F0, 0133BBF4, 0133BB88...) => return 0x00000000
22527|0xb5c95959: Calling strlen(0x63f82f88("/home/pi/.wine")) => return 0x0000000E
22527|0xb5c95970: Calling malloc (00000126, 0000001C, 00000001...) => return 0x7C23C478
22527|0xb5c9598d: Calling stpcpy (7C23C478, 63F82F88, 00000001...) => return 0x7C23C486
22527|0xb5c936c6: Calling __xstat64(3, 0x7c23c478("/home/pi/.wine/dosdevices/c:/"), 0x133b424) => return 0x00000000
22527|0xb5c8f73f: Calling __lxstat64(3, 0x7c23c478("/home/pi/.wine/dosdevices/c:/"), 0x133ba44) => return 0x00000000
22527|0xb5c8f805: Calling strlen(0x7c23c478("/home/pi/.wine/dosdevices/c:/")) => return 0x0000001D
22527|0xb5c8f813: Calling malloc (00000021, 7C23C478, 0133BA44...) => return 0x7C23C5A8
22527|0xb5c8f849: Calling memcpy (7C23C5A8, 7C23C478, 0000001D...) => return 0x7C23C5A8
22527|0xb5c8f862: Calling __xstat64(3, 0x7c23c5a8("/home/pi/.wine/dosdevices/c://.."), 0x133b990) => return 0x00000000
22527|0xb5c8f8a2: Calling free (7C23C5A8, 7C23C5A8, 0133B990...) => return 0x00000006
22527|0xb5c9903e: Calling free (7C23C478, 0133BBF4, 0133BB88...) => return 0x00000000
22527|0xb5cb029b: Calling pthread_sigmask (00000000, B5CFA040, 0133BBB0...) => return 0x00000000
22527|0xb5cb01ff: Calling write (00000003, 0133BC80, 00000040...) => return 0x00000040
22527|0xb5caf354: Calling read (00000004, 0133BC80, 00000040...) => return 0x00000040
22527|0xb5cb02b2: Calling pthread_sigmask (00000002, 0133BBB0, 00000000...) => return 0x00000000
22527|0xb5cb029b: Calling pthread_sigmask (00000000, B5CFA040, 0133BAB0...) => return 0x00000000
22527|0xb5cb01b0: Calling writev (00000003, 0133BA60, 00000002...) => return 0x00000058
22527|0xb5caf354: Calling read (00000004, 0133BB84, 00000040...) => return 0x00000040
22527|0xb5cb02b2: Calling pthread_sigmask (00000002, 0133BAB0, 00000000...) => return 0x00000000
22527|SIGSEGV @0x7ac13100 (???) (x86pc=0x1004cf0/???:"???", esp=0x133bc2c), for accessing (nil) (code=1), db=0x7c2421f8(0x7ac13100:0x7ac13148/0x1004cf0:0x1004cff/???)
Sigactionhanlder for signal #11 called (jump to 0xb5cb28d0/???)
22527|signal function handler 0xb5cb28d0 called, ESP=0x210fcb0

I also did a BOX86_LOG=2 (and regular logging) on the XPSEPSC installer and its SIGSEGV's (XPSEPSCexe_logs.zip) pi@raspberrypi:~/.cache/winetricks/dotnet30/unzipped/wcu/XPS $ BOX86_LOG=2 wine XPSEPSC-x86-en-US.exe 2>&1 | tee XPSEPSCexe_log2.log

Here's the first SIGSEGV in XPSEPSC:

26412|0xb5c2a862: Calling __xstat64(3, 0x6452e418("/home/pi/.wine/dosdevices/c://.."), 0x133b990) => return 0x00000000
26412|0xb5c2a8a2: Calling free (6452E418, 6452E418, 0133B990...) => return 0x0000000E
26412|0xb5c3403e: Calling free (6452E288, 0133BBF4, 0133BB88...) => return 0x00000000
26412|0xb5c4b29b: Calling pthread_sigmask (00000000, B5C95040, 0133BBB0...) => return 0x00000000
26412|0xb5c4b1ff: Calling write (00000003, 0133BC80, 00000040...) => return 0x00000040
26412|0xb5c4a354: Calling read (00000004, 0133BC80, 00000040...) => return 0x00000040
26412|0xb5c4b2b2: Calling pthread_sigmask (00000002, 0133BBB0, 00000000...) => return 0x00000000
26412|0xb5c4b29b: Calling pthread_sigmask (00000000, B5C95040, 0133BAB0...) => return 0x00000000
26412|0xb5c4b1b0: Calling writev (00000003, 0133BA60, 00000002...) => return 0x00000058
26412|0xb5c4a354: Calling read (00000004, 0133BB84, 00000040...) => return 0x00000040
26412|0xb5c4b2b2: Calling pthread_sigmask (00000002, 0133BAB0, 00000000...) => return 0x00000000
26412|SIGSEGV @0x7c4dde00 (???) (x86pc=0x1004cf0/???:"???", esp=0x133bc2c), for accessing (nil) (code=1), db=0x64534008(0x7c4dde00:0x7c4dde48/0x1004cf0:0x1004cff/???)
Sigactionhanlder for signal #11 called (jump to 0xb5c4d8d0/???)
26412|signal function handler 0xb5c4d8d0 called, ESP=0x210fcb0
Run X86 (0x636103e8), EIP=0xb5c4d8d0, Stack=0xb60aa020
26412|0xb5c684cd: Calling pthread_mutex_lock(0xb5c95004) => return 0x00000000
26412|0xb5c68434: Calling pthread_mutex_unlock (B5C95004, 00000000, 00000000...) => return 0x00000000
Context has been changed in Sigactionhanlder, doing longjmp to resume emu
26412|0xb5c4c7fe: Calling pthread_sigmask (00000000, B5C95040, 0133B078...) => return 0x00000000
WheezyE commented 3 years ago

Do you know what is the behaviour of "regsvr32.exe prntvpt.dll" on a a regular x86 linux with wine?

I think you were right that the 7B034B1F memory address error was wine's fault this whole time. I feel foolish.

The above post is still valid and I still haven't gotten update.exe to run on box86 yet, but ever since I realized that the wine regsvr32.exe prntvpt.dll method was flawed (wine: Call from 7B034B1F to unimplemented function prntvpt.dll.DllRegisterServer, aborting return 0x0000005B actually did come up in regular x86 linux wine - I'm not sure why it was working before though- maybe I didn't realize dotnet20 was already installed / I think dotnet20 is a pre-req for updater.exe), I've been thinking I should go back to older box86 builds and re-test just the XPSEPSC updater.exe after installing dotnet20 into a fresh wineprefix.

I'll probably get some time to test all this on Sunday-Wed

WheezyE commented 3 years ago

Updating this log for posterity ( / anybody doing Google searches for error messages) after we've been celebrating on the Discord :)

Commit b61bb908a23efdf64695f85a0ad4d584b208006e got dotnet30 to install!!! Holy crap! Nicely done Seb! Even ExaGear couldn't install dotnet30.

Next step in the install chain is dotnet45sp1. I'll test this after work today!

WheezyE commented 3 years ago

Alright, got home and started testing dotnet35sp1 installation.

Testing takes a while, but I've tried a few things so far and will post them. There seems to be some kind of installation problem with the way dotnet 2.0a installs itself, which makes the dotnet35sp1 installer not like the system's configuration for some reason. x86 linux doesn't have the problem.

Running winetricks dotnet35sp1 after having installed dotnet20 and dotnet30 into a fresh wineprefix crashes with the error below (after about 15 minutes of install). I get the same error when installing dotnet35sp1 on a fresh wineprefix. (The crash actually just looks like the terminal window hanging without any further output, but the progress bar of the installer .net35 window continues until it stalls at 100% and never finishes after 30 minutes of waiting):

00ec:fixme:imagehlp:BindImageEx (0, "C:\\windows\\Microsoft.NET\\Framework\\v2.0.50727\\cscomp.dll", "C:\\windows\\Microsoft.NET\\Framework\\v2.0.50727\\", (null), 00000000): stub
01b4:fixme:ntdll:NtQuerySystemInformation info_class SYSTEM_PERFORMANCE_INFORMATION
01bc:err:ole:com_get_class_object class {4e14fba2-2e22-11d1-9964-00c04fbbb345} not registered
01bc:err:ole:create_server class {4e14fba2-2e22-11d1-9964-00c04fbbb345} not registered
01bc:fixme:ole:com_get_class_object CLSCTX_REMOTE_SERVER not supported
01bc:err:ole:com_get_class_object no class object {4e14fba2-2e22-11d1-9964-00c04fbbb345} could be created for context 0x15
0298:fixme:mofcomp:wmain stub

....

0478:err:eventlog:ReportEventW L".NET Runtime version 2.0.50727.3053 - Fatal Execution Engine Error (7A097706) (80131506)"
0478:fixme:advapi:DeregisterEventSource (CAFE4242) stub
0478:err:virtual:virtual_setup_exception stack overflow 1532 bytes in thread 0478 addr 0x7bc47574 stack 0x7f4d0a04 (0x7f4d0000-0x7f4d1000-0x7f5d0000)

This looks like a wine error, except that x86 linux wine of the same version doesn't have this problem. Also, my Googling indicates that the .NET Runtime Execution Engine Error implies a bad installation of dotnet.

I'm in the process of generating a BOX86_LOG=2 log & a x86 linux log of the dotnet35sp1 installation now.

After that, I'll try installing dotnet35sp1 on box86 without dynarec enabled to see if that changes anything.

If that doesn't work, I'll let the installer run overnight and see if it ever actually completes.

WheezyE commented 3 years ago

Expected behavior from a successful dotnet35sp1 install on x86 Linux (Debian 10) wine-devel-5.21, fresh wineprefix: winetricks dotnet35sp1 2>&1 | tee x86_winetricks_dotnet35sp1.log --> x86_winetricks_dotnet35sp1.log

Behavior from box86 frozen dotnet35sp1 install on Pi4 (2GB) wine-devel-5.21, fresh wineprefix: BOX86_LOG=1 winetricks dotnet35sp1 2>&1 | tee box86_dotnet35sp1_log1.log --> box86_dotnet35sp1_log1.log (terminal window hangs here, progress bar goes to completion after 15 minutes, but window never finishes after 10 more minutes) frozed_terminal

WheezyE commented 3 years ago

Hm, also getting stack overflow with BOX86_DYNAREC=0 winetricks dotnet35sp1 | tee box86_dynarec0_winetricks_dotnet35sp1_log0.log ---> box86_dynarec0_winetricks_dotnet35sp1_log0.log

047c:err:eventlog:ReportEventW L".NET Runtime version 2.0.50727.3053 - CLR: Fatal Execution Engine Error (7A097706) (80131506)"
047c:fixme:advapi:DeregisterEventSource (CAFE4242) stub
047c:fixme:advapi:RegisterEventSourceW ((null),L".NET Runtime"): stub
047c:fixme:advapi:ReportEventW (CAFE4242,0x0001,0x0000,0x000003ff,00000000,0x0001,0x00000000,7F8D1E2C,00000000): stub
047c:err:eventlog:ReportEventW L".NET Runtime version 2.0.50727.3053 - Fatal Execution Engine Error (7A097706) (80131506)"
047c:fixme:advapi:DeregisterEventSource (CAFE4242) stub
047c:err:virtual:virtual_setup_exception stack overflow 1532 bytes in thread 047c addr 0x7bc47574 stack 0x7f8d0a04 (0x7f8d0000-0x7f8d1000-0x7f9d0000)

Not sure if this helps, but when the dotnet35sp1 installer exe's runs, it extracts its contents to a temp directory. Inside there is a Netfx20a.msi which can't be run on its own in x86 wine (because it will prompt the user to please use the setup.exe instead).

If I try to run this .msi on box86 with wine msiexec /i Netfx20a.msi though, it crashes before the window prompting us to use the Setup exe pops up. There aren't any obvious box86 errors though, just wine errors.

I'm wondering if this Netfx20a.msi might be its own type of dotnet20 (called .net2.0a) which gets run during dotnet35sp1 install and then crashes?

If I run wine uninstaller then dotnet20sp2 is an uninstall options (so it appears registered in the wine registry as having an uninstaller, even if it is not actually installed) and no other dotnets appear like they should if dotnet35sp1 is installed.

(These dotnets appear in the x86 linux wine uninstaller when dotnet35sp1 is fully installed) dotnet35sp1 components

I think my next plan is to try to install dotnet30 again into a fresh wineprefix, then try to install portions of the extracted contents of the dotnet35sp1 exe to try to match that list of programs from my x86 linux wineprefix (pictured above).

WheezyE commented 3 years ago

Hm winetricks msxml3 (with or without dynarec) crashes too now. Maybe this is an msi problem of some kind?

Edit: this was after I made a fresh wineprefix, tried and failed to install dotnet40 and then tried to install msxml3


------------------------------------------------------
Working around wine bug 26925 -- Forcing quiet install
------------------------------------------------------
Executing wine msiexec /i msxml3.msi /q
Box86 with Dynarec v0.1.5 e449a4e2 built on Nov 22 2020 04:51:02
Box86 with Dynarec v0.1.5 e449a4e2 built on Nov 22 2020 04:51:02
Box86 with Dynarec v0.1.5 e449a4e2 built on Nov 22 2020 04:51:02
022c:fixme:file:NtLockFile I/O completion on lock not implemented yet
022c:fixme:ntdll:NtQuerySystemInformation info_class SYSTEM_PERFORMANCE_INFORMATION
022c:err:mscoree:LoadLibraryShim error reading registry key for installroot
022c:err:mscoree:LoadLibraryShim error reading registry key for installroot
022c:err:mscoree:LoadLibraryShim error reading registry key for installroot
022c:err:mscoree:LoadLibraryShim error reading registry key for installroot
0298:fixme:setupapi:SetupQueryInfOriginalFileInformationW (7C2D0F58, 0, 00000000, 7D29CFB8): semi-stub
02a4:fixme:setupapi:SetupPromptReboot 0043DA10, 00000000, 1: stub
Segmentation fault
------------------------------------------------------
Note: command wine msiexec /i msxml3.msi /q returned status 139. Aborting.
------------------------------------------------------
ptitSeb commented 3 years ago

That error reading registry key is certainly not normal. I'll try to check that later.

WheezyE commented 3 years ago

Thanks!

Also msxml3 installs now on a fresh wineprefix 🤦‍♂️ sorry there are so many moving parts to this. I’ll keep testing today

WheezyE commented 3 years ago

The contents of the dotnet35sp1 archive don't want to install on their own - they just tell me to run the main installer.

In another test: I found that dotnet30sp1 won't install (though dotnet30 does install). dotnet30sp1 installer first installs dotnet20sp1, then tries to reboot wine, then crashes:

0154:err:eventlog:ReportEventW L".NET Runtime version 2.0.50727.1433 - Fatal Execution Engine Error (78BFEE24) (80131506)"
0154:fixme:advapi:DeregisterEventSource (CAFE4242) stub
0154:fixme:advapi:RegisterEventSourceW ((null),L".NET Runtime"): stub
0154:fixme:advapi:ReportEventW (CAFE4242,0x0001,0x0000,0x000003ff,00000000,0x0001,0x00000000,7F4D5A90,00000000): stub
0154:err:eventlog:ReportEventW L".NET Runtime version 2.0.50727.1433 - Fatal Execution Engine Error (78BFEE24) (80131506)"
0154:fixme:advapi:DeregisterEventSource (CAFE4242) stub
0154:fixme:advapi:RegisterEventSourceW ((null),L".NET Runtime"): stub
0154:fixme:advapi:ReportEventW (CAFE4242,0x0001,0x0000,0x000003ff,00000000,0x0001,0x00000000,7F4D5118,00000000): stub
0154:err:eventlog:ReportEventW L".NET Runtime version 2.0.50727.1433 - Fatal Execution Engine Error (78BFEE24) (80131506)"
0154:fixme:advapi:DeregisterEventSource (CAFE4242) stub
0154:fixme:advapi:RegisterEventSourceW ((null),L".NET Runtime"): stub
0154:fixme:advapi:ReportEventW (CAFE4242,0x0001,0x0000,0x000003ff,00000000,0x0001,0x00000000,7F4D47A0,00000000): stub
0154:err:eventlog:ReportEventW L".NET Runtime version 2.0.50727.1433 - Fatal Execution Engine Error (78BFEE24) (80131506)"
0154:fixme:advapi:DeregisterEventSource (CAFE4242) stub
0154:fixme:advapi:RegisterEventSourceW ((null),L".NET Runtime"): stub
0154:fixme:advapi:ReportEventW (CAFE4242,0x0001,0x0000,0x000003ff,00000000,0x0001,0x00000000,7F4D3E28,00000000): stub
0154:err:eventlog:ReportEventW L".NET Runtime version 2.0.50727.1433 - Fatal Execution Engine Error (78BFEE24) (80131506)"
0154:fixme:advapi:DeregisterEventSource (CAFE4242) stub
0154:fixme:advapi:RegisterEventSourceW ((null),L".NET Runtime"): stub
0154:fixme:advapi:ReportEventW (CAFE4242,0x0001,0x0000,0x000003ff,00000000,0x0001,0x00000000,7F4D2A24,00000000): stub
0154:err:eventlog:ReportEventW L".NET Runtime version 2.0.50727.1433 - CLR: Fatal Execution Engine Error (78BFEE24) (80131506)"
0154:fixme:advapi:DeregisterEventSource (CAFE4242) stub
0154:fixme:advapi:RegisterEventSourceW ((null),L".NET Runtime"): stub
0154:fixme:advapi:ReportEventW (CAFE4242,0x0001,0x0000,0x000003ff,00000000,0x0001,0x00000000,7F4D20AC,00000000): stub
0154:err:eventlog:ReportEventW L".NET Runtime version 2.0.50727.1433 - Fatal Execution Engine Error (78BFEE24) (80131506)"
0154:fixme:advapi:DeregisterEventSource (CAFE4242) stub
0154:err:virtual:virtual_setup_exception stack overflow 892 bytes in thread 0154 addr 0x7bc4757e stack 0x7f4d0c84 (0x7f4d0000-0x7f4d1000-0x7f5d0000)

I think that .NET Runtime 2.0.50727.1433 is related to dotnet20sp1, while 2.0.50727.3053 is related to dotnet20sp2.

Maybe these Engine Errors mean that box86 isn't fully installing .NET 2.0sp1 or .NET 2.0sp2 so that the installers finish but the installs are broken? I'm not sure how to test that idea

WheezyE commented 3 years ago

This error also crops up on dotnet35 (not sp1). I think it's something to do with dotnet20sp2, except that winetricks dotnet20sp2 seems to install fine on its own, which is very strange. Maybe dotnet20sp2 installs corrupted?

winetricks dotnet35

0474:err:eventlog:ReportEventW L".NET Runtime version 2.0.50727.1433 - CLR: Fatal Execution Engine Error (79FFEE24) (80131506)"
0474:fixme:advapi:DeregisterEventSource (CAFE4242) stub
0474:fixme:advapi:RegisterEventSourceW ((null),L".NET Runtime"): stub
0474:fixme:advapi:ReportEventW (CAFE4242,0x0001,0x0000,0x000003ff,00000000,0x0001,0x00000000,7F4D1E14,00000000): stub
0474:err:eventlog:ReportEventW L".NET Runtime version 2.0.50727.1433 - Fatal Execution Engine Error (79FFEE24) (80131506)"
0474:fixme:advapi:DeregisterEventSource (CAFE4242) stub
0474:err:virtual:virtual_setup_exception stack overflow 880 bytes in thread 0474 addr 0x7bc22f3d stack 0x7f4d0c90 (0x7f4d0000-0x7f4d1000-0x7f5d0000)
WheezyE commented 3 years ago

Thinking about all these tests: A corrupt dotnet20sp1 install would make sense since dotnet30 installs fine (which doesn't require dotnet20sp1, just dotnet20), but dotnet30sp1 doesn't install (which requires dotnet20sp1), and any further dotnets up to 3.5sp1 don't install either (which would rely on dotnet20sp1 too). Dotnet40+ are their own ecosystem and don't rely on the previous dotnets.

WheezyE commented 3 years ago

hm, I noticed some msxml3 errors on the last dotnet20sp1 install, so I installed winetricks msxml3 first before winetricks dotnet20sp2 (just installed sp2 without 20 or 20sp1 to try to circumvent whatever error was in 20sp1), then tried winetricks dotnet35sp1. I got different behavior this time from 35sp1's downloader - it seems to have actually downloaded files this time instead of just pretending to. But I still ended up with this buffer overflow:

0704:err:eventlog:ReportEventW L".NET Runtime version 2.0.50727.3053 - CLR: Fatal Execution Engine Error (7A097706) (80131506)"
0704:fixme:advapi:DeregisterEventSource (CAFE4242) stub
0704:fixme:advapi:RegisterEventSourceW ((null),L".NET Runtime"): stub
0704:fixme:advapi:ReportEventW (CAFE4242,0x0001,0x0000,0x000003ff,00000000,0x0001,0x00000000,7F4D1E2C,00000000): stub
0704:err:eventlog:ReportEventW L".NET Runtime version 2.0.50727.3053 - Fatal Execution Engine Error (7A097706) (80131506)"
0704:fixme:advapi:DeregisterEventSource (CAFE4242) stub
0704:err:virtual:virtual_setup_exception stack overflow 1532 bytes in thread 0704 addr 0x7bc47574 stack 0x7f4d0a04 (0x7f4d0000-0x7f4d1000-0x7f5d0000)

I have no idea why x86 linux wine doesn't need msxml3 but box86 wine does. Installing msxml3 did change the behavior of the program slightly though. Still no SIGSEGV's either. EDIT: None that I could see... I might log this and check the logs.

Also strange, msxml3 only installs sometimes and I have to turn off dynarec to install it. I can sometimes get it to install without dynarec if I wineboot and wineserver -k a few times and try BOX86_DYNAREC=0 winetricks msxml3 a couple times. A fresh wineprefix only helps sometimes - very weird.

My next plan is to do a winetricks msxml3 install again and then log this the dotnet35sp1 installer and see what other wine errors get thrown and maybe try to just fish those with wine components and see if that fixes stuff. I might also see if the behavior of dotnet20sp1 changes with msxml3 installed.

WheezyE commented 3 years ago

I decided to install msxml3 and then log dotnet30sp1 instead (since it should be installed before dotnet35sp1). I found SIGSEGV's:

0690:err:module:process_init L"C:\\windows\\Microsoft.NET\\Framework\\v2.0.50727\\mscorsvw.exe" not found
0688:fixme:msvcrt:__clean_type_info_names_internal (0x64083a50) stub
06a0:fixme:ntdll:NtQuerySystemInformation info_class SYSTEM_PERFORMANCE_INFORMATION

0798:fixme:ntdll:EtwRegisterTraceGuidsW (010182D6, 01099138, {aefe45f4-8548-42b4-b1c8-25673b07ad8b}, 1, 012BFDD8, (null), (null), 01099140): stub
0798:fixme:ntdll:EtwRegisterTraceGuidsW   register trace class {aefe45f4-8548-42b4-b1c8-25673b07ad8b}
0798:fixme:heap:RtlSetHeapInformation 00000000 1 00000000 0 stub
0798:fixme:advapi:RegisterEventSourceW ((null),L"Microsoft-Windows-SpoolerFilterPipelineSVC"): stub
0798:fixme:psdrv:PSDRV_UpdateDevCaps Can't find page
0798:fixme:psdrv:PSDRV_UpdateDevCaps Can't find page
0798:fixme:psdrv:PSDRV_UpdateDevCaps Can't find page
0798:fixme:winspool:AddPrintProcessorW ((null),L"Windows NT x86",L"filterpipelineprintproc.dll",L"MS_XPS"): stub
0798:fixme:ntdll:EtwUnregisterTraceGuids deadbeef: stub
Box86 with Dynarec v0.1.5 e449a4e2 built on Nov 22 2020 04:51:02
Box86 with Dynarec v0.1.5 e449a4e2 built on Nov 22 2020 04:51:02
26057|SIGSEGV @0x79249f00 (???) (x86pc=0x1005e78/???:"???", esp=0x133bc34), for accessing (nil) (code=1), db=0x78e50be8(0x79249f00:0x79249f48/0x1005e78:0x1005e87/???)
0778:fixme:setupapi:pSetupGetGlobalFlags stub
0778:fixme:setupapi:pSetupGetGlobalFlags stub
06a8:err:module:process_init L"C:\\windows\\Microsoft.NET\\Framework\\v2.0.50727\\mscorsvw.exe" not found
06a0:fixme:msvcrt:__clean_type_info_names_internal (0x64083a50) stub
06b8:fixme:ntdll:NtQuerySystemInformation info_class SYSTEM_PERFORMANCE_INFORMATION
06b8:fixme:msvcrt:__clean_type_info_names_internal (0x64083a50) stub
06cc:fixme:ntdll:NtQuerySystemInformation info_class SYSTEM_PERFORMANCE_INFORMATION
06cc:fixme:msvcrt:__clean_type_info_names_internal (0x64083a50) stub
06e0:fixme:ntdll:NtQuerySystemInformation info_class SYSTEM_PERFORMANCE_INFORMATION
06e0:fixme:msvcrt:__clean_type_info_names_internal (0x7d303a50) stub
06f4:fixme:ntdll:NtQuerySystemInformation info_class SYSTEM_PERFORMANCE_INFORMATION
06f4:fixme:msvcrt:__clean_type_info_names_internal (0x5d3a50) stub
0708:fixme:loadperf:LoadPerfCounterTextStringsW (L"C:\\windows\\system32\\lodctr.exe C:\\windows\\Microsoft.NET\\Framework\\v2.0.50727\\_Networkingperfcounters.ini", 0): stub
0718:fixme:loadperf:LoadPerfCounterTextStringsW (L"C:\\windows\\system32\\lodctr.exe C:\\windows\\Microsoft.NET\\Framework\\v2.0.50727\\_DataOracleClientPerfCounters_shared12_neutral.ini", 0): stub
0728:fixme:loadperf:LoadPerfCounterTextStringsW (L"C:\\windows\\system32\\lodctr.exe C:\\windows\\Microsoft.NET\\Framework\\v2.0.50727\\_dataperfcounters_shared12_neutral.ini", 0): stub
0738:fixme:loadperf:LoadPerfCounterTextStringsW (L"C:\\windows\\system32\\lodctr.exe C:\\windows\\Microsoft.NET\\Framework\\v2.0.50727\\_DataPerfCounters.ini", 0): stub
0748:fixme:loadperf:LoadPerfCounterTextStringsW (L"C:\\windows\\system32\\lodctr.exe C:\\windows\\Microsoft.NET\\Framework\\v2.0.50727\\corperfmonsymbols.ini", 0): stub
00f0:err:msi:execute_command unable to execute command 2
Box86 with Dynarec v0.1.5 e449a4e2 built on Nov 22 2020 04:51:02
075c:fixme:ntdll:NtQuerySystemInformation info_class SYSTEM_PERFORMANCE_INFORMATION
Microsoft (R) CLR Native Image Generator - Version 2.0.50727.42

Copyright (C) Microsoft Corporation 1998-2002. All rights reserved.

The .NET Runtime Optimization Service is started and paused.

075c:fixme:msvcrt:__clean_type_info_names_internal (0x64083a50) stub
076c:fixme:clusapi:GetNodeClusterState ((null),0122ECBC) stub!
076c:fixme:advapi:DecryptFileA ("h:\\b2e6a62370f6181ca20cde\\", 00000000): stub
Box86 with Dynarec v0.1.5 e449a4e2 built on Nov 22 2020 04:51:02
0778:fixme:setupapi:pSetupGetGlobalFlags stub
26057|SIGSEGV @0x7ac13500 (???) (x86pc=0x1004cf0/???:"???", esp=0x133bc2c), for accessing (nil) (code=1), db=0x7c0c67b8(0x7ac13500:0x7ac13548/0x1004cf0:0x1004cff/???)
26057|SIGSEGV @0x7ac53900 (???) (x86pc=0x1005313/???:"???", esp=0x133bc24), for accessing (nil) (code=1), db=0x7bf904b0(0x7ac53900:0x7ac539ac/0x1005313:0x1005348/???)
0778:fixme:wintrust:WinVerifyTrust unimplemented for 4
0778:fixme:wintrust:SOFTPUB_VerifyImageHash Cannot verify hash for pszObjId=(null)
26057|SIGSEGV @0x7ac53900 (???) (x86pc=0x1005313/???:"???", esp=0x133bc10), for accessing (nil) (code=1), db=0x7bf904b0(0x7ac53900:0x7ac539ac/0x1005313:0x1005348/???)
0778:err:ole:com_get_class_object class {acadf079-cbcd-4032-83f2-fa47c4db096f} not registered
0778:err:ole:com_get_class_object no class object {acadf079-cbcd-4032-83f2-fa47c4db096f} could be created for context 0x1
Box86 with Dynarec v0.1.5 e449a4e2 built on Nov 22 2020 04:51:02
Box86 with Dynarec v0.1.5 e449a4e2 built on Nov 22 2020 04:51:02
26057|SIGSEGV @0x79224200 (???) (x86pc=0x10057b0/???:"???", esp=0x133bc30), for accessing (nil) (code=1), db=0x79682fb0(0x79224200:0x79224248/0x10057b0:0x10057bf/???)
26063|SIGSEGV @0x7ac53900 (???) (x86pc=0x1005313/???:"???", esp=0x791efd50), for accessing (nil) (code=1), db=0x7bf904b0(0x7ac53900:0x7ac539ac/0x1005313:0x1005348/???)
26063|SIGSEGV @0x7ac53900 (???) (x86pc=0x1005313/???:"???", esp=0x791efd5c), for accessing (nil) (code=1), db=0x7bf904b0(0x7ac53900:0x7ac539ac/0x1005313:0x1005348/???)
26063|SIGSEGV @0x79249f00 (???) (x86pc=0x1005e78/???:"???", esp=0x791efd60), for accessing (nil) (code=1), db=0x78e50be8(0x79249f00:0x79249f48/0x1005e78:0x1005e87/???)
26057|SIGSEGV @0x79224200 (???) (x86pc=0x10057b0/???:"???", esp=0x133bbe8), for accessing (nil) (code=1), db=0x79682fb0(0x79224200:0x79224248/0x10057b0:0x10057bf/???)
26057|SIGSEGV @0x79224200 (???) (x86pc=0x10057b0/???:"???", esp=0x133bc28), for accessing (nil) (code=1), db=0x79682fb0(0x79224200:0x79224248/0x10057b0:0x10057bf/???)
0778:fixme:sfc:SRSetRestorePointA 0133BD3C 0133B8D8
26057|SIGSEGV @0x79249f00 (???) (x86pc=0x1005e78/???:"???", esp=0x133b760), for accessing (nil) (code=1), db=0x78e50be8(0x79249f00:0x79249f48/0x1005e78:0x1005e87/???)
0778:fixme:sfc:SfcConnectToServer 0
0778:fixme:wintrust:CryptCATGetCatAttrInfo 01181F70, L"SPAttr"
0778:fixme:wintrust:CryptCATGetCatAttrInfo 0116DA50, L"SPAttr"
0778:fixme:wintrust:CryptCATGetCatAttrInfo 01181F58, L"SPLevel"
0778:fixme:wintrust:CryptCATGetCatAttrInfo 0116DA50, L"SPLevel"
0778:fixme:wintrust:SOFTPUB_VerifyImageHash Cannot verify hash for pszObjId=(null)
Box86 with Dynarec v0.1.5 e449a4e2 built on Nov 22 2020 04:51:02
Box86 with Dynarec v0.1.5 e449a4e2 built on Nov 22 2020 04:51:02
049c:fixme:file:NtLockFile I/O completion on lock not implemented yet
049c:fixme:ntdll:NtQuerySystemInformation info_class SYSTEM_PERFORMANCE_INFORMATION
Box86 with Dynarec v0.1.5 e449a4e2 built on Nov 22 2020 04:51:02
049c:fixme:imagehlp:BindImageEx (0, "C:\\windows\\Microsoft.NET\\Framework\\v2.0.50727\\cscomp.dll", "C:\\windows\\Microsoft.NET\\Framework\\v2.0.50727\\", (null), 00000000): stub
049c:fixme:imagehlp:BindImageEx (0, "C:\\windows\\Microsoft.NET\\Framework\\v2.0.50727\\mscorsn.dll", "C:\\windows\\Microsoft.NET\\Framework\\v2.0.50727\\", (null), 00000000): stub
049c:fixme:imagehlp:BindImageEx (0, "C:\\windows\\Microsoft.NET\\Framework\\v2.0.50727\\mscorwks.dll", "C:\\windows\\Microsoft.NET\\Framework\\v2.0.50727\\", (null), 00000000): stub
049c:fixme:imagehlp:BindImageEx (0, "C:\\windows\\system32\\mscoree.dll", "C:\\windows\\system32\\", (null), 00000000): stub
049c:fixme:imagehlp:BindImageEx (0, "C:\\windows\\Microsoft.NET\\Framework\\v2.0.50727\\mscorjit.dll", "C:\\windows\\Microsoft.NET\\Framework\\v2.0.50727\\", (null), 00000000): stub
049c:fixme:imagehlp:BindImageEx (0, "C:\\windows\\Microsoft.NET\\Framework\\v2.0.50727\\mscorpe.dll", "C:\\windows\\Microsoft.NET\\Framework\\v2.0.50727\\", (null), 00000000): stub
049c:fixme:imagehlp:BindImageEx (0, "C:\\windows\\Microsoft.NET\\Framework\\v2.0.50727\\vbc.exe", "C:\\windows\\Microsoft.NET\\Framework\\v2.0.50727\\", (null), 00000000): stub
049c:fixme:imagehlp:BindImageEx (0, "C:\\windows\\Microsoft.NET\\Framework\\v2.0.50727\\diasymreader.dll", "C:\\windows\\Microsoft.NET\\Framework\\v2.0.50727\\", (null), 00000000): stub
049c:err:msi:execute_command unable to execute command 2
27302|SIGSEGV @0x62865bd8 (???) (x86pc=(nil)/???:"???", esp=0x77ffd008), for accessing 0xb5c7b890 (code=1), db=(nil)((nil):(nil)/(nil):(nil)/???)
27336|SIGSEGV @0x62865bd8 (???) (x86pc=0x63329783/???:"???", esp=0x7654fdcc), for accessing 0xb5c7b890 (code=1), db=(nil)((nil):(nil)/(nil):(nil)/???)
27302|SIGSEGV @0x62865bd8 (???) (x86pc=(nil)/???:"???", esp=0x77ffd008), for accessing 0xb5c7b8d0 (code=1), db=(nil)((nil):(nil)/(nil):(nil)/???)
27336|SIGSEGV @0x62949e64 (???) (x86pc=0x63329783/???:"???", esp=0x7654fdcc), for accessing (nil) (code=1), db=(nil)((nil):(nil)/(nil):(nil)/???)
27302|Double SIGSEGV!
27336|SIGSEGV @0x62865bd8 (???) (x86pc=0x63329783/???:"???", esp=0x7654fdcc), for accessing 0xb5c7b8d0 (code=1), db=(nil)((nil):(nil)/(nil):(nil)/???)
27302|SIGSEGV @0x62865bd8 (???) (x86pc=(nil)/???:"???", esp=0x77ffd008), for accessing 0xb5c7b8d0 (code=1), db=(nil)((nil):(nil)/(nil):(nil)/???)
27336|Double SIGSEGV!

I also noticed a kerberos error and thought I should try updating or installing libgnutls and winbind.

I accidentally borked my pi in the process by updating/upgrading after I forgot that I’d put Sid unstable branch in my repo list, so I’ll try this again tonight and/or maybe tomorrow after I re-flash my pi.

WheezyE commented 3 years ago

Still no luck: Flashed a fresh TwisterOS (I was working on Raspberry Pi OS before), updated box86, wine, winetricks, and tried sudo apt-get install winbind gnutls-bin, installed msxml3, still crashing with the same buffer overflow in the same spot as the previous post. I guess maybe it's the sigsegv's in dotnet20sp1? (Though it's strange since winetricks dotnet20sp2 installs without crashing - maybe its install is corrupt?)

WheezyE commented 3 years ago

Also just tried some All In One dotnet installers (tried the 35sp1 installers for Win XP, 8.1 and 10), but didn't have any luck.

Man this one is tough! I know we'll get it eventually :)

WheezyE commented 3 years ago

More dotnet35sp1 testing with a build from commit 65302010 (this is after wine's msxml3 was wrapped): Here's a 1.6GB mega-log2 (14MB 7zipped - I used Large Text File to read the log file). The installer seems to run to the dotnet2.0 sp1 (or sp2?) updater (which I think is when the "Installing:" progress bar goes far enough that the blue part is about near the "t" in "Download complete. You can now disconnect from the Internet."), then the terminal seems to make a clock keep time forever while making the progress bar continue to completion, but without actually doing any other installing.

Here are some highlights from the "mega-log2":

6100|0x4133384a: Calling ioctl(49, 0x82187201, 0x41ebb9f8) => return 0xFFFFFFFF (errno=25:"Inappropriate ioctl for device")
6100|0x41333aa7: Calling close (00000031, 82187201, 41EBB9F8...) => return 0x00000000

6119|0x44c1ecff: Calling my_XShmPutImage (6582C218, 05200001, 5C51F890...) =>Trying to Get "libXext.so.6" to maplib
 return 0x00000001

6680|0x413b9f8b: Calling strlen(0x470605b8("/home/pi/.wine/dosdevices/c:/windows/Microsoft.NET/Framework/v2.0.50727/")) => return 0x00000048
6680|0x413d329b: Calling pthread_sigmask (00000000, 4141D040, 46E0B1D0...) => return 0x00000000
6680|0x413d31b0: Calling writev (0000000C, 46E0B180, 00000003...) => return 0x00000098
6680|0x413d2354: Calling my_read (0000000B, 46E0B2C0, 00000040...) => return 0x00000040
6680|0x413d32b2: Calling pthread_sigmask (00000002, 46E0B1D0, 00000000...) => return 0x00000000
6680|0x413b9fd2: Calling cfree (47060768, 46E0B2A0, 46E0B2A4...) => return 0x46E0B2C0
6680|0x413ba552: Calling cfree (470605B8, 00000000, 0009CB94...) => return 0x00000000
6680|0x413d32d9: Calling pthread_sigmask (00000000, 4141D040, 46E0B1B0...) => return 0x00000000
6680|0x413d357a: Calling pthread_mutex_lock(0x4141c940) => return 0x00000000
6680|0x413d329b: Calling pthread_sigmask (00000000, 4141D040, 46E0B060...) => return 0x00000000
6680|0x413d31ff: Calling __write (0000000C, 46E0B140, 00000040...) => return 0x00000040
6680|0x413d2354: Calling my_read (0000000B, 46E0B140, 00000040...) => return 0x00000040
6680|0x413d32b2: Calling pthread_sigmask (00000002, 46E0B060, 00000000...) => return 0x00000000
6680|0x413d2630: Calling recvmsg (00000031, 46E0AFE4, 40000000...) => return 0x00000004
6680|0x413d270d: Calling my_fcntl64 (0000000D, 00000002, 00000001...) => return 0x00000000
6680|0x413d3333: Calling __pthread_mutex_unlock (4141C940, 46E0B140, 46E0B248...) => return 0x00000000
6680|0x413d331e: Calling pthread_sigmask (00000002, 46E0B1B0, 00000000...) => return 0x00000000
6680|0x413b75a5: Calling pthread_mutex_lock(0x4140c460) => return 0x00000000
6680|0x413b6e3d: Calling my_open64 (413F65B6, 00000000, 46E0B338...) => return 0x00000010
6680|0x413b6e4f: Calling fchdir (0000000D, 00000000, 46E0B338...) => return 0x00000000
6680|0x413d329b: Calling pthread_sigmask (00000000, 4141D040, 46E0B1B0...) => return 0x00000000
6680|0x413d31ff: Calling __write (0000000C, 46E0B370, 00000040...) => return 0x00000040
6680|0x413d2354: Calling my_read (0000000B, 46E0B370, 00000040...) => return 0x00000040
6680|0x413d2354: Calling my_read (0000000B, 46E0B2D0, 00000004...) => return 0x00000004
6680|0x413d32b2: Calling pthread_sigmask (00000002, 46E0B1B0, 00000000...) => return 0x00000000
6680|0x413b2333: Calling cfree (4779A010, 00000001, 46E0B2C4...) => return 0x4778CDE8
6680|0x413b2347: Calling cfree (4778D830, 00000001, 46E0B2C4...) => return 0x4778CDE8
6680|0x413b234f: Calling cfree (4778CDE8, 00000001, 46E0B2C4...) => return 0x4778CDE8
6680|0x413b77b4: Calling __libc_calloc (00000001, 00000024, 46E0B688...) => return 0x4778CDE8
6680|0x413b77d7: Calling llseek (0000000D, 00000000, 00000000...) => return 0x00000000
6680|0x413b77ef: Calling llseek (0000000D, 00000000, 00000000...) => return 0x00000000
6680|0x413b7804: Calling ioctl(13, 0x82187201, 0x46e0b370) => return 0xFFFFFFFF (errno=25:"Inappropriate ioctl for device")
6680|0x413b7811: Calling __errno_location (00000000, 46E0B740, 46E0B338...) => return 0x45E17928
6680|0x413b80df: Calling llseek (0000000D, 00000000, 00000000...) => return 0x00000000
6680|0x413b267b: Calling my_open64 (413F65B6, 00008800, 46E0B248...) => return 0x0000001E
6680|0x413b269a: Calling ioctl(30, 0x80046601, 0x46e0b1a8) => return 0x00000000
6680|0x413b26dd: Calling my_fstatfs64 (0000001E, 46E0B1AC, 46E0B1A8...) => return 0x00000000
6680|0x413b26b6: Calling close (0000001E, 46E0B1AC, 46E0B1A8...) => return 0x00000000
6680|0x413b8279: Calling my___xstat64 (00000003, 46E0B370, 46E0B310...) => return 0x00000000
6680|0x413b41fe: Calling strlen(0x46e0b370("ngen.exe")) => return 0x00000008
6680|0x413b48e6: Calling realloc (00000000, 00000300, 46E0B258...) => return 0x4778D830
6680|0x413b36b9: Calling my_malloc (0000100C, 00000000, 00000000...) => return 0x4779A010
6680|0x413b44a2: Calling strlen(0x46e0b370("ngen.exe")) => return 0x00000008
6680|0x413b44cc: Calling strcpy (4779A02E, 46E0B370, 46E0B258...) => return 0x4779A02E
6680|0x413b7f35: Calling my_qsort (4778D830, 00000001, 0000000C...) => return 0x4778D830
6680|0x413b79c7: Calling my___fxstat64 (00000003, 0000000D, 46E0B310...) => return 0x00000000
6680|0x413b273f: Calling my___lxstat64 (00000003, 4779A02E, 46E0B370...) => return 0x00000000
6680|0x413b72bc: Calling memcpy (004931DA, 4779A01C, 00000010...) => return 0x004931DA
6680|0x413b74c5: Calling fchdir (00000010, 4779A01C, 00000010...) => return 0x00000000
6680|0x413b75dd: Calling __pthread_mutex_unlock (4140C460, 4779A01C, 00000010...) => return 0x00000000
6680|0x413b7501: Calling close (00000010, 4779A01C, 00000010...) => return 0x00000000
6680|0x413d329b: Calling pthread_sigmask (00000000, 4141D040, 46E0B540...) => return 0x00000000
6680|0x413d31ff: Calling __write (0000000C, 46E0B610, 00000040...) => return 0x00000040
6680|0x413d2354: Calling my_read (0000000B, 46E0B610, 00000040...) => return 0x00000040
6680|0x413d32b2: Calling pthread_sigmask (00000002, 46E0B540, 00000000...) => return 0x00000000
6680|0x413d4183: Calling close (0000000D, 46E0B6B4, 46E0B698...) => return 0x00000000
6680|0x413c6347: Calling my_malloc (00000058, 0049373E, 46E0BFF8...) => return 0x47027A18
6680|0x413b8959: Calling strlen(0x6467d5e8("/home/pi/.wine")) => return 0x0000000E
6680|0x413b8970: Calling my_malloc (00000189, 4E45474E, 4558452E...) => return 0x47060780
6680|0x413b898d: Calling __stpcpy (47060780, 6467D5E8, 4558452E...) => return 0x4706078E
6680|0x413b66c6: Calling my___xstat64 (00000003, 47060780, 46E0B5B4...) => return 0x00000000
6680|0x413d9a0c: Calling __libc_calloc (00000010, 00000001, 00000000...) => return 0x47060910
6680|0x413d9b24: Calling memcpy (47060920, 00000000, 00000000...) => return 0x47060920
6680|0x413b9f8b: Calling strlen(0x47060780("/home/pi/.wine/dosdevices/c:/578ef950dd2b11020f01a9a5f31291ce/")) => return 0x0000003E
6680|0x413d329b: Calling pthread_sigmask (00000000, 4141D040, 46E0BA00...) => return 0x00000000
6680|0x413d31b0: Calling writev (0000000C, 46E0B9B0, 00000003...) => return 0x0000008E
6680|0x413d2354: Calling my_read (0000000B, 46E0BAF0, 00000040...) => return 0x00000040
6680|0x413d32b2: Calling pthread_sigmask (00000002, 46E0BA00, 00000000...) => return 0x00000000
6680|0x413b9fd2: Calling cfree (47060910, 46E0BAD0, 46E0BAD4...) => return 0x46E0BAF0
6680|0x413ba552: Calling cfree (47060780, 00000000, 002E0032...) => return 0x00000000
6680|0x413c64c2: Calling cfree (47027A18, 00000021, 46E0BF48...) => return 0x00000000
6680|0x413d32d9: Calling pthread_sigmask (00000000, 4141D040, 46E0BE00...) => return 0x00000000
6680|0x413d357a: Calling pthread_mutex_lock(0x4141c940) => return 0x00000000
6680|0x413d329b: Calling pthread_sigmask (00000000, 4141D040, 46E0BCB0...) => return 0x00000000
6680|0x413d31ff: Calling __write (0000000C, 46E0BD90, 00000040...) => return 0x00000040
6680|0x413d2354: Calling my_read (0000000B, 46E0BD90, 00000040...) => return 0x00000040
6680|0x413d32b2: Calling pthread_sigmask (00000002, 46E0BCB0, 00000000...) => return 0x00000000
6680|0x413d2630: Calling recvmsg (00000031, 46E0BC34, 40000000...) => return 0x00000004
6680|0x413d270d: Calling my_fcntl64 (0000000D, 00000002, 00000001...) => return 0x00000000
6680|0x413d3333: Calling __pthread_mutex_unlock (4141C940, 46E0BD90, 46E0BE98...) => return 0x00000000
6680|0x413d331e: Calling pthread_sigmask (00000002, 46E0BE00, 00000000...) => return 0x00000000
6680|0x413d38ba: Calling dup (0000000D, 00000000, 00000000...) => return 0x00000010
6680|0x413d329b: Calling pthread_sigmask (00000000, 4141D040, 46E0BD90...) => return 0x00000000
6680|0x413d31ff: Calling __write (0000000C, 46E0BE60, 00000040...) => return 0x00000040
6680|0x413d2354: Calling my_read (0000000B, 46E0BE60, 00000040...) => return 0x00000040
6680|0x413d32b2: Calling pthread_sigmask (00000002, 46E0BD90, 00000000...) => return 0x00000000
6680|0x413d4183: Calling close (0000000D, 00000000, 46E0BEE8...) => return 0x00000000
6680|0x413b8959: Calling strlen(0x6467d5e8("/home/pi/.wine")) => return 0x0000000E
6680|0x413b8970: Calling my_malloc (000001BF, 5FCAA57E, 038D5A06...) => return 0x47060928
6680|0x413b898d: Calling __stpcpy (47060928, 6467D5E8, 038D5A06...) => return 0x47060936
6680|0x413b66c6: Calling my___xstat64 (00000003, 47060928, 46E0B444...) => return 0x00000000
6680|0x413d9a0c: Calling __libc_calloc (00000010, 00000001, 46E0B944...) => return 0x47060AF0
6680|0x413d9b24: Calling memcpy (47060B00, 00000000, 00000000...) => return 0x47060B00
6680|0x413b9f8b: Calling strlen(0x47060928("/home/pi/.wine/dosdevices/c:/windows/Microsoft.NET/Framework/v2.0.50727/ngen.exe")) => return 0x00000050
6680|0x413d329b: Calling pthread_sigmask (00000000, 4141D040, 46E0B890...) => return 0x00000000
WheezyE commented 3 years ago

This sounds kind of funny, dotnet35sp1 is working better now with c40669b429cbe82af7bacecaeb45f92e43a88b8c since it crashes now - it doesn’t just keep its progress bar progressing to 100% forever without actually installing anything in the terminal

Its own installer‘s error log says “WapUI: [2] DepCheck indicates XPSEPSC Installer is not installed.“ while the terminal stops at


0034:fixme:ntdll:NtQuerySystemInformation info_class SYSTEM_PERFORMANCE_INFORMATION
Microsoft (R) CLR Native Image Generator - Version 2.0.50727.3053
Copyright (c) Microsoft Corporation.  All rights reserved.

The .NET Runtime Optimization Service is started and paused.
0034:fixme:msvcrt:__clean_type_info_names_internal (0x64082a5c) stub
Box86 with Dynarec v0.1.7 c40669b4 built on Dec  5 2020 20:26:10
00a4:fixme:ntdll:NtQuerySystemInformation info_class SYSTEM_PERFORMANCE_INFORMATION
Microsoft (R) CLR Native Image Generator - Version 2.0.50727.3053
Copyright (c) Microsoft Corporation.  All rights reserved.

The .NET Runtime Optimization Service is started and paused.
00a4:fixme:msvcrt:__clean_type_info_names_internal (0x64082a5c) stub
Box86 with Dynarec v0.1.7 c40669b4 built on Dec  5 2020 20:26:10
00f4:fixme:ntdll:NtQuerySystemInformation info_class SYSTEM_PERFORMANCE_INFORMATION
Microsoft (R) CLR Native Image Generator - Version 2.0.50727.3053
Copyright (c) Microsoft Corporation.  All rights reserved.

The .NET Runtime Optimization Service is started and paused.
00f4:fixme:msvcrt:__clean_type_info_names_internal (0x10a52a5c) stub
WheezyE commented 3 years ago

Ah, going back to dotnet35sp1’s XPSEPSC installer again: Update.exe is giving me SIGSEGV’s (It’s been so long that I can’t remember if we fixed this, but I thought we did):

pi@raspberrypi:~/.cache/winetricks/7b905235bd0ac10f2c3904f7/wcu/dotNetFramework/dotNetFX30/out/update $ wine update.exe 
Box86 with Dynarec v0.1.7 c40669b4 built on Dec  5 2020 20:26:10
Box86 with Dynarec v0.1.7 c40669b4 built on Dec  5 2020 20:26:10
Box86 with Dynarec v0.1.7 c40669b4 built on Dec  5 2020 20:26:10
006c:err:ole:start_rpcss Failed to start RpcSs service
00d8:fixme:ntdll:NtQuerySystemInformation info_class SYSTEM_PERFORMANCE_INFORMATION
00e4:fixme:process:SetProcessShutdownParameters (00000380, 00000000): partial stub.
Box86 with Dynarec v0.1.7 c40669b4 built on Dec  5 2020 20:26:10
0024:fixme:setupapi:pSetupGetGlobalFlags stub
21963|SIGSEGV @0x45f8d200 (???(0x45f8d200)) (x86pc=0x1004cf0/???:"???", esp=0x4220bc2c), for accessing (nil) (code=1), db=0x65c7aac8(0x45f8d200:0x45f8d248/0x1004cf0:0x1004cff/???)
pi@raspberrypi:~/.cache/winetricks/7b905235bd0ac10f2c3904f7/wcu/dotNetFramework/dotNetFX30/out/update $ 00e4:fixme:service:QueryServiceConfig2W Level 6 not implemented
00e4:fixme:advapi:RegisterEventSourceW ((null),L".NET Runtime Optimization Service"): stub
00e4:fixme:advapi:DeregisterEventSource (CAFE4242) stub
00d8:fixme:msvcrt:__clean_type_info_names_internal (0x10a52a5c) stub

Here's a log2 of update.exe update_log2.txt.zip (Highlights from that log here:)

22165|0x4136f438: Calling my_dladdr (4136F410, 40F2F1B0, 00000000...) =>Warning: partially unimplement call to dladdr(0x4136f410, 0x40f2f1b0)
     dladdr return saddr=0x4136e880, fname="NtSetInformationObject", sname="/home/pi/wine/bin/../lib/wine/ntdll.so"
 return 0x00000001

...

22165|0x41380ae1: Calling pthread_sigmask (00000002, 40F2DE38, 00000000...) => return 0x00000000
22165|0x4137e3f7: Calling my_read (00000007, 40F2DD10, 00000010...) =>0060:err:ole:start_rpcss Failed to start RpcSs service
003c:err:service:process_send_command service protocol error - failed to write pipe!
003c:fixme:service:scmdatabase_autostart_services Auto-start service L"PlugPlay" failed to start: 1053

...

22165|0x41361e29: Calling strlen(0x472b7ffb("/dotNetFX30")) => return 0x0000000B
22165|0x41361a11: Calling my___xstat64 (00000003, 472B7F98, 4220AAE8...) => return 0x00000000
22165|0x41361e29: Calling strlen(0x472b8006("/out")) => return 0x00000004
22165|0x41361a11: Calling my___xstat64 (00000003, 472B7F98, 4220AAE8...) => return 0x00000000
22165|0x41361e29: Calling strlen(0x472b800a("/update")) => return 0x00000007
22165|0x41361a11: Calling my___xstat64 (00000003, 472B7F98, 4220AAE8...) => return 0xFFFFFFFF
22165|0x4136154f: Calling my_open64 (472B7F98, 00010000, 4220AF78...) => return 0x00000006
22165|0x4136184a: Calling ioctl(6, 0x82187201, 0x4220ad48) => return 0xFFFFFFFF (errno=25:"Inappropriate ioctl for device")
22165|0x41361aa7: Calling close (00000006, 82187201, 4220AD48...) => return 0x00000000
22165|0x4136156f: Calling opendir("/home/pi/.wine/dosdevices/e:/home/pi/.cache/winetricks/7b905235bd0ac10f2c3904f7/wcu/dotNetFramework/dotNetFX30/out/update") => return 0x472B8298
22165|0x413615a6: Calling readdir64 (472B8298, 82187201, 4220AD48...) => return 0x472B82B8
22165|0x413615c5: Calling strlen(0x472b82cb("update.inf")) => return 0x0000000A
22165|0x413615a6: Calling readdir64 (472B8298, 00000005, 4220AF78...) => return 0x472B82D8
22165|0x413615c5: Calling strlen(0x472b82eb("update.ver")) => return 0x0000000A
22165|0x413615a6: Calling readdir64 (472B8298, 00000005, 4220AF78...) => return 0x472B82F8
22165|0x413615c5: Calling strlen(0x472b830b(".")) => return 0x00000001
22165|0x413615a6: Calling readdir64 (472B8298, 472B830B, 4220AF78...) => return 0x472B8310
22165|0x413615c5: Calling strlen(0x472b8323("updspapi.dll")) => return 0x0000000C
22165|0x413615a6: Calling readdir64 (472B8298, 472B8323, 4220AF78...) => return 0x472B8330
22165|0x413615c5: Calling strlen(0x472b8343("spcustom.dll")) => return 0x0000000C
22165|0x413615a6: Calling readdir64 (472B8298, 472B8343, 4220AF78...) => return 0x472B8350
22165|0x413615c5: Calling strlen(0x472b8363("xpsepsc.cat")) => return 0x0000000B
22165|0x413615a6: Calling readdir64 (472B8298, 472B8363, 4220AF78...) => return 0x472B8370
22165|0x413615c5: Calling strlen(0x472b8383("update.exe")) => return 0x0000000A
22165|0x413615a6: Calling readdir64 (472B8298, 00000005, 4220AF78...) => return 0x472B8390
22165|0x413615c5: Calling strlen(0x472b83a3("update_log2.txt")) => return 0x0000000F
22165|0x413615a6: Calling readdir64 (472B8298, 472B83A3, 4220AF78...) => return 0x472B83B8
22165|0x413615c5: Calling strlen(0x472b83cb("..")) => return 0x00000002
22165|0x413615a6: Calling readdir64 (472B8298, 472B83CB, 4220AF78...) => return 0x00000000
22165|0x41361816: Calling closedir (472B8298, 472B83CB, 4220AF78...) => return 0x00000000
22165|0x41364a7d: Calling cfree (472B7F98, 00000079, 00000001...) => return 0x472B7F98
22165|0x4139bc74: Calling sysinfo (4220B190, 00000079, 00000001...) => return 0x00000000
22165|0x4137f29b: Calling pthread_sigmask (00000000, 413C9040, 4220BAB0...) => return 0x00000000
22165|0x4137f1b0: Calling writev (00000003, 4220BA60, 00000002...) => return 0x00000076
22165|0x4137e354: Calling my_read (00000005, 4220BB84, 00000040...) => return 0x00000040
22165|0x4137f2b2: Calling pthread_sigmask (00000002, 4220BAB0, 00000000...) => return 0x00000000
22165|0x4137f29b: Calling pthread_sigmask (00000000, 413C9040, 4220B950...) => return 0x00000000
22165|0x4137f1b0: Calling writev (00000003, 4220B900, 00000002...) => return 0x00000054
22165|0x4137e354: Calling my_read (00000005, 4220BA44, 00000040...) => return 0x00000040
22165|0x4137e354: Calling my_read (00000005, 4220BC38, 0000001C...) => return 0x0000001C
22165|0x4137f2b2: Calling pthread_sigmask (00000002, 4220B950, 00000000...) => return 0x00000000
22165|0x4137f29b: Calling pthread_sigmask (00000000, 413C9040, 4220B950...) => return 0x00000000
22165|0x4137f1b0: Calling writev (00000003, 4220B900, 00000002...) => return 0x00000054
22165|0x4137e354: Calling my_read (00000005, 4220BA44, 00000040...) => return 0x00000040
22165|0x4137e354: Calling my_read (00000005, 4220BC38, 0000001C...) => return 0x0000001C
22165|0x4137f2b2: Calling pthread_sigmask (00000002, 4220B950, 00000000...) => return 0x00000000
22165|0x4137f29b: Calling pthread_sigmask (00000000, 413C9040, 4220BBB0...) => return 0x00000000
22165|0x4137f1ff: Calling __write (00000003, 4220BC80, 00000040...) => return 0x00000040
22165|0x4137e354: Calling my_read (00000005, 4220BC80, 00000040...) => return 0x00000040
22165|0x4137f2b2: Calling pthread_sigmask (00000002, 4220BBB0, 00000000...) => return 0x00000000
22165|0x4137f29b: Calling pthread_sigmask (00000000, 413C9040, 4220BA90...) => return 0x00000000
22165|0x4137f1b0: Calling writev (00000003, 4220BA40, 00000002...) => return 0x00000090
22165|0x4137e354: Calling my_read (00000005, 4220BB64, 00000040...) => return 0x00000040
22165|0x4137f2b2: Calling pthread_sigmask (00000002, 4220BA90, 00000000...) => return 0x00000000
22165|0x4137f29b: Calling pthread_sigmask (00000000, 413C9040, 4220B930...) => return 0x00000000
22165|0x4137f1b0: Calling writev (00000003, 4220B8E0, 00000002...) => return 0x00000054
22165|0x4137e354: Calling my_read (00000005, 4220BA24, 00000040...) => return 0x00000040
22165|0x4137e354: Calling my_read (00000005, 4220BC14, 00000004...) => return 0x00000004
22165|0x4137f2b2: Calling pthread_sigmask (00000002, 4220B930, 00000000...) => return 0x00000000
22165|0x4137f29b: Calling pthread_sigmask (00000000, 413C9040, 4220BB90...) => return 0x00000000
22165|0x4137f1ff: Calling __write (00000003, 4220BC60, 00000040...) => return 0x00000040
22165|0x4137e354: Calling my_read (00000005, 4220BC60, 00000040...) => return 0x00000040
22165|0x4137f2b2: Calling pthread_sigmask (00000002, 4220BB90, 00000000...) => return 0x00000000
22165|0x4137f29b: Calling pthread_sigmask (00000000, 413C9040, 4220BAB0...) => return 0x00000000
22165|0x4137f1b0: Calling writev (00000003, 4220BA60, 00000002...) => return 0x0000009E
22165|0x4137e354: Calling my_read (00000005, 4220BB84, 00000040...) => return 0x00000040
22165|0x4137f2b2: Calling pthread_sigmask (00000002, 4220BAB0, 00000000...) => return 0x00000000
22165|0x4137f29b: Calling pthread_sigmask (00000000, 413C9040, 4220B950...) => return 0x00000000
22165|0x4137f1b0: Calling writev (00000003, 4220B900, 00000002...) => return 0x0000004E
22165|0x4137e354: Calling my_read (00000005, 4220BA44, 00000040...) => return 0x00000040
22165|0x4137e354: Calling my_read (00000005, 4220BC34, 00000008...) => return 0x00000008
22165|0x4137f2b2: Calling pthread_sigmask (00000002, 4220B950, 00000000...) => return 0x00000000
22165|0x4137f29b: Calling pthread_sigmask (00000000, 413C9040, 4220B950...) => return 0x00000000
22165|0x4137f1b0: Calling writev (00000003, 4220B900, 00000002...) => return 0x0000004E
22165|0x4137e354: Calling my_read (00000005, 4220BA44, 00000040...) => return 0x00000040
22165|0x4137e354: Calling my_read (00000005, 4220BC34, 00000008...) => return 0x00000008
22165|0x4137f2b2: Calling pthread_sigmask (00000002, 4220B950, 00000000...) => return 0x00000000
22165|0x41364959: Calling strlen(0x62fded18("/home/pi/.wine")) => return 0x0000000E
22165|0x41364970: Calling my_malloc (00000126, 4220B608, 41BF078C...) => return 0x472C8B48
22165|0x4136498d: Calling __stpcpy (472C8B48, 62FDED18, 41BF078C...) => return 0x472C8B56
22165|0x413626c6: Calling my___xstat64 (00000003, 472C8B48, 4220B424...) => return 0x00000000
22165|0x4135e73f: Calling my___lxstat64 (00000003, 472C8B48, 4220BA44...) => return 0x00000000
22165|0x4135e805: Calling strlen(0x472c8b48("/home/pi/.wine/dosdevices/c:/")) => return 0x0000001D
22165|0x4135e813: Calling my_malloc (00000021, 472C8B48, 4220BA44...) => return 0x472C8C78
22165|0x4135e849: Calling memcpy (472C8C78, 472C8B48, 0000001D...) => return 0x472C8C78
22165|0x4135e862: Calling my___xstat64 (00000003, 472C8C78, 4220B990...) => return 0x00000000
22165|0x4135e8a2: Calling cfree (472C8C78, 472C8C78, 4220B990...) => return 0x00000002
22165|0x4136803e: Calling cfree (472C8B48, 4220BBF4, 4220BB88...) => return 0x00000000
22165|0x41364959: Calling strlen(0x62fded18("/home/pi/.wine")) => return 0x0000000E
22165|0x41364970: Calling my_malloc (00000126, 0000001C, 00000001...) => return 0x472C9A58
22165|0x4136498d: Calling __stpcpy (472C9A58, 62FDED18, 00000001...) => return 0x472C9A66
22165|0x413626c6: Calling my___xstat64 (00000003, 472C9A58, 4220B424...) => return 0x00000000
22165|0x4135e73f: Calling my___lxstat64 (00000003, 472C9A58, 4220BA44...) => return 0x00000000
22165|0x4135e805: Calling strlen(0x472c9a58("/home/pi/.wine/dosdevices/c:/")) => return 0x0000001D
22165|0x4135e813: Calling my_malloc (00000021, 472C9A58, 4220BA44...) => return 0x472C9B88
22165|0x4135e849: Calling memcpy (472C9B88, 472C9A58, 0000001D...) => return 0x472C9B88
22165|0x4135e862: Calling my___xstat64 (00000003, 472C9B88, 4220B990...) => return 0x00000000
22165|0x4135e8a2: Calling cfree (472C9B88, 472C9B88, 4220B990...) => return 0x00000002
22165|0x4136803e: Calling cfree (472C9A58, 4220BBF4, 4220BB88...) => return 0x00000000
22165|0x4137f29b: Calling pthread_sigmask (00000000, 413C9040, 4220BBB0...) => return 0x00000000
22165|0x4137f1ff: Calling __write (00000003, 4220BC80, 00000040...) => return 0x00000040
22165|0x4137e354: Calling my_read (00000005, 4220BC80, 00000040...) => return 0x00000040
22165|0x4137f2b2: Calling pthread_sigmask (00000002, 4220BBB0, 00000000...) => return 0x00000000
22165|0x4137f29b: Calling pthread_sigmask (00000000, 413C9040, 4220BAB0...) => return 0x00000000
22165|0x4137f1b0: Calling writev (00000003, 4220BA60, 00000002...) => return 0x00000058
22165|0x4137e354: Calling my_read (00000005, 4220BB84, 00000040...) => return 0x00000040
22165|0x4137f2b2: Calling pthread_sigmask (00000002, 4220BAB0, 00000000...) => return 0x00000000
22165|SIGSEGV @0x46e3a300 (???(0x46e3a300)) (x86pc=0x1004cf0/???:"???", esp=0x4220bc2c), for accessing (nil) (code=1), db=0x472cb218(0x46e3a300:0x46e3a348/0x1004cf0:0x1004cff/???)
Sigactionhanlder for signal #11 called (jump to 0x413818d0/???(0x413818d0))
WheezyE commented 3 years ago

It looks like there was a regression in XPSEPSC update.exe on Dec 2. For the box86 builds between Nov 20 - Dec 1 when XPSEPSC update.exe was working, it also could possibly be that a crash after installation might (possibly) be what's hanging up the dotnet35sp1 installer when it gets done installing dotnet20.

I used pale's test.sh to find these days - the exact commits mentioned below might not be the ones that had the breaking changes, but should be close.

XPSEPSC's update.exe appears to only be able to open if something in the dotnet install chain has been installed first - probably dotnet20. I just let the dotnet35sp1 installer run until crashing, then tested wine update.exe with different box86 builds.

Oct 14 (a7cbafee07da55e59ebfbe2057802c4216c923a3): XPSEPSC update.exe installer opens (if dotnet35sp1 has been run and crashed) XPSEPSC update.exe crashes in the middle of installing. Dotnet35sp1 crashes with lots .NET Runtime Optimization Service errors and then a buffer overflow.

Dec 1 (1b3e707f) and some before (also tested Nov 20-21): XPSEPSC update.exe installer opens (if dotnet35sp1 has been run and crashed) XPSEPSC update.exe appears to complete installation, but hangs on exit with: 13459|SIGSEGV @0x49a99b00 (???) (x86pc=0x10057e8/???:"???", esp=0x421ebb1c), for accessing (nil) (code=1), db=0x49600ce0(0x49a99b00:0x49a99b48/0x10057e8:0x10057f7/???) Wineserver has to be restarted for anything else to be able to continue. Dotnet35sp1 Installer runs to stack overflow.

Dec 2 (0f2998a6) and on (tested Dec 3,4,5 - 12) - Dotnet35sp1 installer doesn't have buffer overflow and it's progress bar doesn't just go to infinity (also .NET Runtime Optimization Service doesn't crash in the terminal) XPSEPSC update.exe doesn't open at all: 16869|SIGSEGV @0x45a53b00 (???(0x45a53b00)) (x86pc=0x1005eb0/???:"???", esp=0x4219bb1c), for accessing (nil) (code=1), db=0x45e4d5f8(0x45a53b00:0x45a53b48/0x1005eb0:0x1005ebf/???)

(all tested with wine-devel 5.21 and winetricks 20201206 on TwisterOS 1.9.2)


Testing tips from my notes:

WheezyE commented 3 years ago

I did some more narrowing-down (using git checkout) just to make sure, and it's the libxml2 improved wrapping that seems to break XPSEPSC

A little off topic, but I noticed that dotnet40 installer started having problems with the msxml3 wrapping stuff too. I'll track down the exact commit that broke it and post in the compatibility list comments.

That msxml3 wrapping is awesome to have though so that box86 users don't have to install msxml3 with winetricks before running any Microsoft installers or unexpectedly get errors even though x86 Linux wine works on a PC. The wrapping also helps dotnet35sp1 main installer work better (just not update.exe).

WheezyE commented 3 years ago

Nice 🙂 update.exe opens and runs again. Update.exe still crashes at the end of its installation though and makes the terminal hang indefinitely. There are a lot of SIGSEGV’s but the last couple before the crash are these:


There are a few other sigsegv’s that pop up before that crash too: 

13946|SIGSEGV @0x466aad64 (???(0x466aad64)) (x86pc=0x10057e8/???:"???", esp=0x41b9bb1c), for accessing (nil) (code=1), db=0x466fd988(0x466aad64:0x466aadac/0x10057e8:0x10057f7/???)

13946|SIGSEGV @0x47f17dd4 (???(0x47f17dd4)) (x86pc=0x1004d28/???:"???", esp=0x41b9bb20), for accessing (nil) (code=1), db=0x45d24518(0x47f17dd4:0x47f17e1c/0x1004d28:0x1004d37/???)

13946|SIGSEGV @0x466aad64 (???(0x466aad64)) (x86pc=0x10057e8/???:"???", esp=0x41b9bb1c), for accessing (nil) (code=1), db=0x466fd988(0x466aad64:0x466aadac/0x10057e8:0x10057f7/???)

I think the buffer overflow in dotnet35sp1 main installer might be from the main installer waiting for update.exe to finish installing.

Here’s a log2 https://mega.nz/file/YAZVUYQT#K2uGIJYEXj0-jr6UUyYBdF2SSphfAnVYcYWXuUo5yYQ

And here’s a snipped of log2 on the last SIGSEGV


16518|0x407f973d: Calling __write (00000002, 40855D28, 00000038...) =>0024:fixme:advapi:DeregisterEventSource (CAFE4242) stub
 return 0x00000038
16518|SIGSEGV @0x465bb778 (???(0x465bb778)) (x86pc=0x10057e8/???:"???", esp=0x41babb1c), for accessing (nil) (code=1), db=0x46607cc0(0x465bb778:0x465bb7c0/0x10057e8:0x10057f7/???)
Sigactionhanlder for signal #11 called (jump to 0x4081f8d0/???(0x4081f8d0))
16518|signal function handler 0x4081f8d0 called, ESP=0x417ffcb0
Run X86 (0x63628f20), EIP=0x4081f8d0, Stack=0x40990020
16518|0x4083a4cd: Calling pthread_mutex_lock(0x40867004) => return 0x00000000
16518|0x4083a434: Calling __pthread_mutex_unlock (40867004, 00000000, 00000000...) => return 0x00000000
Context has been changed in Sigactionhanlder, doing longjmp to resume emu
Setjmp DynaRun, fs=0x3b
WheezyE commented 3 years ago

dotnet35sp1 is installing now as of 3c166c43 !!! I don’t know which commit exactly fixed things, but this is awesome! Nice work Seb!

DA8E4026-8A51-478F-A29B-36FFBE632476 C3CF47FC-CE76-4C89-8FD4-EB0CEFDB3674

WheezyE commented 3 years ago

I might transfer this wineprefix to my x86 Linux computer and see if programs run on it

Update: Transferring the wineprefix works! Using x86 Linux, I can run software on the dotnet35sp1 installation that box86/Pi4 made and I don't get any crashes or unexpected errors. With this wineprefix on the x86 Linux computer, software connects to the internet and has better functionality than with mono.

More detail: [wineprefix created w/ box86/Pi4/wine-devel_5.21, wineprefix tarred, transferred to USB stick, transferred to my laptop running VMware Workstation 16 Player / x86 Debian 10 OS / wine-devel_5.21, untarred there, installed software there and it runs]