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