On Tue, 2007-05-29 at 00:53 +0200, Attilio Rao wrote: > 2007/5/28, Attilio Rao <attilio_at_freebsd.org>: > > Tor Egge wrote: > > > > > > Finally, I found that i386_ldt_grow() called smp_rendezvous() without > > > temporarily unlocking dt_lock. That caused a deadlock. Adding a temporary > > > unlock of dt_lock seems to solve the problem for me. > > > > Effectively, there is the need to release the dt_lock before to call > > smp_rendezvous() beacause other threads running on other CPUs will > > contest on this lock and it will cause a deadlock (since their > > curthreads don't hold the lock). > > I think that mantaining the current locking requirements for > > i386_ldt_grow() is still good, since, for how it is used, this is the > > lighter approach. I will add release/unrelease around smp_rendezvous() too. > > Tor, > I've updated the patch. Can you please redownload it and test/review: > http://users.gufi.org/~rookie/works/patches/schedlock/ldt2.diff I can confirm that with this patch, an SMP i386 Tinderbox machine of mine that was seeing Tor's "lock held too long" panic survives much longer. No crashes after a few port builds. Joe -- PGP Key : http://www.marcuscom.com/pgp.asc
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:11 UTC