Do you have readlink installed?
Can you get this to happen consistently? If so, can you outline the steps to make this happen?
Thanks!
Yes, I have readlink installed. Here's what it spits out for the broken link:
[stephen@Thor .steam]$ readlink root
/home/stephen/.steam/root
[stephen@Thor .steam]$ readlink -e root
[stephen@Thor .steam]$
I can get this to happen every time, just by starting Steam from the desktop launcher (the steam.desktop file). If I start it from a terminal (using the 'steam' command) it doesn't change the link.
I modified the desktop launcher to start Steam under strace to have a look at what was going on, here's some of the entries that mention the root symlink:
2584 readlink("/home/stephen/.steam/root", "/home/stephen/Steam/", 21) = 20
...
2619 execve("/usr/bin/rm", ["rm", "-f", "/home/stephen/.steam/root"], [/* 28 vars */]) = 0
...
2619 newfstatat(AT_FDCWD, "/home/stephen/.steam/root", {st_mode=S_IFLNK|0777, st_size=20, ...}, AT_SYMLINK_NOFOLLOW) = 0
2619 unlinkat(AT_FDCWD, "/home/stephen/.steam/root", 0) = 0
...
2620 execve("/usr/bin/ln", ["ln", "-s", "/home/stephen/Steam", "/home/stephen/.steam/root"], [/* 28 vars */]) = 0
...
2749 execve("/usr/bin/rm", ["rm", "-f", "/home/stephen/.steam/root"], [/* 34 vars */]) = 0
...
2750 execve("/usr/bin/ln", ["ln", "-s", "/home/stephen/.steam/root", "/home/stephen/.steam/root"], [/* 34 vars */]) = 0
Another odd thing I get when launching Steam from the desktop link as opposed from the command line. When I exit Steam I get a "Updating Steam" window, which seems to do something, and then the main Steam window will reappear. I need to exit a second time for it to actually close.
Regards
Stephen
That's really strange. It seems like the /usr/bin/steam script is repairing the symlink, but then the steam.sh script seems like it thinks it's being called as ~/.steam/root/steam.sh instead of ~/Steam/steam.sh
Can you add this line to the top of both scripts and post the output?
set -x; echo "argv0 = $0"
Thanks!
I had to slightly modify your modifications as I couldn't get the output when launching from the Desktop. I added this instead:
set -x
exec > /home/stephen/steamsh.log 2>&1
echo "argv0 = $0"
The output from /usr/bin/steam is:
+ echo 'argv0 = /usr/bin/steam'
argv0 = /usr/bin/steam
+ LAUNCHSTEAMDIR=/home/stephen/Steam
+ LAUNCHSTEAMPLATFORM=ubuntu12_32
+ LAUNCHSTEAMBIN=/home/stephen/Steam/ubuntu12_32
+ LAUNCHSTEAMBOOTSTRAP=/home/stephen/Steam/steam.sh
+ LAUNCHSTEAMBOOTSTRAPFILE=/usr/lib/steam/bootstraplinux_ubuntu12_32.tar.xz
+ EXELINK=/home/stephen/.steampath
+ STEAMROOTLINK=/home/stephen/.steam/root
+ '[' -x /home/stephen/Steam/steam.sh ']'
++ readlink -e /home/stephen/.steam/root
+ LAUNCHSTEAMDIR=/home/stephen/Steam
+ cd /home/stephen/Steam
+ exec /home/stephen/Steam/steam.sh
+ exec
And the output from Steam/steam.sh is:
+ echo 'argv0 = /home/stephen/Steam/steam.sh'
argv0 = /home/stephen/Steam/steam.sh
++ cd /home/stephen/Steam
++ echo /home/stephen/Steam
+ STEAMROOT=/home/stephen/Steam
+ '[' -z ']'
+ STEAMEXE=steam
++ uname
+ UNAME=Linux
+ '[' Linux == Linux ']'
++ uname -si
+ PLATFORMDIST='Linux x86_64'
++ uname -sr
+ PLATFORMRELEASE='Linux 3.6.10-2.fc17.x86_64'
+ '[' steam == steamcmd ']'
+ '[' 'Linux x86_64' == Ubuntu ']'
+ PLATFORM=ubuntu12_32
+ EXELINK=/home/stephen/.steampath
+ PIDFILE=/home/stephen/.steampid
+ STEAMRUNCMD=/home/stephen/.steam/runcmd
+ STEAMBINLINK=/home/stephen/.steam/bin
+ STEAMROOTLINK=/home/stephen/.steam/root
++ pidof /home/stephen/Steam/ubuntu12_32/steam
/home/stephen/Steam/steam.sh: line 50: pidof: command not found
+ ALREADYRUNNINGPID=
+ '[' ']'
+ '[' '!' -e /home/stephen/.steam ']'
+ rm -f /home/stephen/.steam/runcmd
+ rm -f /home/stephen/.steampath
+ ln -s /home/stephen/Steam/ubuntu12_32/steam /home/stephen/.steampath
+ rm -f /home/stephen/.steam/root
+ ln -s /home/stephen/Steam /home/stephen/.steam/root
+ rm -f /home/stephen/.steam/bin
+ ln -s /home/stephen/Steam/ubuntu12_32 /home/stephen/.steam/bin
+ echo 3356
+ export LD_LIBRARY_PATH=/home/stephen/Steam/ubuntu12_32:
+ LD_LIBRARY_PATH=/home/stephen/Steam/ubuntu12_32:
+ export SDL_VIDEO_X11_DGAMOUSE=0
+ SDL_VIDEO_X11_DGAMOUSE=0
+ ulimit -n 2048
+ cd /home/stephen/Steam
+ STATUS=42
+ '[' 42 -eq 42 ']'
+ /home/stephen/Steam/ubuntu12_32/steam
Installing breakpad exception handler for appid(steam)/version(1355957371_client)
Installing breakpad exception handler for appid(steam)/version(1355957371_client)
Installing breakpad exception handler for appid(steam)/version(1355957371_client)
Installing breakpad exception handler for appid(steam)/version(1355957371_client)
Looks like steam didn't shutdown cleanly, scheduling immediate update check
+ STATUS=42
+ '[' 42 -eq 42 -a ubuntu12_32 == osx32 -a -f Info.plist ']'
+ '[' 42 -eq 42 ']'
+ /home/stephen/Steam/ubuntu12_32/steam
Installing breakpad exception handler for appid(steam)/version(1355957371_client)
Installing breakpad exception handler for appid(steam)/version(1355957371_client)
unlinked 0 orphaned pipes
removing stale semaphore last operated on by process 3260 with name 0eBlobRegistryMutex_DB39A5C99C2947D5B41306F3B2DFCE5A
removing stale semaphore last operated on by process 3260 with name 0eBlobRegistrySignal_DB39A5C99C2947D5B41306F3B2DFCE5A
removing stale semaphore last operated on by process 3260 with name 0emSteamEngineInstance
removing stale semaphore last operated on by process 3260 with name 0eSteamEngineLock
Installing breakpad exception handler for appid(steam)/version(1355957371_client)
[1226/175737:WARNING:proxy_service.cc(646)] PAC support disabled because there is no system implementation
Installing breakpad exception handler for appid(steam)/version(1355957371_client)
Installing breakpad exception handler for appid(steam)/version(1355957371_client)
Installing breakpad exception handler for appid(steam)/version(1355957371_client)
Installing breakpad exception handler for appid(steam)/version(1355957371_client)
Generating new string page texture 2: 48x256, total string texture memory is 49.15 KB
Generating new string page texture 3: 384x256, total string texture memory is 442.37 KB
Installing breakpad exception handler for appid(steam)/version(1355957371_client)
Installing breakpad exception handler for appid(steam)/version(1355957371_client)
Installing breakpad exception handler for appid(steam)/version(1355957371_client)
Installing breakpad exception handler for appid(steam)/version(1355957371_client)
Adding license for package 2832
Adding license for package 6896
Adding license for package 7353
Adding license for package 8183
Adding license for package 1
Adding license for package 11
Adding license for package 79
Adding license for package 469
Adding license for package 7540
Adding license for package 8535
Adding license for package 8468
Adding license for package 11274
Adding license for package 7875
Adding license for package 11039
Adding license for package 13503
Adding license for package 13054
Adding license for package 16831
Adding license for package 16589
Adding license for package 0
Adding license for package 18029
Adding license for package 18639
roaming config store loaded successfully - 3053 bytes.
migrating temporary roaming config store
ExecCommandLine: "/home/stephen/Steam/ubuntu12_32/steam"
Generating new string page texture 71: 128x256, total string texture memory is 573.44 KB
Generating new string page texture 72: 128x256, total string texture memory is 131.07 KB
Generating new string page texture 73: 256x256, total string texture memory is 835.58 KB
Generating new string page texture 74: 64x256, total string texture memory is 901.12 KB
Generating new string page texture 75: 32x256, total string texture memory is 933.89 KB
System startup time: 7.91 seconds
/home/stephen/.steam/root/steam.sh: line 200: pidof: command not found
/home/stephen/.steam/root/steam.sh: line 286: /home/stephen/.steam/root/ubuntu12_32/steam: Too many levels of symbolic links
/home/stephen/.steam/root/steam.sh: line 307: /home/stephen/.steam/root/steam.sh: Too many levels of symbolic links
/home/stephen/.steam/root/steam.sh: line 307: exec: /home/stephen/.steam/root/steam.sh: cannot execute: Too many levels of symbolic links
Installing breakpad exception handler for appid(steam)/version(1355957371_client)
Installing breakpad exception handler for appid(steam)/version(1355957371_client)
I've done some more digging with strace and it seems the culprit has something to do with driverhelper.py calling steam.sh (attempting to open a link). When driverhelper.py calls steam.sh, it uses the /home/stephen/.steam/root/steam.sh form.
The reason my above logging wasn't picking that up was that the steam.sh file is getting replaced on startup with a smaller (4039 bytes) version, and is reverted to an original copy of the larger (9130 bytes) version.
Good catch! Thanks for the info. :)
This is fixed for the next Steam update, thanks!
SDL_VIDEO_X11_DGAMOUSE=0x1 2012-12
Running on Fedora 17 (64-bit) with XFCE as desktop environment.
When starting Steam from the desktop launcher my ~/.steam directory goes from looking like this:
to looking like this:
Steam somehow thinks it's installed to /home/stephen/.steam/root, and updates its link to point there causing a recursive loop.
Once this happens, Steam will not start.
Deleting the root link and replacing it with the original fixes the problem.
Regards
Stephen