On 10 December 2011 14:34, CVS User heller heller@common-lisp.net wrote:
- swank.lisp (auto-flush-loop): Don't use call-with-io-timeout.
Removing it had no effect on the number of failed tests. If you want it back, first create a test case to demonstrate the problem.
This is bastard to test, honestly. To test it we need to catch the system in a very transient state. One such state that can occur in SBCL looks like this:
User thread T1: compiles stuff, grabs a system internal lock X...
Auto flush thread T2: wants to flush, grabs lock on the stream. Due to methods added to gray streams by thread T1 the method cache has been invalidated, and in trying to update it tries to grab the same lock X -- and goes to sleep on it.
T1: generates a compiler note, tries to write it to the stream locked by auto-flush threads --> deadlock.
While the SBCL side of this problem is going to get a lot better soonish, I'm still sad to see that timeout go away.
Cheers,
-- Nikodemus