From time to time, the startup of my Steam client on Mac OS X (10.6.8) is incredibly slow. And sometimes, it won't even launch successfully, getting stuck with a Beach Ball of Death.
A quick diagnostic comes from the powerful utility dtruss
:
$ sudo dtruss -p <PID of steam process> ... __semwait_signal(0x14D03, 0x4D03, 0x1) = -1 Err#60 __semwait_signal(0x17C03, 0x3F03, 0x1) = -1 Err#60 __semwait_signal(0xC03, 0x0, 0x1) = -1 Err#60 semop(0x2000F, 0xB5464C98, 0x1) = -1 Err#35 __semwait_signal(0xC03, 0x0, 0x1) = -1 Err#60 __semwait_signal(0x4D03, 0x14D03, 0x1) = -1 Err#60 ...
If you read a LOT of errors on __semwait_signal
and semop
lines, you can fix your client quite easily. I must say, it might have some side effects, but I've never seen any.
First, kill the Steam client (right-click on it's icon in the Dock, choose "Force Quit"), then list semaphores:
$ ipcs -s IPC status from <running system> as of Fri Nov 30 21:28:29 CET 2012 T ID KEY MODE OWNER GROUP Semaphores: s 131072 0xe93c17d9 --ra------- patpro patpro s 131073 0xc0ec4f17 --ra-ra-ra- patpro patpro s 196610 0xb9e1e4e1 --ra-ra-ra- patpro patpro s 131075 0x697a55e6 --ra-ra-ra- patpro patpro s 131076 0x2e726ce1 --ra-ra-ra- patpro patpro s 196613 0xa9ae61d6 --ra-ra-ra- patpro patpro s 131078 0x1a661f70 --ra------- patpro patpro s 196615 0x36dbd757 --ra------- patpro patpro s 196616 0x44433b26 --ra-ra-ra- patpro patpro s 196617 0x3cea9ea0 --ra-ra-ra- patpro patpro s 196618 0xec712fa7 --ra-ra-ra- patpro patpro
If your steam client is not running and you read a full list of semaphores, you might want to remove them:
$ for SEM in $(ipcs -s | awk '/^s / {print $2}'); do ipcrm -s $SEM; done
Then, your Steam client should launch faster (well, at a normal speed), and it shouldn't get stuck.
Use at your own risks.