Everyone here might remember me bugging about deadlocks on Alpha,
and me contributing a patch that seemed to fix the issue at the
Well, it _almost_ fixes the issue. Deadlocks are a lot less
frequent now--I have to hammer the filesystem for maybe half a
day to trip a deadlock again. While it's an improvement, it's
nowhere near perfect or production-ready.
ATM deadlocks are getting tripped by file creation. So far it
seems as if xlog_grant_log_space() is hanging, and the only
thing I can see in xlog_grant_log_space() that's likely to hang
indefinitely is sv_wait() calls.
I googled around a bit, and it seems that certain compiler
versions have caused problems with sv_wait() before. Somehow I
wasn't able to figure out exactly what problems they caused
(maybe I didn't dig hard enough?).
(Note that dropping back to gcc-2.95.3 is not really an option on
Alpha--2.95.3 tends to ICE when compiling SMP Alpha kernels.
It's basically gcc3 or bust, and i'd prefer 3.2.1.)
So...my questions at this point:
1) What exact problems has sv_wait() had with compilers, and what
causes them? Atomicity problems, perhaps?
2) Does sv_wait() have any known problems with gcc-3.2.1?
"If a server crashes in a server farm and no one pings it, does
it still cost four figures to fix?"