NetBSD Problem Report #39245

From stix@stix.id.au  Tue Jul 29 10:35:12 2008
Return-Path: <stix@stix.id.au>
Received: from mail.netbsd.org (mail.netbsd.org [204.152.190.11])
	by narn.NetBSD.org (Postfix) with ESMTP id 6687363B99A
	for <gnats-bugs@gnats.NetBSD.org>; Tue, 29 Jul 2008 10:35:12 +0000 (UTC)
Message-Id: <20080729103507.B678967FA3@stix.id.au>
Date: Tue, 29 Jul 2008 20:35:07 +1000 (EST)
From: stix@stix.id.au
Reply-To: stix@stix.id.au
To: gnats-bugs@gnats.NetBSD.org
Subject: kernel panic writing at EOT/EOM
X-Send-Pr-Version: 3.95

>Number:         39245
>Category:       kern
>Synopsis:       kernel panic writing at EOT/EOM
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    kern-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Tue Jul 29 10:40:01 +0000 2008
>Originator:     Paul Ripke
>Release:        NetBSD 4.0_STABLE
>Organization:
>Environment:
System: NetBSD zion.stix.org.au 4.0_STABLE NetBSD 4.0_STABLE (ZION) #1: Sun Jul 27 18:58:48 EST 2008 stix@zion.stix.org.au:/export/netbsd/netbsd-4/obj.i386/export/netbsd/netbsd-4/src/sys/arch/i386/compile/ZION i386

Architecture: i386
Machine: i386

>Description:

Kernel panics when writing to a tape and reaching end-of-tape (EOT),
end-of-media (EOM).
Tape drive and controller are:

ahc0 at pci2 dev 10 function 0: Adaptec 29160B Ultra160 SCSI adapter
ahc0: interrupting at ioapic0 pin 22 (irq 10)
ahc0: aic7892: Ultra160 Wide Channel A, SCSI Id=7, 32/253 SCBs
scsibus0 at ahc0: 16 targets, 8 luns per target
st0 at scsibus0 target 6 lun 0: <HP, Ultrium 1-SCSI, E16V> tape removable
st0: density code 64, variable blocks, write-enabled
st0: sync (25.00ns offset 15), 16-bit (80.000MB/s) transfers

Panic is:

panic: kernel diagnostic assertion "(bp->b_flags & B_ERROR) == 0" failed: file "/export/netbsd/netbsd-4/src/sys/kern/kern_physio.c", line 201
Stopped in pid 116.1 (physiod) at netbsd:cpu_Debugger+0x4:        popl    %ebp
cpu_Debugger(c05345b0,cc688be8,cd03d3e0,c05a2ce0,3ea) at netbsd:cpu_Debugger+0x4
panic(c059058c,c0522931,c052f15a,c056e718,c9) at netbsd:panic+0x146
__assert(c0522931,c056e718,c9,c052f15a,10000) at netbsd:__assert+0x2e
physio_done(c1dc9bd0,0,c052f0f8,0,cc628450) at netbsd:physio_done+0xf5
workqueue_worker(cc628450,0,c01002d2,fbff,c01002d2) at netbsd:workqueue_worker+0x8c

I haven't tried this with current sources, but looking at the code, I
can't see any major divergencies.
st was running with default configuration, which seems to imply variable
block size and no early warning at EOM.

>How-To-Repeat:

Generate enough data to fill a tape, and keep writing. In the case
above, I was writing 64 KB blocks.

>Fix:

NetBSD Home
NetBSD PR Database Search

(Contact us) $NetBSD: query-full-pr,v 1.39 2013/11/01 18:47:49 spz Exp $
$NetBSD: gnats_config.sh,v 1.8 2006/05/07 09:23:38 tsutsui Exp $
Copyright © 1994-2007 The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.