[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
ext2fs.static: thread-cancel.c:55: hurd_thread_cancel: Assertion '! __sp
From: |
Samuel Thibault |
Subject: |
ext2fs.static: thread-cancel.c:55: hurd_thread_cancel: Assertion '! __spin_lock_locked (&ss->critical_section_lock)' failed |
Date: |
Sat, 5 Aug 2006 02:27:35 +0200 |
User-agent: |
Mutt/1.5.9i-nntp |
Hi,
I've met this bug again (it was reported almost 7 years ago in debian
bts as #46859 and periodically noticed again), and a quick look at the
code upsets me:
assert (! __spin_lock_locked (&ss->critical_section_lock));
__spin_lock (&ss->critical_section_lock);
Why should one check that a spinlock is free before taking it?? Here the
purpose is to cancel _another_ thread, so it _can_ happen that the lock
be taken any time... The bug report says it was already discussed on
bug-hurd, but archives of that time aren't available... Roland said he
would not touch it until a "massive overhaul"... which never happened.
There are several such strange assertions in hurd/hurdexec.c and
sysdeps/mach/hurd/{spawni.c,jmp-unwind.c}
Shouldn't at least these assertion just be dropped?
Samuel
- ext2fs.static: thread-cancel.c:55: hurd_thread_cancel: Assertion '! __spin_lock_locked (&ss->critical_section_lock)' failed,
Samuel Thibault <=