i386/124544: kernel panic in kern_lockf.c line 294

Jian Qiu swordqiu at gmail.com
Fri Jun 13 08:00:09 UTC 2008


>Number:         124544
>Category:       i386
>Synopsis:       kernel panic in kern_lockf.c line 294
>Confidential:   no
>Severity:       serious
>Priority:       low
>Responsible:    freebsd-i386
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Fri Jun 13 08:00:09 UTC 2008
>Closed-Date:
>Last-Modified:
>Originator:     Jian Qiu
>Release:        7.0-RELEASE
>Organization:
Huawei Corp.
>Environment:
FreeBSD routerOS12 7.0-RELEASE FreeBSD 7.0-RELEASE #5: Fri Jun 13 14:53:00 CST 2008     qj at routerOS12:/usr/obj/usr/src/sys/KERN_ULE  i386

>Description:
I wrote a program to test the multi-process multi-threading performance of FreeBSD and libthr. In the program, I used two file locks to synchronize the processes and a mmap shared memory to do IPC. However, the program can cause kernel panic randomly. I used kgdb to check the resuling core dump. It showed kernel was trapped in kern_lockf.c line 294, where it apparently refers to a NULL pointer. Here is the code around line 294:

292:     waitblock = (struct lockf *)td->td_wchan;
293:     /* Get the owner of the blocking lock */
294:     waitblock = waitblock->lf_next;
295:     if ((waitblock->lf_flags & F_POSIX) == 0)
296:          break;
297:     nproc = (struct proc *)waitblock->lf_id;

>How-To-Repeat:
Run my program repeatedly. Sometimes, it will cause kernel panic.
>Fix:


>Release-Note:
>Audit-Trail:
>Unformatted:


More information about the freebsd-i386 mailing list