Subject: kern/1256: panic lockholder (156) != 0
To: None <gnats-bugs@gnats.netbsd.org>
From: enami tsugutomo <enami@sys.ptg.sony.co.jp>
List: netbsd-bugs
Date: 07/22/1995 14:36:48
>Number: 1256
>Category: kern
>Synopsis: 3 or more simultaneous access to CD-ROM causes panic.
>Confidential: no
>Severity: serious
>Priority: low
>Responsible: kern-bug-people (Kernel Bug People)
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Sat Jul 22 19:20:01 1995
>Last-Modified:
>Originator: enami tsugutomo
>Organization:
Sony Corporation
>Release: arround jul 7
>Environment:
System: NetBSD king-show 1.0A NetBSD 1.0A (KINGSHOW) #10: Sat Jul 22 14:11:11 JST 1995 root@king-show:/usr/src/sys/arch/i386/compile/KINGSHOW i386
SCSI Adaptor: Buslogic BT-445C
CD-ROM drive: ICM CD-620S or Nakamichi MBR-7.4
>Description:
If 3 or more processes access save cdrom drive simltaneously,
kernel panics with message "lockholder (XXX) != 0" at cd9660_lock.
>How-To-Repeat:
# assume that cdrom is mounted on /cd/0
find /cd/0 -print & find /cd/0 -print & find /cd/0 -print &
>Fix:
In the function cd9660_lock, it seems that we should go back
to check if someone has lock after wakeup from sleep. Otherwise,
two or more slept processes work without locking each other.
So, I tried to put `goto start;' just after the sleep,
but it seems the panic is gone, but some processes are
deadlocked now.
>Audit-Trail:
>Unformatted: