I have an underpowered server running 7.2.6 that backs a website which
occasionally gets hit by a bunch of traffic and starts firing off "FATAL
1: Sorry, too many clients already" messages. This is all as expected,
but sometimes it just crashes. I had no clue what was going on until I
checked the stderr log (because I had set it up to use syslog). In there
I find a whole bunch of these:
IpcSemaphoreLock: semop(id=-1) failed: Invalid argument
IpcSemaphoreLock: semop(id=-1) failed: Invalid argument
IpcSemaphoreLock: semop(id=-1) failed: Invalid argument
IpcSemaphoreLock: semop(id=-1) failed: Invalid argument
IpcSemaphoreUnlock: semop(id=-1) failed: Invalid argument
IpcSemaphoreLock: semop(id=-1) failed: Invalid argument
IpcSemaphoreUnlock: semop(id=-1) failed: Invalid argument
IpcSemaphoreLock: semop(id=-1) failed: Invalid argument
Looking at the source I see proc_exit as the failure path for these two
functions (IpcSemaphoreLock, IpcSemaphoreUnlock). I've read the comments
around the code, but must admit that I can't really follow what's going
on.
Could anyone shed some light on what is going on? Certainly the semId of
-1 looks a little suspicious.
This is on freebsd 4.5
Kris Jurka