ptitSeb / box64

Box64 - Linux Userspace x86_64 Emulator with a twist, targeted at ARM64 Linux devices
https://box86.org
MIT License
3.9k stars 287 forks source link

Steam broken as of 2/28/2024 #1308

Closed theofficialgman closed 8 months ago

theofficialgman commented 8 months ago

I and @Botspot have replicated Steam unable to launch on fresh installs seen as early as 2/28/2024

end of log snippit:

Using native(wrapped) libvulkan.so.1
src/steamUI/steamuisharedjscontroller.cpp (546) : Failed creating offscreen shared JS context
src/steamUI/steamuisharedjscontroller.cpp (546) : Failed creating offscreen shared JS context
Error loading needed lib libunity.so.9
Warning: Cannot dlopen("libunity.so.9"/0x6563ffab, 1)
BRefreshApplicationsInLibrary 1: 12ms
Using native(wrapped) libXss.so.1
Using emulated /home/gman/.local/share/Steam/ubuntu12_32/friendsui.so
Warning: Weak Symbol _ZGTtnaj not found, cannot apply R_386_JMP_SLOT 0x6cb12b48 (0x76ef6)
Using native(wrapped) libXss.so.1
src/common/html/chrome_ipc_client.cpp (1113) : Failed to connect to master html process, created shared memory (spawn time 60.08)
src/common/html/chrome_ipc_client.cpp (1113) : Failed to connect to master html process, created shared memory (spawn time 60.08)
src/steamUI/steamuisharedjscontroller.cpp (546) : Failed creating offscreen shared JS context
src/steamUI/steamuisharedjscontroller.cpp (546) : Failed creating offscreen shared JS context

an error window like so pops up 20240228_23h10m58s_grim none of the options change anything in getting steam to launch.

this has been replicated on multiple systems with a fresh steam install: Ubuntu Bionic Nintendo Switch Ubuntu Jammy Nintendo Switch Debian Bookworm RPi5

(info for the discord users, not ptitSeb: I have requested that users create a bug report for such issues that occur on Box64 but not on a standard x86_64 PC. Over the past few days there have been a dozen or so reports in the discord servers but nobody has followed the advise and created a bug report. All of the users reading this where I requested that you open a bug report force me to make it instead of reading and following directions)

ptitSeb commented 8 months ago

I have spent the last 3 days on this.

My conclusion is that steam needs to be launched with -cef-disable-gpu parameters on most hardware. It's not needed on my Ampere+RTX4060 machine, but needed on my Lenovo X13s and PI/400.

I have pushed a commit on box86 to change the steam installer shell script to add this parameter, and also added this info in the README there.

theofficialgman commented 8 months ago

Sorry for the incorrect repo post. I should have caught that it gets stuck in steam 32bit (box86) code and not 64bit (box64) code. If you want to transfer this issue to that repo go ahead.

ptitSeb commented 8 months ago

I thinks it's a 64bits issue, but steam is launched with 32bits app :(

What a mess ... this 32bits / 64bits mix is tricky!

theofficialgman commented 8 months ago

My conclusion is that steam needs to be launched with -cef-disable-gpu parameters on most hardware. It's not needed on my Ampere+RTX4060 machine, but needed on my Lenovo X13s and PI/400.

I'll check other cli args to see if they have any affect in a bit.

thanks for your continued efforts as always.

Botspot commented 8 months ago

I have a working archive of the ~/.local/share/Steam folder from 2/26/2024. @ptitSeb or @theofficialgman if you could use that to compare differences, let me know and I can send it over using https://sharedrop.io It is 762MB

If you want it, DM me on discord, and do not expect an immediate reply as I have to go.

ptitSeb commented 8 months ago

My conclusion is that steam needs to be launched with -cef-disable-gpu parameters on most hardware. It's not needed on my Ampere+RTX4060 machine, but needed on my Lenovo X13s and PI/400.

I'll check other cli args to see if they have any affect in a bit.

Check box source code (either one), on main.c you'll see that when steam is detected, there are a few arguments that are automatically inserted. I didn't forced this one because some machine doesn't need it, so I assume it's a driver issue that might get fixed later...

thanks for your continued efforts as always.

:)

theofficialgman commented 8 months ago

I have an archive of the older ~/.local/share/Steam folder from Monday. @ptitSeb or @theofficialgman if you could use that to compare differences, let me know and I can send it over using https://sharedrop.io It is 762MB

well we already know (from a valve post) that they updated CEF in this update. so it is certainly instigated by with that.

theofficialgman commented 8 months ago

@ptitSeb on my end on nintendo switch only -cef-disable-gpu-compositing is needed. hw accelerated rasterization still works on this hardware though that may not apply to everything.

that should be a bit faster than -cef-disable-gpu

for what it matter, this hardware works fully in upstream chromium using default sandboxing.

alyssarosenzweig commented 8 months ago

Possibly related: https://github.com/FEX-Emu/FEX/issues/3479

theofficialgman commented 8 months ago

I just want to report that I have tested the latest CEF builds on nintendo switch (native ARM64 and x64 with Box64) and both work just fine with no args passed https://cef-builds.spotifycdn.com/index.html#linux64 https://cef-builds.spotifycdn.com/index.html#linuxarm64

I also did a strings on the steam libcef.so and found that is uses an "ancient" version 109.0.0-HEAD.2772+g7992ccc+chromium-109.0.5414.120 this version came out in Jan 2023

I have not downloaded official binaries for that version and tested them yet

theofficialgman commented 8 months ago

I have tested the above version of CEF (x64 through Box64) without issues with no args. So the problem appears to only manifest with steam or steams build of CEF

theofficialgman commented 8 months ago

also the output error dialog that we see at least makes sense on a standard x86_64 pc, running ~/.local/share/Steam/ubuntu12_64/steamwebhelper.sh returns quickly

on arm64 through box64, running ~/.local/share/Steam/ubuntu12_64/steamwebhelper.sh hangs (which is what the error dialog says)

theofficialgman commented 8 months ago

seems like a variant of this bug https://github.com/chromiumembedded/cef/issues/3565#issuecomment-1741590032 ~/.local/share/Steam/ubuntu12_64/debug.log

[0302/011417.028389:WARNING:task_impl.cc(32)] No task runner for threadId 0
[0302/011417.065305:WARNING:task_impl.cc(32)] No task runner for threadId 0

the issue does not occur with the sampleapplication hence why it is difficult to debug and upstream closed it

theofficialgman commented 8 months ago

@ptitSeb found a workaround/fix. disable the steamwebhelper box64rc overrides as such

[steamwebhelper]
#BOX64_NOSANDBOX=1
#BOX64_INPROCESSGPU=1
#BOX64_LOG=0
BOX64_MALLOC_HACK=2
#BOX64_DYNAREC_BIGBLOCK=0
#BOX64_DYNAREC_CALLRET=1
#BOX64_DYNAREC_STRONGMEM=2

and remove all the steam forced args from box86 https://github.com/ptitSeb/box86/blob/14c9cb148d92e601ee691981a6c85efdc7b86352/src/main.c#L1573-L1580

this fixes the issue. I removed all of those commands but I think that specifically the --in-process-gpu argument is problematic and prevents steam webhelper from working. if I add --in-process-gpu to the x64 CEF that that I downloaded it hangs just like steam webhelper in box64

ptitSeb commented 8 months ago

Oh, ok. That indeed works on the X13s :O That's awesome. Those settings were needed before (espeically the no sandbox). I'll do some more stability test and update box86/box64 accordingly. (note the malloc=2 should be automatic if it detect libcef.so)

ptitSeb commented 8 months ago

Possibly related: FEX-Emu/FEX#3479

Probably a different root cause (I guess the use of pressure-vessel might be problematic on FEX?)

AlekseiKondrashov commented 8 months ago

same problem. After update steam don`t working.

src/steamUI/steamuisharedjscontroller.cpp (546) : Failed creating offscreen shared JS context src/steamUI/steamuisharedjscontroller.cpp (546) : Failed creating offscreen shared JS context

ptitSeb commented 8 months ago

same problem. After update steam don`t working.

src/steamUI/steamuisharedjscontroller.cpp (546) : Failed creating offscreen shared JS context src/steamUI/steamuisharedjscontroller.cpp (546) : Failed creating offscreen shared JS context

Update box86 and box64 and try again, it should work after that.

Botspot commented 8 months ago

Just ran a rebuild in box86-debs and box64-debs for all the pi-apps users and anyone else using those repos.

Can confirm that Steam launches now after upgrading packages. I have pushed an update to the pi-apps steam installer so that it upgrades these packages and reinstalls Steam. That should solve everything for everyone.

Thanks @theofficialgman and @ptitSeb for working together on this. I think this issue can be closed now that it is solved.