Don't hold me to this :-) but i believe Solaris has a bug/ feature round timed
thread waits and server time changes, earlier versions of solaris <8 had an issue where they might not wake up if waiting during the change and this was fixed v.8+ with spurious thread wake up, i.e. your waits wake up without the lock.
The theory as everyone should always be implementing their waits in a loop (as all good books, Sun, IBM etc tell them) it'll all be ok . unfortunately there is a breed of threading programmer who refuses to accept spurious thread wake up and don't (and actually Sun sometimes in their swing code ??)
make sure all your thread waits if you have any are in the loop that
test the notify condition on wake up.
"Eagles may soar but weasels don't get sucked into jet engines" SCJP 1.6, SCWCD 1.4, SCJD 1.5,SCBCD 5