In article <[EMAIL PROTECTED]>,
Daniel Eischen <[EMAIL PROTECTED]> writes:
> [ Followups to -current ]
>> [...] However, this work has uncovered either a rare race condition
>> in the 4.X pthread implementation (also seen on a current 5.0
>> system) or a bad assumption in the GC signal code (abstracted
>> below). [...]
> Try the following patch; this is to -current, you'll have to massage
> it a bit for -stable (Hint: s/curthread/_thread_run/ in -stable).
I have added Daniel's patch to my 4.4-STABLE tree (converting it as he
suggested) and rebuilt libc_r.so.4. I can confirm (1) that the test
case I posted now operates fine; (2) that the hack to ignore the
spurious EINTR return from pthread_join() in boehm-gc is no longer
required; and (3) that the more complex test case runs, on average,
about 200-400 complete test cycles without deadlock compared to the
past rate of deadlock of approximately 1 out of every 6-12 cycles.
The rarer deadlock is still being investigated but it looks like a
different problem than that addressed by Daniel's patch. I will post
another test case or more information (to -hackers) once I have it.
Great work Daniel. I (and future libjava users) thank you.
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message