GNU screen multiuser mode is broken in OS X 10.6 (Snow Leopard)

Solution 1:

I don't know if you're still seeing this, but I am.

Screen uses a call to kill() with signal zero to validate PIDs. The cause of the issue is that kill() is unexpectedly failing with errno EPERM. This should only happen if the UID and EUID of the calling process is nonzero and doesn't match the UID and EUID of the target process, respectively.

In this particular case, the UID of the two processes in question are different and the inherited EUID of both processes are zero. This would be fine, but as a part of the PID sanity check, the EUID of both processes is set to the UID that owns the screen session. In this particular scenario, even though both EUIDs are the same, kill() still fails with errno EPERM.

I've filed bug 8965041 at bugreport.apple.com. Hopefully this is the correct avenue to have this fixed.

In the meantime, I'm working around the issue by compiling my own screen binary where I've forced CheckPid() to return 0.

Solution 2:

I use Snow Leopard server, and I use multiuser screen without problems - I use exec screen -xRR in my .profile to start screen, rather then using explicit PIDs.

Does this work for you? If so it's a problem with the PID syntax, rather then multiuser screen itself