From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1761482AbXIMJUg (ORCPT ); Thu, 13 Sep 2007 05:20:36 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1756850AbXIMJU1 (ORCPT ); Thu, 13 Sep 2007 05:20:27 -0400 Received: from nn7.de ([85.214.94.156]:44561 "EHLO nn7.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756805AbXIMJU0 (ORCPT ); Thu, 13 Sep 2007 05:20:26 -0400 Subject: 2.6.22.6: kernel BUG at fs/locks.c:171 From: Soeren Sonnenburg To: Linux Kernel Content-Type: multipart/mixed; boundary="=-sPGUTum3s68J2m9fDbje" Date: Thu, 13 Sep 2007 11:20:22 +0200 Message-Id: <1189675222.5352.10.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.10.3 Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org --=-sPGUTum3s68J2m9fDbje Content-Type: text/plain Content-Transfer-Encoding: 7bit Dear all, I've just seen this in dmesg on a AMD K7 / kernel 2.6.22.6 machine (config attached). Any ideas / which further information needed ? Soeren ------------[ cut here ]------------ kernel BUG at fs/locks.c:171! invalid opcode: 0000 [#1] Modules linked in: ipt_iprange ipt_REDIRECT capi kernelcapi capifs ipt_REJECT xt_tcpudp xt_state xt_limit ipt_LOG ipt_MASQUERADE iptable_mangle iptable_nat nf_conntrack_ipv4 iptable_filter ip_tables x_tables b44 ohci1394 ieee1394 nf_nat_ftp nf_nat nf_conntrack_ftp nf_conntrack lcd tda827x saa7134_dvb dvb_pll video_buf_dvb tuner tda1004x ves1820 usb_storage usblp saa7134 compat_ioctl32 budget_ci budget_core dvb_ttpci dvb_core saa7146_vv video_buf saa7146 ttpci_eeprom via_agp ir_kbd_i2c videodev v4l2_common v4l1_compat ir_common agpgart CPU: 0 EIP: 0060:[] Not tainted VLI EFLAGS: 00010206 (2.6.22.6 #1) EIP is at locks_free_lock+0xb/0x3b eax: e1d07f9c ebx: e1d07f80 ecx: f5f5e2f0 edx: 00000000 esi: 00000000 edi: 00000000 ebp: 00000000 esp: da3d7f04 ds: 007b es: 007b fs: 0000 gs: 0033 ss: 0068 Process mrtg-load (pid: 19688, ti=da3d6000 task=f5e3a030 task.ti=da3d6000) Stack: 00000000 c015972b 00000002 c04889c8 c012b920 f5f5e290 c048541c f0ed3ca0 01485414 00000000 e1d07f80 00000000 f0f39f58 44ef35f1 f62fc2ac 00000000 00000000 f5f5e290 00000000 d23106c0 c015a891 00000000 00000007 00000004 Call Trace: [] __posix_lock_file+0x44e/0x47f [] getnstimeofday+0x2b/0xaf [] fcntl_setlk+0xff/0x1f6 [] do_setitimer+0xfa/0x226 [] sys_fcntl64+0x74/0x85 [] syscall_call+0x7/0xb ======================= Code: 74 1b 8b 15 30 93 48 c0 8d 43 04 89 53 04 89 42 04 a3 30 93 48 c0 c7 40 04 30 93 48 c0 5b 5e c3 53 89 c3 8d 40 1c 39 43 1c 74 04 <0f> 0b eb fe 8d 43 0c 39 43 0c 74 04 0f 0b eb fe 8d 43 04 39 43 EIP: [] locks_free_lock+0xb/0x3b SS:ESP 0068:da3d7f04 BUG: unable to handle kernel paging request at virtual address 9ee420b0 printing eip: c014ab7d *pde = 00000000 Oops: 0002 [#2] Modules linked in: ipt_iprange ipt_REDIRECT capi kernelcapi capifs ipt_REJECT xt_tcpudp xt_state xt_limit ipt_LOG ipt_MASQUERADE iptable_mangle iptable_nat nf_conntrack_ipv4 iptable_filter ip_tables x_tables b44 ohci1394 ieee1394 nf_nat_ftp nf_nat nf_conntrack_ftp nf_conntrack lcd tda827x saa7134_dvb dvb_pll video_buf_dvb tuner tda1004x ves1820 usb_storage usblp saa7134 compat_ioctl32 budget_ci budget_core dvb_ttpci dvb_core saa7146_vv video_buf saa7146 ttpci_eeprom via_agp ir_kbd_i2c videodev v4l2_common v4l1_compat ir_common agpgart CPU: 0 EIP: 0060:[] Not tainted VLI EFLAGS: 00010082 (2.6.22.6 #1) EIP is at free_block+0x61/0xfb eax: a75b2c19 ebx: c1cf6c10 ecx: e1d070c4 edx: 9ee420ac esi: e1d07000 edi: dfde6960 ebp: dfde7620 esp: dfd87f44 ds: 007b es: 007b fs: 0000 gs: 0000 ss: 0068 Process events/0 (pid: 4, ti=dfd86000 task=dfdc4a50 task.ti=dfd86000) Stack: 00000012 00000000 00000018 00000000 c1cf6c10 c1cf6c10 00000018 c1cf6c00 dfde7620 c014ac86 00000000 dfde6960 dfde7620 c0521d20 00000000 c014b869 00000000 00000000 dfde69e0 c0521d20 c014b827 c0125955 dfdc4b5c 8f0c99c0 Call Trace: [] drain_array+0x6f/0x89 [] cache_reap+0x42/0xde [] cache_reap+0x0/0xde [] run_workqueue+0x6b/0xdf [] worker_thread+0x0/0xbd [] worker_thread+0xb2/0xbd [] autoremove_wake_function+0x0/0x35 [] kthread+0x36/0x5a [] kthread+0x0/0x5a [] kernel_thread_helper+0x7/0x10 ======================= Code: 8b 02 25 00 40 02 00 3d 00 40 02 00 75 03 8b 52 0c 8b 02 84 c0 78 04 0f 0b eb fe 8b 72 1c 8b 54 24 28 8b 46 04 8b 7c 95 4c 8b 16 <89> 42 04 89 10 2b 4e 0c c7 06 00 01 10 00 c7 46 04 00 02 20 00 EIP: [] free_block+0x61/0xfb SS:ESP 0068:dfd87f44 ------------[ cut here ]------------ kernel BUG at fs/locks.c:171! invalid opcode: 0000 [#3] Modules linked in: ipt_iprange ipt_REDIRECT capi kernelcapi capifs ipt_REJECT xt_tcpudp xt_state xt_limit ipt_LOG ipt_MASQUERADE iptable_mangle iptable_nat nf_conntrack_ipv4 iptable_filter ip_tables x_tables b44 ohci1394 ieee1394 nf_nat_ftp nf_nat nf_conntrack_ftp nf_conntrack lcd tda827x saa7134_dvb dvb_pll video_buf_dvb tuner tda1004x ves1820 usb_storage usblp saa7134 compat_ioctl32 budget_ci budget_core dvb_ttpci dvb_core saa7146_vv video_buf saa7146 ttpci_eeprom via_agp ir_kbd_i2c videodev v4l2_common v4l1_compat ir_common agpgart CPU: 0 EIP: 0060:[] Not tainted VLI EFLAGS: 00010287 (2.6.22.6 #1) EIP is at locks_free_lock+0xb/0x3b eax: e1d07f40 ebx: e1d07f24 ecx: dfde7620 edx: c16bebc0 esi: 00000000 edi: 00000000 ebp: f5f5e0c4 esp: f1309efc ds: 007b es: 007b fs: 0000 gs: 0033 ss: 0068 Process nmbd (pid: 3522, ti=f1308000 task=f12ba590 task.ti=f1308000) Stack: 00000000 c015972b f10b8d4c c1f0d380 02e58f5c f5f5e3a4 000007e8 00000000 010b8d4c f5f5e120 e1d07f24 00000001 000000a8 00000000 f5f5eca0 00000000 00000000 f5f5e3a4 00000000 f635a260 c015a13f 00000000 0000000e 0000000a Call Trace: [] __posix_lock_file+0x44e/0x47f [] fcntl_setlk64+0xff/0x1f4 [] sys_fcntl64+0x62/0x85 [] syscall_call+0x7/0xb ======================= Code: 74 1b 8b 15 30 93 48 c0 8d 43 04 89 53 04 89 42 04 a3 30 93 48 c0 c7 40 04 30 93 48 c0 5b 5e c3 53 89 c3 8d 40 1c 39 43 1c 74 04 <0f> 0b eb fe 8d 43 0c 39 43 0c 74 04 0f 0b eb fe 8d 43 04 39 43 EIP: [] locks_free_lock+0xb/0x3b SS:ESP 0068:f1309efc -- Sometimes, there's a moment as you're waking, when you become aware of the real world around you, but you're still dreaming. --=-sPGUTum3s68J2m9fDbje Content-Disposition: attachment; filename=config.gz Content-Type: application/x-gzip; name=config.gz Content-Transfer-Encoding: base64 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 --=-sPGUTum3s68J2m9fDbje--