kern/145081: dsp.c returning from system call with Giant lock he

看板FB_bugs作者時間16年前 (2010/04/06 10:24), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
>Number: 145081 >Category: kern >Synopsis: dsp.c returning from system call with Giant lock held after r203860 >Confidential: no >Severity: serious >Priority: high >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Sat Mar 27 15:20:01 UTC 2010 >Closed-Date: >Last-Modified: >Originator: Tod McQuillin >Release: FreeBSD 8.0-STABLE i386 >Organization: Haphazard >Environment: System: FreeBSD reizouko.pun-pun.prv 8.0-STABLE FreeBSD 8.0-STABLE #1 r205666M: Sat Mar 27 23:05:26 JST 2010 devin@reizouko.pun-pun.prv:/usr/obj/usr/src.svn/sys/REIZOUKO i386 System hardware: IBM Thinkpad X20 >Description: When unplugging the machine from the AC adaptor, within a few seconds the system freezes up. This occurs when GNOME/x11 is running but not in single user mode. No messages are logged on the console, but when booting a kernel with INVARIANTS and WITNESS enabled, the following panic is observed: System call ioctl returning with the following locks held: exclusive sleep mutex Giant (Giant) r = 0 (0xc0aafd50) locked @ /usr/src/sys/dev/sound/pcm/dsp.c:1064 panic: witness_warn KDB: enter: panic [thread pid 1087 tid 100149 ] Stopped at kdb_enter+0x3a: movl $0,kdb_why Investigation with KDB shows: db> where Tracing pid 1807 tid 100149 td 0xc448c6f0 kdb_enter(c09e9971,c09e9971,c09c08e3,cf840c54,cf840c54,...) at kdb_enter+0x3a panic(c09c08e3,c099f329,0,0,0,...) at panic_0xd1 witness_warn(2,0,c0a21845,c0a0127d,c2c522a8,...) at witness_warn+0x1e9 syscall(cf840d38) at syscall+0x2d8 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (0, FreeBSD ELF32, nosys) eip = 0x294c5873, esp = 0xbf9fcd4c, ebp = 0xbf9fcd88 --- exclusive sleep mutex Giant (Giant) r = 0 (0xc0aafd50) locked @ /usr/src/sys/dev/sound/pcm/dsp.c:1064 db> show pcpu cpuid = 0 dynamic pcpu = 0x58eb00 curthread = 0xc448c6f0: pid 1807 "gnome-power-manager" curpcb = 0xcf840d90 fpcurthread = none idlethread = 0xc286c940: pid 11 "idle" APIC ID = 0 currentldt = 0x50 spin locks held: >How-To-Repeat: Run GNOME on FreeBSD 8.0-STABLE (after SVN r203860) with gnome-power-manager on an IBM Thinkpad X20. Unplug the AC adaptor. The system will lock up within 3-7 seconds. The problem seems to have been introduced with SVN r203860. >Fix: The following patch corrects the problem on my test system: Index: sys/dev/sound/pcm/dsp.c =================================================================== --- sys/dev/sound/pcm/dsp.c (revision 205666) +++ sys/dev/sound/pcm/dsp.c (working copy) @@ -1071,6 +1071,7 @@ if (IOCGROUP(cmd) == 'M') { if (cmd == OSS_GETVERSION) { *arg_i = SOUND_VERSION; + PCM_GIANT_EXIT(d); return (0); } ret = dsp_ioctl_channel(i_dev, PCM_VOLCH(i_dev), cmd, arg); >Release-Note: >Audit-Trail: >Unformatted: _______________________________________________ freebsd-bugs@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-bugs To unsubscribe, send any mail to "freebsd-bugs-unsubscribe@freebsd.org"
文章代碼(AID): #1Bkfj7Zi (FB_bugs)