win32ss / supermium

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

No audio #861

Closed noles25 closed 1 week ago

noles25 commented 2 months ago

The 64 bit version of Supermium 126.0.6478.249 does not have any working audio on Windows XP 64 bit edition with service pack 2 installed with all the official updates installed from Microsoft Update. I also have office 2007 pro installed with service pack 3 with all the latest updates for this installed as well. Also I get the error in the screenshot below when I first launch the browser. All other programs on my PC have working audio. supermium error

Vangelis66 commented 2 months ago

The audio issue is just a duplicate of #851 ; FWIW, fixed in code for now...

As for the api-ms-win-crt-*.dll issue, the 64-bit version of it should be found alongside Supermium's chrome.exe; isn't it there already?

win10ucrt

noles25 commented 2 months ago

It's asking for api-ms-win-core-string-|1-1-0.dll not api-ms-win-crt-string-|1-1-0.dll

Vangelis66 commented 2 months ago

... Right you are (prescription glasses need to be renewed, but I keep postponing it :smile: ) ; perhaps on XP x64 SP2 the DWrite.dll has even more Win10uCRT dependencies than the ones already provided by the installer (the 5 api-* ones plus ucrtbase.dll ) ; as an interim workaround, download and install the following MSVC++2015-2019 file from Microsoft:

https://download.visualstudio.microsoft.com/download/pr/566435ac-4e1c-434b-b93f-aecc71e8cffc/B75590149FA14B37997C35724BC93776F67E08BFF9BD5A69FACBF41B3846D084/VC_redist.x64.exe

You may have to restart your PC for that to take effect...

noles25 commented 2 months ago

Thanks installing the MSVC ++ 2015-2019 file prevented that error from occurring at startup

win32ss commented 2 months ago

DWrite.dll does import only api-ms-win-crt-string-l1-1-0.dll. Some other component may demand the "core" string DLL. But regardless, installing the runtimes are recommended.

As for the sound, I am about to release an update with the fix.

Vangelis66 commented 2 months ago

DWrite.dll does import only api-ms-win-crt-string-l1-1-0.dll. Some other component may demand the "core" string DLL.

I don't have an XP system at hand to demonstrate it, but on my Vista SP2 x86 system fully updated to EoL (meaning I have Win10uCRT installed - in system32), here's what DW reveals:

runtime3

Yes, DWrite.dll (lazy loaded by chrome.exe) will depend on/import those five api-ms-win-crt-*.dlls you have bundled with the installer (and I was the first to point this fact here), but each one of them also demands/relies on ucrtbase.dll, also provided by the setup; these DLLs will be loaded from the path of chrome.exe if present there, though, in my case, I have the local redirection .reg file previously "installed", so I'm not sure whether they are loaded preferentially from there and not from system32... But, what about ucrtbase.dll itself? Look below:

runtime4

... Reliance on 25 (!) stub api-ms-win-core-*.dlls ! These are imported from system32 in my updated OS, but what about non-updated systems without Win10uCRT (Vista through to 8.1) or without MSVC++2015-2022 installed?

Aside from the report in the opening post, I became aware of another similar post, regarding XP SP3 x86, in forum.ru-board.com:

https://forum.ru-board.com/topic.cgi?forum=5&topic=51193&start=1760#9

runtime5

bare and clean 32-bit XP SP3

... meaning no MSVC++ at all; and, as I wrote elsewhere in the tracker, those XP-diehards are unwilling to install additional runtimes :stuck_out_tongue_winking_eye: ; here's what another member proposed in a follow-up post (via translator):

Here, the developer needs to write a "sheet" and explain the problem and then he either includes everything needed in the distribution (installer) at once (since he started, from v124, putting in additional DLLs) or create binaries that do not require them at all.

Thought you should know - best regards :smile: ...

Vangelis66 commented 2 months ago

... As an observation, the newly introduced p_vcrt.dll file isn't being loaded by DWrite.dll in my case, is this just an XP exclusivity?

win32ss commented 2 months ago

I apologize for all the confusion created by the attempts to replace dependencies in DirectWrite and associated binaries. In the case of ucrtbase, the api-ms-win-core-* DLL imports can be replaced with imports to pwrp_k32 and ntdll, so I will do so (pwrp_k32 instead of kernel32 in the event of trying to use newer functions or flags) and put it in the distribution.

... As an observation, the newly introduced p_vcrt.dll file isn't being loaded by DWrite.dll in my case, is this just an XP exclusivity?

This is a wrapper around msvcrt.dll and was part of an earlier attempt to correct DirectWrite's dependencies, but it was only successful for x64; x86 would've taken too long. But I did not remove it.

Vangelis66 commented 2 months ago

as I wrote elsewhere in the tracker, those XP-diehards are unwilling to install additional runtimes :stuck_out_tongue_winking_eye:

... More of that same "mantra" :

https://forum.ru-board.com/topic.cgi?forum=5&topic=51193&start=1760#20

(machine translation)

The advice, as before, is not to install VC++ 2015 runtimes in XP SP3, but to install the necessary libraries locally. When runtimes are installed in the system, other applications begin to waste memory excessively. It becomes impossible to work.

win32ss wrote:

In the case of ucrtbase, the api-ms-win-core-* DLL imports can be replaced with imports to pwrp_k32 and ntdll, so I will do so (pwrp_k32 instead of kernel32 in the event of trying to use newer functions or flags) and put it in the distribution.

The Sm-v126-r1 installers were unceremoniously updated on Sep 6th, bundled with patched ucrtbase.dll files (which, however, have now invalid file signatures, both SHA1+SHA2, so probably expect another round of (false-positive) VirusTotal scans...).

For "closure", here's updated Dependency Walker trees (on the same Vista SP2 x86 laptop) :

DWrite.dll adjacent to Supermium's chrome.exe:

runtime5

Patched ucrtbase.dll adjacent to the 5 api-ms-win-crt-*.dlls (adjacent to DWrite.dll) :

runtime6

Let's see how that goes with those XPers :wink: ...