Soft update panic while running perl 5.12 tests

Dimitry Andric dim at
Wed Sep 29 14:32:55 UTC 2010


I just encountered the following soft update panic while running perl
5.12's tests:

panic: indir_trunc: Index out of range -148 parent -2061 lbn -305164
cpuid = 3
KDB: enter: panic
[ thread pid 19 tid 100047 ]
Stopped at      kdb_enter+0x3a: movl    $0,kdb_why
db> bt
Tracing pid 19 tid 100047 td 0xc72e9b40
kdb_enter(c0cd6a90,c0cd6a90,c0cfe8ab,e6be2b58,3,...) at kdb_enter+0x3a
panic(c0cfe8ab,ffffff6c,fffff7f3,ffffffff,fffb57f4,...) at panic+0x136
indir_trunc(fffff7f3,ffffffff,c85507c0,c834d200,c733de00,...) at indir_trunc+0x4be
handle_workitem_indirblk(4,c0cd520e,df,c834d200,c834d200,...) at handle_workitem_indirblk+0x64
handle_workitem_freeblocks(0,e6be2c74,2,5dc,1e0,...) at handle_workitem_freeblocks+0x95
process_worklist_item(c0fb2f98,0,c0cfdf8d,54a,c72e9b40,...) at process_worklist_item+0x21c
softdep_process_worklist(c732aca8,0,c0cfdf8d,4cd,64,...) at softdep_process_worklist+0x8c
softdep_flush(0,e6be2d28,c0cd1c8a,349,c72ed550,...) at softdep_flush+0x2a0
fork_exit(c0afb670,0,e6be2d28) at fork_exit+0xb8
fork_trampoline() at fork_trampoline+0x8
--- trap 0, eip = 0, esp = 0xe6be2d60, ebp = 0 ---

It is consistently reproducible.  This is on a -current system, at
r213139, on i386.  Settings for the affected filesystem:

tunefs: POSIX.1e ACLs: (-a)                                disabled
tunefs: NFSv4 ACLs: (-N)                                   disabled
tunefs: MAC multilabel: (-l)                               disabled
tunefs: soft updates: (-n)                                 enabled
tunefs: soft update journaling: (-j)                       enabled
tunefs: gjournal: (-J)                                     disabled
tunefs: maximum blocks per file in a cylinder group: (-e)  2048
tunefs: average file size: (-f)                            16384
tunefs: average number of files in a directory: (-s)       64
tunefs: minimum percentage of free space: (-m)             8%
tunefs: optimization preference: (-o)                      time
tunefs: volume label: (-L)                                 dimtest1

The panic is apparently caused by perl's "op/lfs.t" test, which tests
perlio with big files.  You can test it by building the perl 5.12 port,
and then running:

cd /usr/ports/lang/perl5.12/work/perl-5.12.2/t
../miniperl op/lfs.t

Alternatively, just run "make test" in /usr/ports/lang/perl5.12.

More information about the freebsd-current mailing list