Subject: kern/16670: softdep panics "softdep_write_inodeblock: direct pointer #1 mismatch 0 != 4081488"
To: None <gnats-bugs@gnats.netbsd.org>
From: None <yamt@mwd.biglobe.ne.jp>
List: netbsd-bugs
Date: 05/05/2002 10:25:37
>Number:         16670
>Category:       kern
>Synopsis:       softdep panics "softdep_write_inodeblock: direct pointer #1 mismatch 0 != 4081488"
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    kern-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sat May 04 18:26:00 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator:     YAMAMOTO Takashi
>Release:        NetBSD 1.5ZC
>Organization:
>Environment:
	
	
System: NetBSD bear.yamanet 1.5ZC NetBSD 1.5ZC (build) #13: Wed Apr 3 03:54:19 JST 2002 takashi@bear.yamanet:/usr/home/takashi/work/kernel/build i386
Architecture: i386
Machine: i386
>Description:
	softdep panics
	"softdep_write_inodeblock: direct pointer #1 mismatch 0 != 4081488"
	with a particular operation.
	(repeatable for me.)

#26 0xc0240ad1 in panic (
    fmt=0xc0418900 "%s: direct pointer #%d mismatch %d != %d")
    at /sys/kern/subr_prf.c:237
#27 0xc01e89a2 in initiate_write_inodeblock (inodedep=0xc91e2150, 
    bp=0xc3305658) at /sys/ufs/ffs/ffs_softdep.c:3432
#28 0xc01e8479 in softdep_disk_io_initiation (bp=0xc3305658)
    at /sys/ufs/ffs/ffs_softdep.c:3270
#29 0xc026b2f4 in spec_strategy (v=0xc9391ab8)
    at /sys/miscfs/specfs/spec_vnops.c:517
#30 0xc02664e7 in VOP_STRATEGY (bp=0xc3305658) at /sys/kern/vnode_if.c:102
#31 0xc0259640 in bwrite (bp=0xc3305658) at /sys/kern/vfs_bio.c:353
#32 0xc01e0bd1 in ffs_update (v=0xc9391b6c) at /sys/ufs/ffs/ffs_inode.c:148
#33 0xc0266377 in VOP_UPDATE (vp=0xc9389db4, access=0x0, modify=0x0, flags=1)
    at /sys/kern/vnode_if.c:1498
#34 0xc01e1588 in ffs_truncate (v=0xc9391cf4) at /sys/ufs/ffs/ffs_inode.c:345
#35 0xc0266331 in VOP_TRUNCATE (vp=0xc9389db4, length=8192, flags=0, 
    cred=0xc0b74880, p=0xc90caad4) at /sys/kern/vnode_if.c:1465
#36 0xc01f06b2 in ffs_write (v=0xc9391e4c) at /sys/ufs/ufs/ufs_readwrite.c:451
#37 0xc0265b17 in VOP_WRITE (vp=0xc9389db4, uio=0xc9391ee0, ioflag=1, 
    cred=0xc0b74880) at /sys/kern/vnode_if.c:458
#38 0xc02657c4 in vn_write (fp=0xc92f18bc, offset=0xc92f18e4, uio=0xc9391ee0, 
    cred=0xc0b74880, flags=1) at /sys/kern/vfs_vnops.c:434
#39 0xc0244712 in dofilewrite (p=0xc90caad4, fd=3, fp=0xc92f18bc, buf=0x0, 
    nbyte=8192, offset=0xc92f18e4, flags=1, retval=0xc9391f78)
    at /sys/kern/sys_generic.c:346
#40 0xc024499e in sys_write (p=0xc90caad4, v=0xc9391f80, retval=0xc9391f78)
    at /sys/kern/sys_generic.c:303
#41 0xc0323567 in syscall_plain (frame={tf_gs = 31, tf_fs = 31, tf_es = 31, 
      tf_ds = 31, tf_edi = -1077945768, tf_esi = 134519888, 
      tf_ebp = -1077945880, tf_ebx = 134519932, tf_edx = 0, 
      tf_ecx = 1208934816, tf_eax = 4, tf_trapno = 3, tf_err = 2, 
      tf_eip = 1208875219, tf_cs = 23, tf_eflags = 647, tf_esp = -1077954116, 
      tf_ss = 31, tf_vm86_es = 0, tf_vm86_ds = 0, tf_vm86_fs = 0, 
      tf_vm86_gs = 0}) at /sys/arch/i386/i386/syscall.c:140
#42 0xc0100f56 in syscall1 ()

>How-To-Repeat:
	1. enable SOFTDEP and DIAGNOSTIC.
	2. mount ffs partition with softdep.
	3. run following program on it.

====================
#include <err.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>

#define	BUFSIZE	8192
const char *test = "test";

int
main()
{
	char tmp[BUFSIZE];
	char *bad_ptr = 0;
	int fd, fd_to;

	fd_to = open(test, O_WRONLY|O_CREAT|O_TRUNC, 0777);
	if (fd_to < 0)
		err(1, "open");

	if (write(fd_to, tmp, BUFSIZE) != BUFSIZE)
		err(1, "write0");

	if (write(fd_to, bad_ptr, BUFSIZE) != BUFSIZE) /* panic here */
		err(1, "write");

	fprintf(stderr, "success\n");
}
====================
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted: