linuxulator-steam-utils
linuxulator-steam-utils copied to clipboard
Palworld fails to start
I see the following when starting palworld:
shim_epoll_create1 is not implemented
0x6bd505f4 <shim_epoll_create1_GLIBC_2_9+0x44> at /usr/local/lib/libc6-shim/libc6.so
0x70c441fa <_ZN8tinyxml210XMLPrinter5VisitERKNS_10XMLUnknownE+0x11a8ba> at /usr/home/ashafer/.steam/steam/linux64/steamclient.so
0x70bb3528 <_ZN8tinyxml210XMLPrinter5VisitERKNS_10XMLUnknownE+0x89be8> at /usr/home/ashafer/.steam/steam/linux64/steamclient.so
0x70c1691b <_ZN8tinyxml210XMLPrinter5VisitERKNS_10XMLUnknownE+0xecfdb> at /usr/home/ashafer/.steam/steam/linux64/steamclient.so
0x70c1ffa1 <_ZN8tinyxml210XMLPrinter5VisitERKNS_10XMLUnknownE+0xf6661> at /usr/home/ashafer/.steam/steam/linux64/steamclient.so
0x705f59b9 <Breakpad_SteamWriteMiniDumpUsingExceptionInfoWithBuildId+0xaeb09> at /usr/home/ashafer/.steam/steam/linux64/steamclient.so
0x7051a3da <Steam_NotifyMissingInterface+0x346c1a> at /usr/home/ashafer/.steam/steam/linux64/steamclient.so
0x701f10ef <Steam_NotifyMissingInterface+0x1d92f> at /usr/home/ashafer/.steam/steam/linux64/steamclient.so
0x701d0aba <Steam_GSGetSteamID+0x1ac6da> at /usr/home/ashafer/.steam/steam/linux64/steamclient.so
0x6eed7bde <winISteamClient_SteamClient020_GetISteamGenericInterface+0x7e> at /usr/home/ashafer/.steam/steam/compatibilitytools.d/FreeBSD_Proton/proton_8.0/dist/lib64//wine/x86_64-unix/lsteamclient.dll.so
Assertion failed: (0), function shim_epoll_create1, file build/wrappers64.c, line 14215.
017c:warn:seh:dispatch_exception backtrace: --- Exception 0x80000101.
I'm assuming the shim_epoll_create1
message at the top comes from libc6-shim? Does this look right? I thought we had already shimmed all the epoll functions, but maybe we don't since epoll is in base now? It does look like wrappers64.c
has it marked unimplemented.
Here's the full log. uname is FreeBSD mick 15.0-CURRENT FreeBSD 15.0-CURRENT #14 main-n267477-8338ea1d3cc7: Mon Jan 15 19:35:14 EST 2024 ashafer@mick:/usr/obj/usr/freebsd-src/amd64.amd64/sys/GENERIC-NODEBUG amd64
.
As usual I'm running a non-standard nv driver, but I've verified 32/64bit linux graphics programs can launch along with verifying wine-proton is functional.
Thanks!
Updating with some details from offline discussion. It seems that whatever steam runtime I have is calling new things that libc6-shim didn't yet have, specifically epoll_create
, localeconv
, and getcontext
. Adding all three of those isn't that bad.
After that my latest crashes come from ~/.steam/steam/linux64/crashhandler.so
calling the gettid
syscall directly without calling into libc (and the shim). Which is what fails with the SIGSYS
and a ENOSYS
errno.
Here's the bit from crashhandler.so
:
LAB_00146690 XREF[1]: 0014666f(j)
00146690 48 8d 84 LEA RAX=>local_218,[RSP + 0x440]
24 40 04
00 00
00146698 ba ba 00 MOV EDX,0xba
00 00
0014669d b9 40 00 MOV ECX,0x40
00 00
001466a2 48 8b b4 MOV RSI,qword ptr [RSP + local_4e0]
24 78 01
00 00
001466aa 48 89 c7 MOV RDI,RAX
001466ad 89 d0 MOV EAX,EDX
001466af f3 48 a5 MOVSQ.REP RDI,RSI
001466b2 0f 05 SYSCALL
Been a while since I did anything close to reverse engineering, but to me it looks like steam is putting 0xba
(syscall number for gettid) in eax
and then doing the syscall directly so libc6-shim has no chance to intercept, so there's not much we can do.