win32ss / supermium

Chromium fork for Windows XP/2003 and up
https://win32subsystem.live/supermium/
BSD 3-Clause "New" or "Revised" License
2.17k stars 72 forks source link

Supermium fails to start on WinXP SP3 in multi-process mode with Software Restriction Policies enabled. #512

Open Tindaer opened 4 months ago

Tindaer commented 4 months ago

After enabling the SAFER ruleset from

https://skanthak.hier-im-netz.de/SAFER.html (get the file XP_SAFER.INF)

and rebooting, Supermium fails to start. The windows briefly opens and closes again.

There are NO "disallowed" entries in c:\WINDOWS\Debug\SAFER.LOG that would indicate SAFER blocking something.

The issue can be resolved by uninstalling SAFER, or just temporarily renaming the key

HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Safer

To Reproduce Steps to reproduce the behavior:

  1. Go to https://skanthak.hier-im-netz.de/SAFER.html
  2. Download the file XP_SAFER.INF, right click on it and select install
  3. Reboot
  4. Launch Supermium

Expected behavior Supermium should launch, as it did before enabling SAFER

Desktop (please complete the following information): Windows XP SP3 in a VM

Here is the logfile generated with --enable-logging --v=1

[8656:8896:0424/213627.156:VERBOSE1:profile_manager.cc(1340)] AddKeepAlive(Default, kNotification). keep_alives=[kBrowserWindow (1), kNotification (1)] [8656:8896:0424/213627.468:ERROR:gpu_process_host.cc(989)] GPU process exited unexpectedly: exit_code=-1073741502 [8656:8896:0424/213627.468:WARNING:gpu_process_host.cc(1360)] The GPU process has crashed 2 time(s) [8656:8896:0424/213627.468:VERBOSE1:profile_manager.cc(1340)] AddKeepAlive(Default, kExtensionUpdater). keep_alives=[kBrowserWindow (1), kNotification (1), kExtensionUpdater (1)] [8656:9360:0424/213627.484:ERROR:mf_initializer.cc(31)] Failed to start Media Foundation, accelerated media functionality may be disabled. If you're using Windows N, see https://support.microsoft.com/en-us/topic/media-feature-pack-for-windows-10-n-may-2020-ebbdf559-b84c-0fc2-bd51-e23c9f6a4439 for information on how to install the Media Feature Pack. Error: Could not load mf.dll. Der Vorgang wurde erfolgreich beendet. (0x0) [8656:8896:0424/213627.609:VERBOSE1:profile_manager.cc(1392)] RemoveKeepAlive(Default, kExtensionUpdater). keep_alives=[kBrowserWindow (1), kNotification (1)] [8656:8896:0424/213627.890:ERROR:device_event_log_impl.cc(192)] [21:36:27.880] USB: usb_service_win.cc:73 SetupDiGetDeviceProperty({{A45C254E-DF1C-4EFD-8020-67D146A850E0}, 23}) failed: Error (0x13D) while retrieving error. (0xE0000209) [8656:8896:0424/213627.968:ERROR:gpu_process_host.cc(989)] GPU process exited unexpectedly: exit_code=-1073741502 [8656:8896:0424/213627.968:WARNING:gpu_process_host.cc(1360)] The GPU process has crashed 3 time(s) [8656:8896:0424/213628.390:VERBOSE1:gaia_cookie_manager_service.cc(846)] GaiaCookieManagerService::ListAccounts [8656:2904:0424/213628.703:VERBOSE1:component_installer.cc(440)] StartRegistration for Related Website Sets [8656:8896:0424/213628.906:VERBOSE1:component_installer.cc(519)] FinishRegistration for Related Website Sets [8656:8896:0424/213628.906:VERBOSE1:first_party_sets_component_installer.cc(210)] Received Related Website Sets [8656:2904:0424/213628.906:VERBOSE1:component_installer.cc(440)] StartRegistration for Privacy Sandbox Attestations [8656:8896:0424/213628.953:ERROR:gpu_process_host.cc(989)] GPU process exited unexpectedly: exit_code=-1073741502 [8656:8896:0424/213628.953:WARNING:gpu_process_host.cc(1360)] The GPU process has crashed 4 time(s) [8656:8896:0424/213629.078:VERBOSE1:component_installer.cc(519)] FinishRegistration for Privacy Sandbox Attestations [8656:8896:0424/213629.312:ERROR:gpu_process_host.cc(989)] GPU process exited unexpectedly: exit_code=-1073741502 [8656:8896:0424/213629.312:WARNING:gpu_process_host.cc(1360)] The GPU process has crashed 5 time(s) [8656:8896:0424/213629.531:ERROR:gpu_process_host.cc(989)] GPU process exited unexpectedly: exit_code=-1073741502 [8656:8896:0424/213629.531:WARNING:gpu_process_host.cc(1360)] The GPU process has crashed 6 time(s) [8656:8896:0424/213630.390:VERBOSE1:gaia_cookie_manager_service.cc(710)] ListAccounts successful [8656:8896:0424/213630.390:VERBOSE1:gaia_cookie_manager_service.cc(882)] GaiaCookieManagerService::HandleNextRequest [8656:8896:0424/213630.390:VERBOSE1:account_reconcilor.cc(555)] AccountReconcilor::OnAccountsInCookieUpdated: CookieJar 0 accounts, Reconcilor's state is 1, Error was [8656:8896:0424/213630.390:VERBOSE1:mutable_profile_oauth2_token_service_delegate.cc(308)] MutablePO2TS::RefreshTokenIsAvailable [8656:8896:0424/213630.390:VERBOSE1:mutable_profile_oauth2_token_service_delegate.cc(308)] MutablePO2TS::RefreshTokenIsAvailable [8656:8896:0424/213630.390:VERBOSE1:account_reconcilor.cc(645)] AccountReconcilor::LoadValidAccountsFromTokenService: Chrome 0 accounts [8656:8896:0424/213630.390:VERBOSE1:mutable_profile_oauth2_token_service_delegate.cc(308)] MutablePO2TS::RefreshTokenIsAvailable [8656:8896:0424/213630.390:VERBOSE1:account_reconcilor.cc(772)] AccountReconcilor::CalculateIfMultiloginReconcileIsDone: Error was [8656:8896:0424/213630.390:VERBOSE1:account_reconcilor.cc(680)] AccountReconcilor::StartReconcileIfChromeAccountsChanged [8656:8896:0424/213630.453:VERBOSE1:mutable_profile_oauth2_token_service_delegate.cc(308)] MutablePO2TS::RefreshTokenIsAvailable [8656:8896:0424/213630.453:VERBOSE1:account_reconcilor.cc(555)] AccountReconcilor::OnAccountsInCookieUpdated: CookieJar 0 accounts, Reconcilor's state is 1, Error was [8656:8896:0424/213630.453:VERBOSE1:mutable_profile_oauth2_token_service_delegate.cc(308)] MutablePO2TS::RefreshTokenIsAvailable [8656:8896:0424/213630.453:VERBOSE1:mutable_profile_oauth2_token_service_delegate.cc(308)] MutablePO2TS::RefreshTokenIsAvailable [8656:8896:0424/213630.453:VERBOSE1:account_reconcilor.cc(645)] AccountReconcilor::LoadValidAccountsFromTokenService: Chrome 0 accounts [8656:8896:0424/213630.453:VERBOSE1:mutable_profile_oauth2_token_service_delegate.cc(308)] MutablePO2TS::RefreshTokenIsAvailable [8656:8896:0424/213630.453:VERBOSE1:account_reconcilor.cc(772)] AccountReconcilor::CalculateIfMultiloginReconcileIsDone: Error was [8656:8896:0424/213630.453:VERBOSE1:account_reconcilor.cc(680)] AccountReconcilor::StartReconcileIfChromeAccountsChanged [8656:8896:0424/213630.687:ERROR:gpu_process_host.cc(989)] GPU process exited unexpectedly: exit_code=-1073741502 [8656:8896:0424/213630.687:WARNING:gpu_process_host.cc(1360)] The GPU process has crashed 7 time(s) [8656:8896:0424/213631.265:ERROR:gpu_process_host.cc(989)] GPU process exited unexpectedly: exit_code=-1073741502 [8656:8896:0424/213631.265:WARNING:gpu_process_host.cc(1360)] The GPU process has crashed 8 time(s) [8656:8896:0424/213632.015:ERROR:gpu_process_host.cc(989)] GPU process exited unexpectedly: exit_code=-1073741502 [8656:8896:0424/213632.015:WARNING:gpu_process_host.cc(1360)] The GPU process has crashed 9 time(s) [8656:8896:0424/213632.015:FATAL:gpu_data_manager_impl_private.cc(448)] GPU process isn't usable. Goodbye.

IDA-RE-things commented 4 months ago

I have have no such tuned virtual machine, Because I debug it on separate real XP computer, and dont want dirty it with such policies. (In my case). But can you run it with --single process mode ? May be it will create crash dump and so on. Then it will be possible to investigate crashdump.

But of course the only proper way is to debug it, using such VM.

IDA-RE-things commented 4 months ago

Which host machine you use for this VM ? You can debug it remotely youself, Installing VS2010. The source code is here in release section. The PDB files -- also here.

Tindaer commented 4 months ago

The host machine is also WinXP :)

I've updated the post with a logfile. It's the GPU process that fails to start. Strange.

Single process mode also does not work.

IDA-RE-things commented 4 months ago

It will be good to see above logs, created with --single process mode. Above log was created without this switch ?

IDA-RE-things commented 4 months ago

And another moment. Are you have English VM for this tests ? Because russian error messages can't be foun then in code etc. It will really good to do this wioth English VM.

Try it with such clean log file. And clean start of browser without opened pages. To exclude mess from it.

Also create such separate log file without this SAFER enabled. Then we will compare it.

IDA-RE-things commented 4 months ago

GPU process exited unexpectedly: exit_code=-1073741502

"exit_code=-1073741502" is C0000142, which is "DLL Initialization Failed" So some DLL can't be loaded with this Policies enabled.

Dont know whats happened, but its strange such log message for single process. GPU process exited unexpectedly. Are you sure it was single ?, It looks like multiprocess execution. Multiple times: The GPU process has crashed 9 time(s)

Also, try to find crashdumps in Supermium_UserData\Crashpad\reports\

Tindaer commented 4 months ago

I realize i made i mistake, because i was too lazy to type myself. So i just copied --single process from your message (without the "-" between the words) and pasted it in my shortcut. :)

Supermium works with SAFER enabled with the --single-process argument. It only crashes without this switch.

So, for me the issue is basically solved, because it's usable. But if there's interest on the developer's side to debug multi process mode, i will provide the logs.

Oh, and i (possibly) solved the russian issue, too. While my WinXP is in german, i do have other languages enabled (russian among them), so maybe the logger picked that one.

IDA-RE-things commented 4 months ago

But if there's interest on the developer's side to debug multi process mode, i will provide the logs.

Yes, it wil be interestingly to check what was happened in crashdumps in miltiprocess mode and in which point. It will be shown there.

Supermium_UserData\Crashpad\reports\ *.dmp-files

But if you can, try it with the latest available chrome.dll / PDB from 17.03.2024 : (I use it on my machine to check crashdumps) https://github.com/win32ss/supermium/releases/download/v122-dbg/122_new_pdb_32.7z

And remove old crashdumps before, (if they are), to prevent mess.

Tindaer commented 4 months ago

Here's the .dmp file with the chrome.dll / PDB in the link above.

83197a18-4622-4798-8713-22a42c7d1f4d.dmp

IDA-RE-things commented 4 months ago

Its a callstack of the crashdump. By the stack, it seems some error was happened in Inter-Process communication pipe or so on. (if in single-process it works). More research should be done by the main dev of the repo (win32ss). (If he want to do this).

Also error C0000142, (which is "DLL Initialization Failed") from the above log, is strange. (which DLL ?).

May be it will stay here as "known problem".


2

win32ss commented 4 months ago

I would also suggest --no-sandbox and --in-process-gpu as well, as alternatives to --single-process. I'll try to log all LoadLibrary/LdrLoadDll calls from the GPU process as well.

Tindaer commented 4 months ago

I've tried it with --no-sandbox and --in-process-gpu , and it works in multiprocess mode. --no-sandbox is enough to make it work.

Which is a good thing, because with --single-process i did encounter this issue:

https://github.com/win32ss/supermium/issues/482

Plus, you can add the extension uBlock Origin https://chromewebstore.google.com/detail/ublock-origin/cjpalhdlnbpafiamejdnhcphjbkeiagm

to the list of extensions that make Supermium crash on exit, mentioned here:

https://github.com/win32ss/supermium/issues/391

IDA-RE-things commented 4 months ago

Yes, --single-process , - in this stage its only (or mostly) for debugging of some situations, where all must be inside single process to be catched by the debugger. But for general everyday usage this mode still have problems.

Plus, you can add the extension uBlock Origin to the list of extensions that make Supermium crash on exit, mentioned here:

k, I will add it to the list. I think the list can be more... It was just for example which I use.