ValveSoftware / Source-1-Games

Source 1 based games such as TF2 and Counter-Strike: Source
649 stars 75 forks source link

XFS support: Source games need to use stat64/64-bit ints or be compiled for 64-bit. #1685

Open SandonV opened 10 years ago

SandonV commented 10 years ago

Please see this issue for the problem that the steam client had which is now fixed (now the problem is the games):

https://github.com/ValveSoftware/steam-for-linux/issues/2610

Anyone with XFS and a file-system > 1 TiB should be using the inode64 mount option which enables the usage of 64-bit inodes. The problem is if 32-bit programs are storing inode data in a 32-bit. I doubt steam games will be reduced on 64-bit to fix this issue so alternatively stats can be moved to stat64 or if you use this compiler flag:

_FILE_OFFSET_BITS=64 

It will usually fix the issue on existing code.

Here is the error I get trying to load a source game:

CGameStreamThread: Added instance ID 18407 for appid 240
Installing breakpad exception handler for appid(steam)/version(1394489397_client)
Installing breakpad exception handler for appid(steam)/version(1394489397_client)
AppFramework : Unable to load module /data/ubuntu_steam/.local/share/Steam/SteamApps/common/Counter-Strike Source/bin/filesystem_steam.so!
Unable to load /data/ubuntu_steam/.local/share/Steam/SteamApps/common/Counter-Strike Source/bin/filesystem_steam.soInstalling breakpad exception handler for appid(steam)/version(1394489397_client)
OnFocusWindowChanged to window type: k_EWindowTypeNonSteamDesktop, 0
####### Log failed to open /tmp/gameoverlayrenderer.log ##############
####### Log failed to open /tmp/gameoverlayrenderer.log ##############
Installing breakpad exception handler for appid(steam)/version(1394489397_client)
Installing breakpad exception handler for appid(steam)/version(1394489397_client)

A library with > 32 bit int inode number:

root@dekabutsu:~# stat "/data/ubuntu_steam/.local/share/Steam/SteamApps/common/Counter-Strike Source/bin/filesystem_stdio.so"
  File: `/data/ubuntu_steam/.local/share/Steam/SteamApps/common/Counter-Strike Source/bin/filesystem_stdio.so'
  Size: 2309285         Blocks: 4512       IO Block: 1441792 regular file
Device: 841h/2113d      Inode: 155861888557  Links: 1
Access: (0775/-rwxrwxr-x)  Uid: ( 1001/   steam)   Gid: ( 1002/   steam)
Access: 2013-12-13 17:36:48.235024281 -0800
Modify: 2013-12-13 17:36:50.386024325 -0800
Change: 2013-12-13 17:36:57.377024470 -0800
 Birth: -

System info:

Processor Information:
    Vendor:  GenuineIntel
    CPU Family:  0x6
    CPU Model:  0x2d
    CPU Stepping:  0x5
    CPU Type:  0x0
    Speed:  2601 Mhz
    32 logical processors
    16 physical processors
    HyperThreading:  Supported
    FCMOV:  Supported
    SSE2:  Supported
    SSE3:  Supported
    SSSE3:  Supported
    SSE4a:  Unsupported
    SSE41:  Supported
    SSE42:  Supported

Network Information:
    Network Speed:

Operating System Version:
    Ubuntu 12.04.1 LTS (64 bit)
    Kernel Name:  Linux
    Kernel Version:  3.10.14
    X Server Vendor:  The X.Org Foundation
    X Server Release:  11203000
    X Window Manager:  Fluxbox
    Steam Runtime Version:  steam-runtime-release_2014-02-05

Video Card:
    Driver:  NVIDIA Corporation GeForce GTX 670/PCIe/SSE2

    Driver Version:  4.4.0 NVIDIA 331.13
    OpenGL Version: 4.4
    Desktop Color Depth: 24 bits per pixel
    Monitor Refresh Rate: 31 Hz
    VendorID:  0x10de
    DeviceID:  0x1189
    Number of Monitors:  1
    Number of Logical Video Cards:  2
    Primary Display Resolution:  3840 x 2160
    Desktop Resolution: 3840 x 2160
    Primary Display Size: 43.31" x 24.41"  (49.69" diag)
                                            110.0cm x 62.0cm  (126.2cm diag)
    Primary Bus: PCI Express 16x
    Primary VRAM: 4096 MB
    Supported MSAA Modes:  2x 4x 8x 16x

Sound card:
    Audio device:

Memory:
    RAM:  131072 Mb

Miscellaneous:
    UI Language:  English
    LANG:  en_US.UTF-8
    Microphone:  Not set
    Total Hard Disk Space Available:  41686862 Mb
    Largest Free Hard Disk Block:  1397320 Mb

Installed software:

Recent Failure Reports:
    Mon Aug 12 19:45:16 2013 GMT: file ''/tmp/dumps/crash_20130812124502_2.dmp'', upload yes: ''CrashID=bp-067588d9-b325-41c2-bfca-d455b2130812''
    Mon Aug 12 19:45:17 2013 GMT: file ''/tmp/dumps/assert_20130812124504_8.dmp'', upload yes: ''CrashID=bp-b5c79ea9-4ff4-4fb6-91b5-62e912130812''
    Mon Aug 12 19:45:53 2013 GMT: file ''/tmp/dumps/crash_20130812124548_8.dmp'', upload yes: ''CrashID=bp-10691805-d088-4719-8101-99ade2130812''
    Mon Aug 12 19:45:55 2013 GMT: file ''/tmp/dumps/crash_20130812124546_2.dmp'', upload yes: ''CrashID=bp-66623043-0e33-4076-aae6-caaf02130812''
    Mon Aug 12 19:48:25 2013 GMT: file ''/tmp/dumps/assert_20130812124820_7.dmp'', upload yes: ''CrashID=bp-e3c25a26-34c8-4e05-ac81-448352130812''
    Mon Aug 12 19:48:26 2013 GMT: file ''/tmp/dumps/crash_20130812124819_2.dmp'', upload yes: ''CrashID=bp-ade470d7-81b1-4097-8546-d1be22130812''
    Sat Aug 31 05:26:29 2013 GMT: file ''/tmp/dumps/crash_20130830222629_2.dmp'', upload no: ''HTTP response code said error''
    Sat Aug 31 05:27:01 2013 GMT: file ''/tmp/dumps/crash_20130830222700_2.dmp'', upload no: ''HTTP response code said error''
    Sat Aug 31 05:27:06 2013 GMT: file ''/tmp/dumps/crash_20130830222705_7.dmp'', upload no: ''HTTP response code said error''
    Sat Aug 31 05:30:04 2013 GMT: file ''/tmp/dumps/crash_20130830223004_2.dmp'', upload no: ''HTTP response code said error''
    Sat Aug 31 05:30:06 2013 GMT: file ''/tmp/dumps/crash_20130830223006_8.dmp'', upload no: ''HTTP response code said error''
    Sun Sep  1 23:27:22 2013 GMT: file ''/tmp/dumps/crash_20130901162722_2.dmp'', upload yes: ''CrashID=bp-5876c62d-bb40-40df-9b1b-c40762130901''
    Sun Sep  1 23:27:25 2013 GMT: file ''/tmp/dumps/assert_20130901162724_8.dmp'', upload yes: ''CrashID=bp-9b02d3e8-8e50-469f-8ca9-2e3552130901''
    Sun Sep  1 23:29:35 2013 GMT: file ''/tmp/dumps/crash_20130901162934_2.dmp'', upload yes: ''CrashID=bp-98668af8-3c6d-4eab-b119-9dc912130901''
    Sun Sep  1 23:29:37 2013 GMT: file ''/tmp/dumps/assert_20130901162936_8.dmp'', upload yes: ''CrashID=bp-7bdbb04a-0106-45da-b1b4-e8a5a2130901''
    Sun Sep  1 23:30:44 2013 GMT: file ''/tmp/dumps/crash_20130901163043_2.dmp'', upload yes: ''CrashID=bp-ddcd7da0-d271-41d1-87d7-9f4232130901''
    Sun Sep  1 23:30:45 2013 GMT: file ''/tmp/dumps/assert_20130901163044_7.dmp'', upload yes: ''CrashID=bp-50ec3a9b-ffe3-44d1-8914-5fdb42130901''
    Wed Oct  9 04:38:08 2013 GMT: file ''/tmp/dumps/crash_20131008213803_2.dmp'', upload no: ''HTTP response code said error''
    Wed Oct  9 04:39:00 2013 GMT: file ''/tmp/dumps/crash_20131008213856_2.dmp'', upload no: ''HTTP response code said error''
    Wed Oct  9 04:39:08 2013 GMT: file ''/tmp/dumps/assert_20131008213903_7.dmp'', upload no: ''HTTP response code said error''
    Mon Oct 28 21:10:20 2013 GMT: file ''/tmp/dumps/crash_20131028141011_7.dmp'', upload yes: ''CrashID=bp-a111b726-d6e7-401e-8905-061ca2131028''
    Mon Oct 28 21:10:42 2013 GMT: file ''/tmp/dumps/crash_20131028141011_2.dmp'', upload no: ''Failure when receiving data from the peer''
    Mon Oct 28 21:12:28 2013 GMT: file ''/tmp/dumps/crash_20131028141222_2.dmp'', upload yes: ''CrashID=bp-dd4d416a-c434-4a0a-bc7e-4cdf12131028''
    Mon Oct 28 21:12:34 2013 GMT: file ''/tmp/dumps/crash_20131028141223_8.dmp'', upload yes: ''CrashID=bp-0265e673-6ae5-4603-8b5c-301002131028''
    Wed Nov 20 03:15:35 2013 GMT: file ''/tmp/dumps/crash_20131119191527_2.dmp'', upload no: ''Failure when receiving data from the peer''
    Sat Dec 14 01:05:32 2013 GMT: file ''/tmp/dumps/crash_20131213170527_2.dmp'', upload yes: ''CrashID=bp-207ff2db-7a87-4843-8825-b7eec2131213''
    Sat Dec 14 01:40:59 2013 GMT: file ''/tmp/dumps/assert_20131213174049_26.dmp'', upload yes: ''CrashID=bp-a05e5926-afa1-422b-9aa1-b69082131213''
    Tue Mar 11 02:41:42 2014 GMT: file ''/tmp/dumps/assert_20140310194136_36.dmp'', upload yes: ''CrashID=bp-c8de073e-ba28-4017-82f8-e02032140310''
MalkavianBilbao commented 10 years ago

Bug confirmed with Leaf 4 Dead 2. Installed in a XFS 64 bit partition it says: Unable to load module /data/ubuntu_steam/.local/share/Steam/SteamApps/common/Counter-Strike Source/bin/filesystem_steam.so!

cwadge commented 10 years ago

Confirmed; native 64-bit XFS here as well.

ahknight commented 9 years ago

Portal 2. Ubuntu 15. filesystem_steam.so. XFS. Created a library on an ext4 partition. Works like a charm.

Really? This is still a thing?

mia-0 commented 9 years ago

Note that this is no longer limited to XFS with recent systems, as ext4 and btrfs may also use 64-bit inodes. Why is this not fixed yet? Because Steam is only supported on 32-bit Ubuntu LTS? Sorry, that’s too old to work on my hardware.

I mean, I can still play really old ports like UT99 or RTCW or Doom 3 on my system without messing around with filesystems, but almost none of the Valve titles work. Why isn’t this absolutely trivial problem fixed yet?

wberrier commented 8 years ago

Surprising this hasn't been fixed... here's my work-around:

I have computer serving as a NAS with xfs exported over nfs. I have a client computer running steam. Sure enough, several games didn't load.

It's not feasible to make changes to my NAS drives, so I did the following:

create a sparse file image:

dd if=/dev/zero of=steam.img bs=1 count=0 seek=128G

create xfs filesystem that doesn't use 64bit inodes:

mkfs.xfs steam.img

Mount via automount in /etc/auto.misc:

steam  -fstype=xfs             :/nfs/path/steam.img

Then going to:

/misc/steam

it will mount the 32bit xfs image over nfs.

In case anyone else is looking for a work around...

ahknight commented 8 years ago

My work-around, since they don't care to fix this, was to create a Wintendo.

Steam for Linux is practically abandoned.

gnuheidix commented 7 years ago

I'm also affected by this issue. Can somebody estimate when a fix gets released? Thanks

Tele42 commented 7 years ago

Hello @gnuheidix, no estimates are given until there is a fix pending in a future update.

trinitronx commented 6 years ago

Can someone confirm whether filesystem_steam.so actually exists within their Steam Library Game's directory?

I am seeing this error too, and also am using a large XFS RAID volume for the Steam Library directory. However, it seems more likely that I'd see an inode access issue on a file that actually exists. Searching inside the entire ~/.steam directory does not return any file named filesystem_steam.so.

$ find /media/terabyte/games/steam/ -iname 'filesystem_steam.so'
$ echo $?
0

@Tele42, @kisak-valve: Maybe this is just a game packaging issue, and this .so library is just missing?

The error I see is:

Unable to load /media/terabyte/games/steam/steam/steamapps/common/Portal/bin/filesystem_steam.so
trinitronx commented 6 years ago

Ok, bug definitely confirmed!

Just tried moving files for Portal over to an ext4 volume instead:

mkdir ~/.steam-xfs-64bit-bugtest/
rsync -av /media/terabyte/games/steam/steam/steamapps/common/Portal ~/.steam-xfs-64bit-bugtest/
ln -s ~/.steam-xfs-64bit-bugtest/Portal   /media/terabyte/games/steam/steam/steamapps/common/Portal

Launching game now works using this workaround! So this still appears to be an issue. Also tested Half Life 2. It probably affects these at least:

$ find /media/terabyte/games/steam/steam/steamapps/common/ -iname 'hl2_linux' | xargs -I{} dirname '{}' | xargs -I{} basename '{}' 
GarrysMod
Half-Life 2
Half-Life 1 Source Deathmatch
Half-Life 2 Deathmatch
Counter-Strike Source
Day of Defeat Source
Team Fortress 2
Portal

Trying to launch Half-Life 1 gives a different error: COM_LoadFile: not enough space for game.tga

ryanpetris commented 5 years ago

I stumbled across a workaround here: http://www.tcm.phy.cam.ac.uk/sw/inodes64.html

Description from the website:

One can use LD_PRELOAD to produce a wrapper which targets the three stat() functions and readdir() that are the main cause of trouble, and returns a mangled inode number as above. This has the advantage that it only impacts certain 32 bit applications, and saner applications continue to get correct 64 bit inode numbers.

The only difference is I had to change the gcc command to the following:

gcc -c -fPIC -m32  -fno-stack-protector inode64.c

I've tried Half-Life, Half-Life 2, and Portal with this and they all appear to work without issue.

RafaelLinux commented 4 years ago

After bought HL2 Episode Two and install it on my OpenSUSE over XFS partition, I got that "COM_Loadfile: Not enough space for ... ". I asked on Steam forum, but no one replied. Now, here, reading this post, I discovered the problem is related to the format of the partition. I read some workarounds here but one of them is a parameter in compilation of the game. I can't do it, so if Steam knows this , why they don't make a better compilation?

mia-0 commented 4 years ago

On Sunday, February 9, 2020 3:58:32 AM CET Rafael Linux User wrote:

After bought HL2 Episode Two and install it on my OpenSUSE over XFS partition, I got that "COM_Loadfile: Not enough space for ... ". I asked on Steam forum, but no one replied. Now, here, reading this post, I discovered the problem is related to the format of the partition. I read some workarounds here but one of them is a parameter in compilation of the game. I can't do it, so if Steam knows this , why they don't make a better compilation?

What, you expect them to bend over backwards and spend 5 painstaking minutes to fix the build flags? Why? Gamers may moan and complain about how bad Steam has been treating them, but at the end of the day they are still giving Valve their money and their free labor and free viral marketing all the time. Valve doesn’t need to care about a platform that makes up less than one percent of Steam’s users. They don’t even need to make games.

araynard commented 4 years ago

Bug confirmed with Leaf 4 Dead 2. Installed in a XFS 64 bit partition it says: Unable to load module /data/ubuntu_steam/.local/share/Steam/SteamApps/common/Counter-Strike Source/bin/filesystem_steam.so!

I have this issue with all Valve games I tried except CS:GO. I tried Portal 1 and 2 and L4D2. I noticed this problem after I use setup MergerFS on my home partition to extend it's capacity with free space from a second drive. Both partitions are Ext4.

bryceml commented 4 years ago

I got it working on mergerfs if I left off the use_ino option, I mount with

/mergerfs/120G:/mergerfs/320G /mergerfs/mnt fuse.mergerfs allow_other,category.create=mfs 0 0

as my fstab line

YellowOnion commented 3 years ago

The file is just missing on left-4-dead-2, I don't understand how they ship a broken game, especially when they announce vulkan support week. Maybe it's a bug in steam?

mutezero commented 3 years ago

The file is just missing on left-4-dead-2, I don't understand how they ship a broken game, especially when they announce vulkan support week. Maybe it's a bug in steam?

@YellowOnion filesystem_steam is an obsolete library, it shouldn't be used in "modern" games.

eatoff8 commented 2 years ago

The file is just missing on left-4-dead-2, I don't understand how they ship a broken game, especially when they announce vulkan support week. Maybe it's a bug in steam?

Still an issue. Just installed L4D2 and that file is missing.

GloriousEggroll commented 2 years ago

nearing the end of 2022 and this issue still exists. I just verified it on L4D2 using xfs.

RafaelLinux commented 2 years ago

I think Steam will not fix any issue related to filesystems they don't use by default in their systems. XFS is a more robust filesystem than Ext4 or NTFS so it have no less functionalities than any of them to let work any game on it. It's more to "want to fix" than "it's difficult to fix".

myghi63 commented 1 year ago

Just tested here on Arch Linux, with linux-zen 6.2.12 and xfs on root. Portal 1 & 2, left 4 dead 2 and basically all my other games are working just fine, on both native builds and proton (using proton-ge 7-55)

RafaelLinux commented 1 year ago

Usually you have home and root partitions separated. Steam install games on your home partition. Is your home partition in XFS format too or you have a unique partition for all?

myghi63 commented 1 year ago

I have a single XFS partition for both root and home, and those games were installed on that partition too. But then I have to say that a friend of mine tested a game called Civilization 5 and it just crashed at launch, but it was installed via Heroic Games Launcher and using wine-ge. I'm not sure if all my games still works on a separated partition because I got no time. I'm dealing with some hard drive failures here.

RafaelLinux commented 1 year ago

Anyway, you should try games described here to have issues on XFS partitions. Is not any game, but some games (as Half Life Episode Two).

leonpano2006 commented 1 year ago

this issue also happen on goldsource and source 2

kode54 commented 10 months ago

And since the issue won't ever affect a supported Steam Deck configuration, they are still unlikely to fix it.

leonpano2006 commented 10 months ago

Anyway, you should try games described here to have issues on XFS partitions. Is not any game, but some games (as Half Life Episode Two).

Linux port was not made for steam deck only It exist (far) before steam deck is out