koverstreet / bcachefs

Other
699 stars 73 forks source link

Steam: some games don't work on bcachefs #175

Closed davidak closed 2 years ago

davidak commented 3 years ago

I use bcachefs as root partition on NixOS. I noticed that some steam games don't work.

non-working games

working games

For these games, it helps to move them to an ext4 partition:

They all work on a similar system with ext4 root fs, that even use the same kernel.

There is a known issue with 32 bit games on a filesystem with 64-bit inodes like XFS. Maybe this issue is related to that?

https://steamcommunity.com/app/221410/discussions/0/620695877288637183/ https://github.com/ValveSoftware/steam-for-linux/issues/4824 https://github.com/ValveSoftware/Source-1-Games/issues/1685 http://www.mjr19.org.uk/sw/inodes64.html

Can this issue get fixed in bcachefs or do the game developers have to fix it in the games?


NixOS 21.03.git.9bf997125cd bcachefs from 2020-11-17 (git rev 6a505b63ed3003faf5000f19fd08bbd477d93fbc)

nicman23 commented 3 years ago

can you use that https://www.mjr19.org.uk/sw/inodes64.html (go to LD_PRELOAD section) and report back?

koverstreet commented 3 years ago

There's a filesystem option for 32 bit inode numbers. Can you try that and report back?

davidak commented 3 years ago

@nicman23 looks complicated. would do it last if needed

@koverstreet how? is it a mount option?

koverstreet commented 3 years ago

Yes, mount with -o inodes_32bit

davidak commented 3 years ago

bcachefs mounted with inodes_32bit

non-working games

working games

so i have exact the same issue with inodes_32bit

here is the log of half-life: https://gist.github.com/davidak/b06c89d81266fecc159a13dd3d0b67b1

hl.sh: line 43: 2682 Segmentation fault

There is a core dump. I'm not sure if that is helpful for anyone but Valve because it's binary.

assert_20210327033229_1.dmp.zip

So i opened a support request about it there.

davidak commented 3 years ago

I got the standard your-distro-is-not-supported message.


Steam for Linux is currently only supported on the latest version of 64-bit Ubuntu LTS with Unity, Gnome, or KDE desktops.

If you are running another distribution of Linux such as NixOS, we will not be able to provide support.

We recommend you install the latest version of 64-bit Ubuntu for the best Steam experience on Linux.

If you wish to attempt to run Steam on a different distribution or version, it's best that you use Github to discuss them with our developers and other Linux users.

You can create a free Github account.

Once signed up and logged in you can visit our Github and post your questions directly to the Linux Community and our developers.


They don't say bcachefs is not supported, so does someone has Ubuntu with bcachefs running and can try to reproduce the issue and then create a support request? :trollface:

I will create a GitHub issue, as they suggested.

koverstreet commented 3 years ago

nah bcachefs definitely won't be supported, this is on us to debug

I'll get to it eventually :)

On Sat, Mar 27, 2021 at 7:39 PM davidak @.***> wrote:

I got the standard your-distro-is-not-supported message.

Steam for Linux is currently only supported on the latest version of 64-bit Ubuntu LTS with Unity, Gnome, or KDE desktops.

If you are running another distribution of Linux such as NixOS, we will not be able to provide support.

We recommend you install the latest version of 64-bit Ubuntu for the best Steam experience on Linux.

If you wish to attempt to run Steam on a different distribution or version, it's best that you use Github to discuss them with our developers and other Linux users.

You can create a free Github account.

Once signed up and logged in you can visit our Github https://github.com/ValveSoftware and post your questions directly to the Linux Community and our developers.


They don't say bcachefs is not supported, so does someone has Ubuntu with bcachefs running and can try to reproduce the issue and then create a support request? [image: :trollface:]

I will create a GitHub issue, as they suggested.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/koverstreet/bcachefs/issues/175#issuecomment-808817991, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAPGX3UCZFW7OM3F5QFW7KDTFZUCLANCNFSM4VHRYPWA .

davidak commented 3 years ago

Maybe the support don't know what a filesystem is and we can reach a developer that way. I just asked naively:

So when i have a system with the latest version of 64-bit Ubuntu LTS with Unity, Gnome, or KDE desktop that uses bcachefs as filesystem, you would forward it to a developer to look at the issue?

But sure, in the end we will have to debug it.

davidak commented 3 years ago

Next step to debug:

Look at filesystem related syscalls with strace when it crashes.

strace -ff steam

file would be insufficient, you'd also want syscalls that reference file descriptors

nicman23 commented 3 years ago

i ll test any free in a vm starting with cs 1.6.

e: host will be running btrfs

walexb commented 3 years ago

I have a similar issue where "recently" some Steam games but not others get stuck on startup, but on Btrfs. It may not be the filesystem or the 32-bit i-num issue, you can check whether you have too large i-nums with:

find $DIR -inum +$((2 ** 32 - 1))

Note: IIRC Btrfs does not reuse i-nums, they are monotonically increasing, and filesystem types like that sooner or later will hit the 2^32 limit.

walexb commented 3 years ago

I had a look at my situation and I got "stuck" (after reading various things, nothing displaed in the window) TF2 but not CS:GO processes in both Btrfs and XFS too. The process hl2_linux process was stuck on a "futex".

Curiously on trying to kill (via Ctrl-C) in the startup terminal) the steam process the hl2_linux process then went through full startup, with the window displaying the initial Valve animation and then loading TF2 content, and then terminated.

That problem disappeared once I deleted (after a leap of intuition looking at the log messages and the .config/pulse/ directory but then I had no sound. Some further investigation shows some issue in my setup with the per-user pulseaudio daemon that has somehow happened recently, and seems related to connecting to its UNIX-style socket. TF2 startup worked as expected when I configured a static path for that in .config/pulse/default.pa and .config/pulse/client.conf.

Note: I start my session on the command line, and also I use a separate user for Steam, which I activate with sudo -i -u steamuser, so I have a somewhat unusual setup.

davidak commented 3 years ago

find $DIR -inum +$((2 ** 32 - 1))

@walexb this gave no result


here is the complete output of strace while i start steam and half-life 1: hl1_crash.txt.zip (5.5 MB, 98.7 uncompressed)

pid 5093 seem to be the process that open game assets and might be the main game process

[pid  5093] execve("/home/davidak/.local/share/Steam/steamapps/common/Half-Life/hl_linux", ["/home/davidak/.local/share/Steam"..., "-steam"], 0xa99008 /* 124 vars */) = 0
[pid  5093] [ Process PID=5093 runs in 32 bit mode. ]

i'm not sure what to search for...

it tries to open icon_down.tga at many different paths, but it does not exist:

[pid  5093] openat(AT_FDCWD, "/home/davidak/.local/share/steam/steamapps/common/half-life/valve_downloads/resource/icon_down.tga", O_RDONLY <unfinished ...>
[pid  5093] <... openat resumed>)       = -1 ENOENT (No such file or directory)
[pid  5093] access("/home/davidak/.local/share/Steam/steamapps/common/Half-Life/valve_hd/resource/icon_down.tga", F_OK <unfinished ...>
[pid  5093] <... access resumed>)       = -1 ENOENT (No such file or directory)
[pid  5093] access("/home/davidak/.local/share/Steam/steamapps/common/half-life/valve_hd/resource/icon_down.tga", F_OK <unfinished ...>
[pid  5093] <... access resumed>)       = -1 ENOENT (No such file or directory)
[pid  5093] access("/home/davidak/.local/share/Steam/steamapps", F_OK <unfinished ...>
[pid  5093] <... access resumed>)       = 0
[pid  5093] access("/home/davidak/.local/share/Steam/steamapps/common", F_OK <unfinished ...>
[pid  5093] <... access resumed>)       = 0
[pid  5093] access("/home/davidak/.local/share/Steam/steamapps/common/half-life", F_OK <unfinished ...>
[pid  5093] <... access resumed>)       = -1 ENOENT (No such file or directory)
[pid  5093] openat(AT_FDCWD, "/home/davidak/.local/share/Steam/steamapps/common", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_CLOEXEC|O_DIRECTORY <unfinished ...>
[pid  5093] <... openat resumed>)       = 68
[pid  5093] fstat64(68,  <unfinished ...>
[pid  5093] <... fstat64 resumed>{st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
[pid  5093] getdents64(68,  <unfinished ...>
[pid  5093] <... getdents64 resumed>0x88a4d6c /* 38 entries */, 32768) = 1400
[pid  5093] _llseek(68, 1,  <unfinished ...>
[pid  5093] <... _llseek resumed>[1], SEEK_SET) = 0
[pid  5093] getdents64(68,  <unfinished ...>
[pid  5093] <... getdents64 resumed>0x88a4d6c /* 37 entries */, 32768) = 1376
[pid  5093] close(68 <unfinished ...>
[pid  5093] <... close resumed>)        = 0
[pid  5093] openat(AT_FDCWD, "/home/davidak/.local/share/Steam/steamapps", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_CLOEXEC|O_DIRECTORY <unfinished ...>
[pid  5093] <... openat resumed>)       = 68
[pid  5093] fstat64(68,  <unfinished ...>
[pid  5093] <... fstat64 resumed>{st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
[pid  5093] getdents64(68,  <unfinished ...>
[pid  5093] <... getdents64 resumed>0x88a4d6c /* 52 entries */, 32768) = 2192
[pid  5093] _llseek(68, 1,  <unfinished ...>
[pid  5093] <... _llseek resumed>[1], SEEK_SET) = 0
[pid  5093] getdents64(68,  <unfinished ...>
[pid  5093] <... getdents64 resumed>0x88a4d6c /* 51 entries */, 32768) = 2168
[pid  5093] close(68 <unfinished ...>
[pid  5093] <... close resumed>)        = 0
[pid  5093] openat(AT_FDCWD, "/home/davidak/.local/share/Steam", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_CLOEXEC|O_DIRECTORY <unfinished ...>
[pid  5093] <... openat resumed>)       = 68
[pid  5093] fstat64(68,  <unfinished ...>
[pid  5093] <... fstat64 resumed>{st_mode=S_IFDIR|0700, st_size=0, ...}) = 0
[pid  5093] getdents64(68,  <unfinished ...>
[pid  5093] <... getdents64 resumed>0x88a4d6c /* 46 entries */, 32768) = 1656
[pid  5093] _llseek(68, 1,  <unfinished ...>
[pid  5093] <... _llseek resumed>[1], SEEK_SET) = 0
[pid  5093] getdents64(68,  <unfinished ...>
[pid  5093] <... getdents64 resumed>0x88a4d6c /* 45 entries */, 32768) = 1632
[pid  5093] close(68 <unfinished ...>
[pid  5093] <... close resumed>)        = 0

here are all instances of that file name:

[davidak@workstation:~]$ cat hl1_crash.txt | grep icon_close.tga
[pid  4669] readlink("graphics/icon_close.tga", 0xe1afc080, 4095) = -1 EINVAL (Invalid argument)
[pid  4669] access("/home/davidak/.local/share/Steam/graphics/icon_close.tga", F_OK) = 0
[pid  4669] stat64("/home/davidak/.local/share/Steam/graphics/icon_close.tga", {st_mode=S_IFREG|0755, st_size=1068, ...}) = 0
[pid  4645] access("/home/davidak/.local/share/Steam/graphics/icon_close.tga", F_OK <unfinished ...>
[pid  4645] openat(AT_FDCWD, "/home/davidak/.local/share/Steam/graphics/icon_close.tga", O_RDONLY <unfinished ...>
[pid  4645] access("/home/davidak/.local/share/Steam/graphics/icon_close.tga", F_OK <unfinished ...>
[pid  4645] stat64("/home/davidak/.local/share/Steam/graphics/icon_close.tga",  <unfinished ...>
[pid  5093] access("/home/davidak/.local/share/Steam/steamapps/common/Half-Life/valve_hd/resource/icon_close.tga", F_OK <unfinished ...>
[pid  5093] access("/home/davidak/.local/share/Steam/steamapps/common/half-life/valve_hd/resource/icon_close.tga", F_OK <unfinished ...>
[pid  5093] openat(AT_FDCWD, "/home/davidak/.local/share/Steam/steamapps/common/Half-Life/valve_hd/resource/icon_close.tga", O_RDONLY <unfinished ...>
[pid  5093] access("/home/davidak/.local/share/steam/steamapps/common/half-life/valve_hd/resource/icon_close.tga", F_OK <unfinished ...>
[pid  5093] access("/home/davidak/.local/share/Steam/steamapps/common/half-life/valve_hd/resource/icon_close.tga", F_OK <unfinished ...>
[pid  5093] openat(AT_FDCWD, "/home/davidak/.local/share/steam/steamapps/common/half-life/valve_hd/resource/icon_close.tga", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid  5093] access("/home/davidak/.local/share/Steam/steamapps/common/Half-Life/valve/resource/icon_close.tga", F_OK) = -1 ENOENT (No such file or directory)
[pid  5093] access("/home/davidak/.local/share/Steam/steamapps/common/half-life/valve/resource/icon_close.tga", F_OK) = -1 ENOENT (No such file or directory)
[pid  5093] openat(AT_FDCWD, "/home/davidak/.local/share/Steam/steamapps/common/Half-Life/valve/resource/icon_close.tga", O_RDONLY <unfinished ...>
[pid  5093] access("/home/davidak/.local/share/steam/steamapps/common/half-life/valve/resource/icon_close.tga", F_OK <unfinished ...>
[pid  5093] access("/home/davidak/.local/share/Steam/steamapps/common/half-life/valve/resource/icon_close.tga", F_OK <unfinished ...>
[pid  5093] openat(AT_FDCWD, "/home/davidak/.local/share/steam/steamapps/common/half-life/valve/resource/icon_close.tga", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid  5093] access("/home/davidak/.local/share/Steam/steamapps/common/Half-Life/valve/resource/icon_close.tga", F_OK) = -1 ENOENT (No such file or directory)
[pid  5093] access("/home/davidak/.local/share/Steam/steamapps/common/half-life/valve/resource/icon_close.tga", F_OK) = -1 ENOENT (No such file or directory)
[pid  5093] openat(AT_FDCWD, "/home/davidak/.local/share/Steam/steamapps/common/Half-Life/valve/resource/icon_close.tga", O_RDONLY <unfinished ...>
[pid  5093] access("/home/davidak/.local/share/steam/steamapps/common/half-life/valve/resource/icon_close.tga", F_OK <unfinished ...>
[pid  5093] access("/home/davidak/.local/share/Steam/steamapps/common/half-life/valve/resource/icon_close.tga", F_OK <unfinished ...>
[pid  5093] openat(AT_FDCWD, "/home/davidak/.local/share/steam/steamapps/common/half-life/valve/resource/icon_close.tga", O_RDONLY <unfinished ...>
[pid  5093] access("/home/davidak/.local/share/Steam/steamapps/common/Half-Life/valve_downloads/resource/icon_close.tga", F_OK <unfinished ...>
[pid  5093] access("/home/davidak/.local/share/Steam/steamapps/common/half-life/valve_downloads/resource/icon_close.tga", F_OK <unfinished ...>
[pid  5093] openat(AT_FDCWD, "/home/davidak/.local/share/Steam/steamapps/common/Half-Life/valve_downloads/resource/icon_close.tga", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid  5093] access("/home/davidak/.local/share/steam/steamapps/common/half-life/valve_downloads/resource/icon_close.tga", F_OK) = -1 ENOENT (No such file or directory)
[pid  5093] access("/home/davidak/.local/share/Steam/steamapps/common/half-life/valve_downloads/resource/icon_close.tga", F_OK) = -1 ENOENT (No such file or directory)
[pid  5093] openat(AT_FDCWD, "/home/davidak/.local/share/steam/steamapps/common/half-life/valve_downloads/resource/icon_close.tga", O_RDONLY <unfinished ...>
[pid  5093] access("/home/davidak/.local/share/Steam/steamapps/common/Half-Life/valve_hd/resource/icon_close.tga", F_OK <unfinished ...>
[pid  5093] access("/home/davidak/.local/share/Steam/steamapps/common/half-life/valve_hd/resource/icon_close.tga", F_OK <unfinished ...>
[pid  5093] openat(AT_FDCWD, "/home/davidak/.local/share/Steam/steamapps/common/Half-Life/valve_hd/resource/icon_close.tga", O_RDONLY <unfinished ...>
[pid  5093] access("/home/davidak/.local/share/steam/steamapps/common/half-life/valve_hd/resource/icon_close.tga", F_OK <unfinished ...>
[pid  5093] access("/home/davidak/.local/share/Steam/steamapps/common/half-life/valve_hd/resource/icon_close.tga", F_OK <unfinished ...>
[pid  5093] openat(AT_FDCWD, "/home/davidak/.local/share/steam/steamapps/common/half-life/valve_hd/resource/icon_close.tga", O_RDONLY <unfinished ...>
[pid  5093] access("/home/davidak/.local/share/Steam/steamapps/common/Half-Life/resource/icon_close.tga", F_OK <unfinished ...>
[pid  5093] access("/home/davidak/.local/share/Steam/steamapps/common/half-life/resource/icon_close.tga", F_OK <unfinished ...>
[pid  5093] openat(AT_FDCWD, "/home/davidak/.local/share/Steam/steamapps/common/Half-Life/resource/icon_close.tga", O_RDONLY <unfinished ...>
[pid  5093] access("/home/davidak/.local/share/steam/steamapps/common/half-life/resource/icon_close.tga", F_OK <unfinished ...>
[pid  5093] access("/home/davidak/.local/share/Steam/steamapps/common/half-life/resource/icon_close.tga", F_OK <unfinished ...>
[pid  5093] openat(AT_FDCWD, "/home/davidak/.local/share/steam/steamapps/common/half-life/resource/icon_close.tga", O_RDONLY <unfinished ...>
[pid  5093] access("/home/davidak/.local/share/Steam/steamapps/common/Half-Life/valve/resource/icon_close.tga", F_OK <unfinished ...>
[pid  5093] access("/home/davidak/.local/share/Steam/steamapps/common/half-life/valve/resource/icon_close.tga", F_OK <unfinished ...>
[pid  5093] openat(AT_FDCWD, "/home/davidak/.local/share/Steam/steamapps/common/Half-Life/valve/resource/icon_close.tga", O_RDONLY <unfinished ...>
[pid  5093] access("/home/davidak/.local/share/steam/steamapps/common/half-life/valve/resource/icon_close.tga", F_OK <unfinished ...>
[pid  5093] access("/home/davidak/.local/share/Steam/steamapps/common/half-life/valve/resource/icon_close.tga", F_OK <unfinished ...>
[pid  5093] openat(AT_FDCWD, "/home/davidak/.local/share/steam/steamapps/common/half-life/valve/resource/icon_close.tga", O_RDONLY <unfinished ...>
[pid  5093] access("/home/davidak/.local/share/Steam/steamapps/common/Half-Life/platform/resource/icon_close.tga", F_OK <unfinished ...>
[pid  5093] openat(AT_FDCWD, "/home/davidak/.local/share/Steam/steamapps/common/Half-Life/platform/resource/icon_close.tga", O_RDONLY <unfinished ...>
[pid  5093] access("/home/davidak/.local/share/Steam/steamapps/common/Half-Life/platform/resource/icon_close.tga", F_OK <unfinished ...>
[pid  5093] stat64("/home/davidak/.local/share/Steam/steamapps/common/Half-Life/platform/resource/icon_close.tga",  <unfinished ...>

these are the last output lines from that process pid:

[pid  5093] openat(AT_FDCWD, "/home/davidak/.local/share/steam/steamapps/common/half-life/valve/resource/icon_close.tga", O_RDONLY <unfinished ...>
[pid  5093] <... openat resumed>)       = -1 ENOENT (No such file or directory)
[pid  5093] access("/home/davidak/.local/share/Steam/steamapps/common/Half-Life/platform/resource/icon_close.tga", F_OK <unfinished ...>
[pid  5093] <... access resumed>)       = 0
[pid  5093] openat(AT_FDCWD, "/home/davidak/.local/share/Steam/steamapps/common/Half-Life/platform/resource/icon_close.tga", O_RDONLY <unfinished ...>
[pid  5093] <... openat resumed>)       = 68
[pid  5093] access("/home/davidak/.local/share/Steam/steamapps/common/Half-Life/platform/resource/icon_close.tga", F_OK <unfinished ...>
[pid  5093] <... access resumed>)       = 0
[pid  5093] stat64("/home/davidak/.local/share/Steam/steamapps/common/Half-Life/platform/resource/icon_close.tga",  <unfinished ...>
[pid  5093] <... stat64 resumed>{st_mode=S_IFREG|0755, st_size=1068, ...}) = 0
[pid  5093] fstat64(68,  <unfinished ...>
[pid  5093] <... fstat64 resumed>{st_mode=S_IFREG|0755, st_size=1068, ...}) = 0
[pid  5093] read(68,  <unfinished ...>
[pid  5093] <... read resumed>"\0\0\2\0\0\0\0\0\0\0\0\0\20\0\20\0 \10TWZ\0TWZ\0TWZ\0TW"..., 1024) = 1024
[pid  5093] read(68,  <unfinished ...>
[pid  5093] <... read resumed>"Z\0TWZ\0TWZ\0TWZ\0TWZ\0\0\0\0\0\0\0\0\0TRUEVI"..., 512) = 44
[pid  5093] close(68 <unfinished ...>
[pid  5093] <... close resumed>)        = 0
[pid  5093] ioctl(21, DRM_IOCTL_AMDGPU_GEM_MMAP <unfinished ...>
[pid  5093] <... ioctl resumed>, 0xffd27324) = 0
[pid  5093] mmap2(NULL, 2097152, PROT_READ|PROT_WRITE, MAP_SHARED, 21, 0x120a15000 <unfinished ...>
[pid  5093] <... mmap2 resumed>)        = 0xd0800000
[pid  5093] munmap(0xd0800000, 2097152 <unfinished ...>
[pid  5093] <... munmap resumed>)       = 0
[pid  5093] --- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=NULL} ---
[pid  5093] rt_sigaction(SIGSEGV, NULL,  <unfinished ...>
[pid  5093] <... rt_sigaction resumed>{sa_handler=0xec57560a, sa_mask=[ILL ABRT BUS FPE SEGV], sa_flags=SA_ONSTACK|SA_SIGINFO}, 8) = 0
[pid  5093] getpid( <unfinished ...>
[pid  5093] <... getpid resumed>)       = 537
[pid  5093] prctl(PR_SET_DUMPABLE, SUID_DUMP_USER <unfinished ...>
[pid  5093] <... prctl resumed>)        = 0
[pid  5093] gettid( <unfinished ...>
[pid  5093] <... gettid resumed>)       = 537
[pid  5093] mmap2(NULL, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0 <unfinished ...>
[pid  5093] <... mmap2 resumed>)        = 0xe4601000
[pid  5093] getpid( <unfinished ...>
[pid  5093] <... getpid resumed>)       = 537
[pid  5093] pipe( <unfinished ...>
[pid  5093] <... pipe resumed>[68, 70]) = 0
[pid  5093] clone(child_stack=0xe4604e6c, flags=CLONE_FS|CLONE_FILES|CLONE_UNTRACED <unfinished ...>
[pid  5093] <... clone resumed>)        = 578
[pid  5093] prctl(PR_SET_PTRACER, 578 <unfinished ...>
[pid  5093] <... prctl resumed>)        = 0
[pid  5093] write(70, "a", 1 <unfinished ...>
[pid  5093] <... write resumed>)        = 1
[pid  5093] waitpid(578,  <unfinished ...>
[pid  5093] <... waitpid resumed>[{WIFEXITED(s) && WEXITSTATUS(s) == 1}], __WALL) = 578
[pid  5093] close(68 <unfinished ...>
[pid  5093] <... close resumed>)        = 0
[pid  5093] close(70 <unfinished ...>
[pid  5093] <... close resumed>)        = 0
[pid  5093] write(2, "No minidump written, nothing to "..., 40 <unfinished ...>
[pid  5093] <... write resumed>)        = 40
[pid  5093] munmap(0xe4601000, 16384 <unfinished ...>
[pid  5093] <... munmap resumed>)       = 0
[pid  5093] rt_sigaction(SIGSEGV, {sa_handler=SIG_DFL, sa_mask=[SEGV], sa_flags=SA_RESTART},  <unfinished ...>
[pid  5093] <... rt_sigaction resumed>{sa_handler=0xec57560a, sa_mask=[ILL ABRT BUS FPE SEGV], sa_flags=SA_ONSTACK|SA_SIGINFO}, 8) = 0
[pid  5093] rt_sigreturn({mask=[]} <unfinished ...>
[pid  5093] <... rt_sigreturn resumed>) = 0
[pid  5093] --- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=NULL} ---
[pid  5093] +++ killed by SIGSEGV (core dumped) +++
[pid  5051] futex(0x7fe8be460c48, FUTEX_WAIT_BITSET_PRIVATE, 0, {tv_sec=28468, tv_nsec=554509385}, FUTEX_BITSET_MATCH_ANY <unfinished ...>

here is a log of a run without issues on ext4: hl1_run_successfull.txt.zip (17 MB, 240 MB uncompressed)

[pid  3056] execve("/home/davidak/.local/share/Steam/steamapps/common/Half-Life/hl_linux", ["/home/davidak/.local/share/Steam"..., "-steam"], 0x14e9008 /* 125 vars */) = 0
[pid  3056] [ Process PID=3056 runs in 32 bit mode. ]

let's have a look at icon_close.tga.

the second access was O_RDONLY <unfinished ...> before, now it's F_OK) = 0 the openat also sucessfull. might this the the full issue? the game seem to open the same file from different locations. i think one should be enough, but maybe it's bad code

[pid  2457] readlink("graphics/icon_close.tga", 0xe0afc080, 4095) = -1 EINVAL (Invalid argument)
[pid  2457] getcwd("/home/davidak/.local/share/Steam", 4096) = 33
[pid  2457] access("/home/davidak/.local/share/Steam/graphics/icon_close.tga", F_OK) = 0
[pid  2457] stat64("/home/davidak/.local/share/Steam/graphics/icon_close.tga", {st_mode=S_IFREG|0755, st_size=1068, ...}) = 0
[pid  2433] access("/home/davidak/.local/share/Steam/graphics/icon_close.tga", F_OK) = 0
[pid  2433] openat(AT_FDCWD, "/home/davidak/.local/share/Steam/graphics/icon_close.tga", O_RDONLY) = 138
[pid  2433] fstat64(138, {st_mode=S_IFREG|0755, st_size=1068, ...}) = 0
[pid  2433] access("/home/davidak/.local/share/Steam/graphics/icon_close.tga", F_OK) = 0
[pid  2433] stat64("/home/davidak/.local/share/Steam/graphics/icon_close.tga", {st_mode=S_IFREG|0755, st_size=1068, ...}) = 0
[pid  2433] read(138, "\0\0\2\0\0\0\0\0\0\0\0\0\20\0\20\0 \10TWZ\0TWZ\0TWZ\0TW"..., 4096) = 1068
[pid  2433] close(138)                  = 0
[pid  2433] getpid()                    = 2433
[davidak@gaming:~]$ cat hl1_run_successfull.txt | grep icon_close.tga
[pid  2457] readlink("graphics/icon_close.tga", 0xe0afc080, 4095) = -1 EINVAL (Invalid argument)
[pid  2457] access("/home/davidak/.local/share/Steam/graphics/icon_close.tga", F_OK) = 0
[pid  2457] stat64("/home/davidak/.local/share/Steam/graphics/icon_close.tga", {st_mode=S_IFREG|0755, st_size=1068, ...}) = 0
[pid  2433] access("/home/davidak/.local/share/Steam/graphics/icon_close.tga", F_OK) = 0
[pid  2433] openat(AT_FDCWD, "/home/davidak/.local/share/Steam/graphics/icon_close.tga", O_RDONLY) = 138
[pid  2433] access("/home/davidak/.local/share/Steam/graphics/icon_close.tga", F_OK) = 0
[pid  2433] stat64("/home/davidak/.local/share/Steam/graphics/icon_close.tga", {st_mode=S_IFREG|0755, st_size=1068, ...}) = 0
[pid  3056] access("/home/davidak/.local/share/Steam/steamapps/common/Half-Life/valve_hd/resource/icon_close.tga", F_OK <unfinished ...>
[pid  3056] access("/home/davidak/.local/share/Steam/steamapps/common/half-life/valve_hd/resource/icon_close.tga", F_OK <unfinished ...>
[pid  3056] openat(AT_FDCWD, "/home/davidak/.local/share/Steam/steamapps/common/Half-Life/valve_hd/resource/icon_close.tga", O_RDONLY <unfinished ...>
[pid  3056] access("/home/davidak/.local/share/steam/steamapps/common/half-life/valve_hd/resource/icon_close.tga", F_OK <unfinished ...>
[pid  3056] access("/home/davidak/.local/share/Steam/steamapps/common/half-life/valve_hd/resource/icon_close.tga", F_OK <unfinished ...>
[pid  3056] openat(AT_FDCWD, "/home/davidak/.local/share/steam/steamapps/common/half-life/valve_hd/resource/icon_close.tga", O_RDONLY <unfinished ...>
[pid  3056] access("/home/davidak/.local/share/Steam/steamapps/common/Half-Life/valve/resource/icon_close.tga", F_OK <unfinished ...>
[pid  3056] access("/home/davidak/.local/share/Steam/steamapps/common/half-life/valve/resource/icon_close.tga", F_OK <unfinished ...>
[pid  3056] access("/home/davidak/.local/share/Steam/steamapps/common/Half-Life/valve/resource/icon_close.tga", F_OK <unfinished ...>
[pid  3056] openat(AT_FDCWD, "/home/davidak/.local/share/Steam/steamapps/common/Half-Life/valve/resource/icon_close.tga", O_RDONLY <unfinished ...>
[pid  3056] access("/home/davidak/.local/share/steam/steamapps/common/half-life/valve/resource/icon_close.tga", F_OK <unfinished ...>
[pid  3056] access("/home/davidak/.local/share/Steam/steamapps/common/half-life/valve/resource/icon_close.tga", F_OK <unfinished ...>
[pid  3056] access("/home/davidak/.local/share/Steam/steamapps/common/Half-Life/valve/resource/icon_close.tga", F_OK <unfinished ...>
[pid  3056] openat(AT_FDCWD, "/home/davidak/.local/share/steam/steamapps/common/half-life/valve/resource/icon_close.tga", O_RDONLY <unfinished ...>
[pid  3056] access("/home/davidak/.local/share/Steam/steamapps/common/Half-Life/valve/resource/icon_close.tga", F_OK <unfinished ...>
[pid  3056] access("/home/davidak/.local/share/Steam/steamapps/common/half-life/valve/resource/icon_close.tga", F_OK <unfinished ...>
[pid  3056] access("/home/davidak/.local/share/Steam/steamapps/common/Half-Life/valve/resource/icon_close.tga", F_OK <unfinished ...>
[pid  3056] openat(AT_FDCWD, "/home/davidak/.local/share/Steam/steamapps/common/Half-Life/valve/resource/icon_close.tga", O_RDONLY <unfinished ...>
[pid  3056] access("/home/davidak/.local/share/steam/steamapps/common/half-life/valve/resource/icon_close.tga", F_OK <unfinished ...>
[pid  3056] access("/home/davidak/.local/share/Steam/steamapps/common/half-life/valve/resource/icon_close.tga", F_OK <unfinished ...>
[pid  3056] access("/home/davidak/.local/share/Steam/steamapps/common/Half-Life/valve/resource/icon_close.tga", F_OK <unfinished ...>
[pid  3056] openat(AT_FDCWD, "/home/davidak/.local/share/steam/steamapps/common/half-life/valve/resource/icon_close.tga", O_RDONLY <unfinished ...>
[pid  3056] access("/home/davidak/.local/share/Steam/steamapps/common/Half-Life/valve_downloads/resource/icon_close.tga", F_OK <unfinished ...>
[pid  3056] access("/home/davidak/.local/share/Steam/steamapps/common/half-life/valve_downloads/resource/icon_close.tga", F_OK <unfinished ...>
[pid  3056] openat(AT_FDCWD, "/home/davidak/.local/share/Steam/steamapps/common/Half-Life/valve_downloads/resource/icon_close.tga", O_RDONLY <unfinished ...>
[pid  3056] access("/home/davidak/.local/share/steam/steamapps/common/half-life/valve_downloads/resource/icon_close.tga", F_OK <unfinished ...>
[pid  3056] access("/home/davidak/.local/share/Steam/steamapps/common/half-life/valve_downloads/resource/icon_close.tga", F_OK <unfinished ...>
[pid  3056] openat(AT_FDCWD, "/home/davidak/.local/share/steam/steamapps/common/half-life/valve_downloads/resource/icon_close.tga", O_RDONLY <unfinished ...>
[pid  3056] access("/home/davidak/.local/share/Steam/steamapps/common/Half-Life/valve_hd/resource/icon_close.tga", F_OK <unfinished ...>
[pid  3056] access("/home/davidak/.local/share/Steam/steamapps/common/half-life/valve_hd/resource/icon_close.tga", F_OK <unfinished ...>
[pid  3056] openat(AT_FDCWD, "/home/davidak/.local/share/Steam/steamapps/common/Half-Life/valve_hd/resource/icon_close.tga", O_RDONLY <unfinished ...>
[pid  3056] access("/home/davidak/.local/share/steam/steamapps/common/half-life/valve_hd/resource/icon_close.tga", F_OK <unfinished ...>
[pid  3056] access("/home/davidak/.local/share/Steam/steamapps/common/half-life/valve_hd/resource/icon_close.tga", F_OK <unfinished ...>
[pid  3056] openat(AT_FDCWD, "/home/davidak/.local/share/steam/steamapps/common/half-life/valve_hd/resource/icon_close.tga", O_RDONLY <unfinished ...>
[pid  3056] access("/home/davidak/.local/share/Steam/steamapps/common/Half-Life/resource/icon_close.tga", F_OK <unfinished ...>
[pid  3056] access("/home/davidak/.local/share/Steam/steamapps/common/half-life/resource/icon_close.tga", F_OK <unfinished ...>
[pid  3056] openat(AT_FDCWD, "/home/davidak/.local/share/Steam/steamapps/common/Half-Life/resource/icon_close.tga", O_RDONLY <unfinished ...>
[pid  3056] access("/home/davidak/.local/share/steam/steamapps/common/half-life/resource/icon_close.tga", F_OK <unfinished ...>
[pid  3056] access("/home/davidak/.local/share/Steam/steamapps/common/half-life/resource/icon_close.tga", F_OK <unfinished ...>
[pid  3056] openat(AT_FDCWD, "/home/davidak/.local/share/steam/steamapps/common/half-life/resource/icon_close.tga", O_RDONLY <unfinished ...>
[pid  3056] access("/home/davidak/.local/share/Steam/steamapps/common/Half-Life/valve/resource/icon_close.tga", F_OK <unfinished ...>
[pid  3056] access("/home/davidak/.local/share/Steam/steamapps/common/half-life/valve/resource/icon_close.tga", F_OK <unfinished ...>
[pid  3056] access("/home/davidak/.local/share/Steam/steamapps/common/Half-Life/valve/resource/icon_close.tga", F_OK <unfinished ...>
[pid  3056] openat(AT_FDCWD, "/home/davidak/.local/share/Steam/steamapps/common/Half-Life/valve/resource/icon_close.tga", O_RDONLY <unfinished ...>
[pid  3056] access("/home/davidak/.local/share/steam/steamapps/common/half-life/valve/resource/icon_close.tga", F_OK <unfinished ...>
[pid  3056] access("/home/davidak/.local/share/Steam/steamapps/common/half-life/valve/resource/icon_close.tga", F_OK <unfinished ...>
[pid  3056] access("/home/davidak/.local/share/Steam/steamapps/common/Half-Life/valve/resource/icon_close.tga", F_OK <unfinished ...>
[pid  3056] openat(AT_FDCWD, "/home/davidak/.local/share/steam/steamapps/common/half-life/valve/resource/icon_close.tga", O_RDONLY <unfinished ...>
[pid  3056] access("/home/davidak/.local/share/Steam/steamapps/common/Half-Life/platform/resource/icon_close.tga", F_OK <unfinished ...>
[pid  3056] openat(AT_FDCWD, "/home/davidak/.local/share/Steam/steamapps/common/Half-Life/platform/resource/icon_close.tga", O_RDONLY <unfinished ...>
[pid  3056] access("/home/davidak/.local/share/Steam/steamapps/common/Half-Life/platform/resource/icon_close.tga", F_OK <unfinished ...>
[pid  3056] stat64("/home/davidak/.local/share/Steam/steamapps/common/Half-Life/platform/resource/icon_close.tga",  <unfinished ...>

@koverstreet is this helpful?

walexb commented 3 years ago

find $DIR -inum +$((2 ** 32 - 1))

this gave no result

Then all your i-nodes have 32 bit numbers.

[pid 5093] --- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=NULL} --- [pid 5093] +++ killed by SIGSEGV (core dumped) +++

Most of the reported traces are noise, but SIGSEGV and "core dumped" are not exactly a difficult thing to interpret, and is unlikely to be related to filesystem issue.

davidak commented 3 years ago

SIGSEGV and "core dumped" are not exactly a difficult thing to interpret

so, what does it mean? what is the issue and how to fix it?

is unlikely to be related to filesystem issue.

@walexb the thing is, it works with ext4 and that's the only difference!

optlink commented 3 years ago

@davidak I just went through the same issue. Turns out mounting with inodes_32bit is not good enough. You need to recopy your entire filesystem so every file/dir get assigned a new 32-bit inode. Then for the specific game I was testing I needed to manually delete the Proton prefix, possibly because it got screwed up due to the inode issue. Everything works now.

davidak commented 3 years ago

I uninstalled steam and deleted local files and reinstalled it. Some games work now, some don't. Maybe the non-working still try to access a file that is not rewritten, like glibc or something. I try to update the whole system.

The problem here seem to be the 32-bit games.

still not working games

works now

still working games

davidak commented 3 years ago

I try to update the whole system.

That did not help.

I tried to analyze the coredump:

[root@workstation:~]# coredumpctl dump --output hl_linux_coredump
           PID: 3353 (hl_linux)
           UID: 1000 (davidak)
           GID: 100 (users)
        Signal: 11 (SEGV)
     Timestamp: Thu 2021-10-07 08:09:20 CEST (3min 11s ago)
  Command Line: /home/davidak/.local/share/Steam/steamapps/common/Half-Life/hl_linux -steam
    Executable: /home/davidak/.local/share/Steam/steamapps/common/Half-Life/hl_linux
 Control Group: /user.slice/user-1000.slice/session-2.scope
          Unit: session-2.scope
         Slice: user-1000.slice
       Session: 2
     Owner UID: 1000 (davidak)
       Boot ID: 5cd27540f4b249b2a3d85202d0712fa6
    Machine ID: 7164dda2aa574ccaa37b18e260ad03d0
      Hostname: workstation
       Storage: /var/lib/systemd/coredump/core.hl_linux.1000.5cd27540f4b249b2a3d85202d0712fa6.3353.1633586960000000.lz4
       Message: Process 3353 (hl_linux) of user 1000 dumped core.
More than one entry matches, ignoring rest.

[root@workstation:~]# gdb -q -nh /home/davidak/.local/share/Steam/steamapps/common/Half-Life/hl_linux hl_linux_coredump
Reading symbols from /home/davidak/.local/share/Steam/steamapps/common/Half-Life/hl_linux...

warning: Can't open file /memfd:xshmfence (deleted) during file-backed mapping note processing

warning: Can't open file /dev/shm/u1000-Shm_23ba60af during file-backed mapping note processing

warning: Can't open file /dev/shm/u1000-Shm_68fb8531 during file-backed mapping note processing

warning: Can't open file /dev/shm/u1000-Shm_b86bae8f during file-backed mapping note processing

warning: Can't open file /dev/shm/u1000-Shm_9469b176 during file-backed mapping note processing

warning: core file may not match specified executable file.
[New LWP 3353]
[New LWP 3354]
[New LWP 3357]
[New LWP 3380]
[New LWP 3365]
[New LWP 3359]
[New LWP 3364]
[New LWP 3370]
[New LWP 3355]
[New LWP 3366]
[New LWP 3391]
[New LWP 3408]
[New LWP 3398]
[New LWP 3368]
[New LWP 3367]
[New LWP 3392]
[New LWP 3361]
[New LWP 3362]
[New LWP 3358]
[New LWP 3360]
[New LWP 3400]
[New LWP 3363]
[New LWP 3374]
[New LWP 3387]
[New LWP 3394]
[New LWP 3369]
[New LWP 3396]
[New LWP 3356]
[New LWP 3401]
[New LWP 3373]
[New LWP 3372]
[New LWP 3375]
[New LWP 3371]

warning: Could not load shared library symbols for 110 libraries, e.g. /lib32/libstdc++.so.6.
Use the "info sharedlibrary" command to see the complete listing.
Do you need "set solib-search-path" or "set sysroot"?
Core was generated by `/home/davidak/.local/share/Steam/steamapps/common/Half-Life/hl_linux -steam'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  VGUI2_Draw_Init () at ../engine/vgui2/text_draw.cpp:52
52  ../engine/vgui2/text_draw.cpp: No such file or directory.
[Current thread is 1 (LWP 3353)]
(gdb) bt
#0  VGUI2_Draw_Init () at ../engine/vgui2/text_draw.cpp:52
#1  0xf4b677b1 in Draw_Init () at ../engine/GL_DRAW.C:339
#2  0xf4ad040f in Host_Init (parms=0xf5323984 <host_parms>) at ../engine/host.c:1934
#3  0xf4afa177 in Sys_InitGame (
    lpOrgCmdLine=0x910db60 "/home/davidak/.local/share/Steam/steamapps/common/Half-Life/hl_linux -steam", 
    pBaseDir=0x804b220 <szBaseDir> "/home/davidak/.local/share/Steam/steamapps/common/Half-Life", 
    pwnd=0xf5319768 <g_Game+8>, bIsDedicated=0) at ../engine/sys_dll2.cpp:803
#4  0xf4afcbaa in CEngine::Load (this=0xf4d16aa0 <g_Engine>, dedicated=false, 
    basedir=0x804b220 <szBaseDir> "/home/davidak/.local/share/Steam/steamapps/common/Half-Life", 
    cmdline=0x910db60 "/home/davidak/.local/share/Steam/steamapps/common/Half-Life/hl_linux -steam")
    at ../engine/sys_engine.cpp:193
#5  0xf4afa570 in RunListenServer (instance=0x0, 
    basedir=0x804b220 <szBaseDir> "/home/davidak/.local/share/Steam/steamapps/common/Half-Life", 
    cmdline=0x910db60 "/home/davidak/.local/share/Steam/steamapps/common/Half-Life/hl_linux -steam", 
    postRestartCmdLineArgs=0x804d360 <main::szNewCommandParams> "", launcherFactory=
    0x8049350 <CreateInterfaceLocal(char const*, int*)>, filesystemFactory=0xf5d37d40 <CreateInterface(char const*, int*)>)
    at ../engine/sys_dll2.cpp:934
#6  0x08048d67 in main (argc=2, argv=0xff884d64) at ../launcher/launcher.cpp:439

I'm not sure this is useful.

You need to recopy your entire filesystem

@optlink is there a command to do that? it would be very time-consuming to copy everything to another storage and copy it back... might be easier to reinstall the whole system

davidak commented 3 years ago

I installed a new VM with bcachefs from 2021-10-01. The fs was mounted with inodes_32bit. It is also in fstab, but when i boot the system, the option is not applied.

The boot log says "mounted with opts: (null)". The noatime is applied tho.

I don't understand why this happens. On the hardware system, i was able to boot with this option.

optlink commented 3 years ago

@davidak I used rsync to copy my data to an external drive. It was very time-consuming but I continued to use the machine during the process without issue. Once complete, I shutdown as many programs as I could and ran rsync again to catch any changes. Then I booted off the external drive and started the process in reverse, of course making sure that inodes_32bit was set in sysfs. Finally, run rsync a fourth time and then boot off your main filesystem.

This method gives you the minimum downtime I think.

AtilaSaraiva commented 2 years ago

Is there any progress on this issue? @davidak

LukeShortCloud commented 7 months ago

@koverstreet It appears that this GitHub Issue was accidentally closed. Can it be reopened?

There was a commit last year that said #175 in an error message. That was pasted in the commit message causing GitHub to automatically assume this issue was fixed.

That is a security weakness, and leads to a warning at boot if
CONFIG_DEBUG_WX is enabled:

  powerpc/mm: Found insecure W+X mapping at address 00000000056435bc/0xc000000000000000
  WARNING: CPU: 1 PID: 1 at arch/powerpc/mm/ptdump/ptdump.c:193 note_page+0x484/0x4c0
  CPU: 1 PID: 1 Comm: swapper/0 Not tainted 6.2.0-rc1-00001-g8ae8e98aea82-dirty #175

https://github.com/koverstreet/bcachefs/commit/111bcb37385353f0510e5847d5abcd1c613dba23

Thanks for all of your hard work on Bcachefs, by the way!

LukeShortCloud commented 6 months ago

Possibly related: https://github.com/koverstreet/bcachefs/issues/650

davidak commented 6 months ago

Is there any progress on this issue? @davidak

No. I tested it with kernel 6.9.0 and was still able to reproduce the issue.

I created a partition on a second internal disk and formatted a partition with bcachefs. I mounted it with inodes_32bit every time. Then i setup Steam to install new games there and installed Half-Life. It still crashes.

Let me know if i can do anything to help debug this.