Chris,
This update to muto handles threads exiting spontaneously without
releasing the muto properly. I think it fixes the FIXME you have in
::release, but as I can't see how release can check for other thread
activity, it may not have fixed that.
The logic it uses is:
if we fail to wait for the event,
protect ourselves with recover
check for the thread having died (should be fast - noop basically) and
if it has aquire the muto anyway.
There was also a typo in the destructor that could be causing memory
leaks within process.
Rob
mutoupdate.patch