Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757598AbZCOGtG (ORCPT ); Sun, 15 Mar 2009 02:49:06 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1752483AbZCOGsx (ORCPT ); Sun, 15 Mar 2009 02:48:53 -0400 Received: from mx2.mail.elte.hu ([157.181.151.9]:39164 "EHLO mx2.mail.elte.hu" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751526AbZCOGsv (ORCPT ); Sun, 15 Mar 2009 02:48:51 -0400 Date: Sun, 15 Mar 2009 07:48:18 +0100 From: Ingo Molnar To: linux-tip-commits@vger.kernel.org, Nick Piggin , Peter Zijlstra , Pekka Enberg , Matt Mackall Cc: linux-kernel@vger.kernel.org, npiggin@suse.de, hpa@zytor.com, mingo@redhat.com, a.p.zijlstra@chello.nl, tglx@linutronix.de Subject: SLOB lockup (was: Re: [tip:core/locking] lockdep: annotate reclaim context (__GFP_NOFS), fix SLOB) Message-ID: <20090315064818.GA1193@elte.hu> References: <20090128135457.350751756@chello.nl> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: User-Agent: Mutt/1.5.18 (2008-05-17) X-ELTE-VirusStatus: clean X-ELTE-SpamScore: -1.5 X-ELTE-SpamLevel: X-ELTE-SpamCheck: no X-ELTE-SpamVersion: ELTE 2.0 X-ELTE-SpamCheck-Details: score=-1.5 required=5.9 tests=BAYES_00 autolearn=no SpamAssassin version=3.2.3 -1.5 BAYES_00 BODY: Bayesian spam probability is 0 to 1% [score: 0.0000] Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 11790 Lines: 209 * Ingo Molnar wrote: > Commit-ID: bf722c9d324864b4256edaa330751b77f2a19861 > Gitweb: http://git.kernel.org/tip/bf722c9d324864b4256edaa330751b77f2a19861 > Author: Ingo Molnar > AuthorDate: Sun, 15 Mar 2009 06:03:11 +0100 > Commit: Ingo Molnar > CommitDate: Sun, 15 Mar 2009 06:03:11 +0100 > > lockdep: annotate reclaim context (__GFP_NOFS), fix SLOB > > Impact: build fix > > fix typo in mm/slob.c: > > mm/slob.c:469: error: ‘flags’ undeclared (first use in this function) > mm/slob.c:469: error: (Each undeclared identifier is reported only once > mm/slob.c:469: error: for each function it appears in.) > > Cc: Nick Piggin > Cc: Peter Zijlstra > LKML-Reference: <20090128135457.350751756@chello.nl> > Signed-off-by: Ingo Molnar and with this fixed, and with SLOB now being tested in -tip, the new lockdep assert attached below (followed by a real lockup) pops up. Seems like a genuine SLOB bug, probably present upstream as well. Ingo ---------------------------> Remounting root filesystem in read-write mode: [ 137.292031] EXT3 FS on sda6, internal journal [ OK ] [ 137.324031] [ 137.324031] ============================================= [ 137.324031] [ INFO: possible recursive locking detected ] [ 137.324031] 2.6.29-rc8-tip #35362 [ 137.324031] --------------------------------------------- [ 137.324031] rc.sysinit/5461 is trying to acquire lock: [ 137.324031] (slob_lock){-.-.-.}, at: [] slob_free+0x66/0x290 [ 137.324031] [ 137.324031] but task is already holding lock: [ 137.324031] (slob_lock){-.-.-.}, at: [] slob_free+0x66/0x290 [ 137.324031] [ 137.324031] other info that might help us debug this: [ 137.324031] 3 locks held by rc.sysinit/5461: [ 137.324031] #0: (&sb->s_type->i_mutex_key#6){+.+.+.}, at: [] do_truncate+0x5e/0x90 [ 137.324031] #1: (&sb->s_type->i_alloc_sem_key#3){+.+...}, at: [] notify_change+0x245/0x320 [ 137.324031] #2: (slob_lock){-.-.-.}, at: [] slob_free+0x66/0x290 [ 137.324031] [ 137.324031] stack backtrace: [ 137.324031] Pid: 5461, comm: rc.sysinit Not tainted 2.6.29-rc8-tip #35362 [ 137.324031] Call Trace: [ 137.324031] [] validate_chain+0xbd0/0x12c0 [ 137.324031] [] ? validate_chain+0x4d9/0x12c0 [ 137.324031] [] __lock_acquire+0x386/0xb40 [ 137.324031] [] lock_acquire+0x9f/0x140 [ 137.324031] [] ? slob_free+0x66/0x290 [ 137.324031] [] _spin_lock_irqsave+0x53/0x90 [ 137.324031] [] ? slob_free+0x66/0x290 [ 137.324031] [] slob_free+0x66/0x290 [ 137.324031] [] __kmem_cache_free+0x35/0x40 [ 137.324031] [] kmem_cache_free+0x24/0x70 [ 137.324031] [] free_object+0x6c/0xd0 [ 137.324031] [] __debug_check_no_obj_freed+0x193/0x1d0 [ 137.324031] [] ? trace_hardirqs_off+0xd/0x10 [ 137.324031] [] debug_check_no_obj_freed+0x17/0x20 [ 137.324031] [] free_hot_cold_page+0x109/0x2b0 [ 137.324031] [] free_hot_page+0x10/0x20 [ 137.324031] [] __free_pages+0x25/0x40 [ 137.324031] [] free_pages+0x4f/0x60 [ 137.324031] [] slob_free+0x150/0x290 [ 137.324031] [] __kmem_cache_free+0x35/0x40 [ 137.324031] [] kmem_cache_free+0x24/0x70 [ 137.324031] [] __d_free+0x45/0x70 [ 137.324031] [] d_callback+0x15/0x20 [ 137.324031] [] rcu_process_callbacks+0x82/0xd0 [ 137.324031] [] __do_softirq+0xa2/0x220 [ 137.324031] [] call_softirq+0x1c/0x30 [ 137.324031] [] do_softirq+0x6a/0xb0 [ 137.324031] [] irq_exit+0x97/0xa0 [ 137.324031] [] smp_apic_timer_interrupt+0x74/0xb0 [ 137.324031] [] apic_timer_interrupt+0x13/0x20 [ 137.324031] [] ? lock_acquire+0xb4/0x140 [ 137.324031] [] ? notify_change+0x245/0x320 [ 137.324031] [] ? down_write+0x48/0x80 [ 137.324031] [] ? notify_change+0x245/0x320 [ 137.324031] [] ? cap_inode_setattr+0x9/0x10 [ 137.324031] [] ? notify_change+0x245/0x320 [ 137.324031] [] ? do_truncate+0x6a/0x90 [ 137.324031] [] ? sub_preempt_count+0xae/0xf0 [ 137.324031] [] ? cap_path_truncate+0x9/0x10 [ 137.324031] [] ? may_open+0x224/0x2b0 [ 137.324031] [] ? do_filp_open+0x17c/0x980 [ 137.324031] [] ? put_lock_stats+0xe/0x30 [ 137.324031] [] ? sub_preempt_count+0xae/0xf0 [ 137.324031] [] ? alloc_fd+0x116/0x140 [ 137.324031] [] ? do_sys_open+0x63/0xf0 [ 137.324031] [] ? sys_open+0x20/0x30 [ 137.324031] [] ? system_call_fastpath+0x16/0x1b [ 137.324031] BUG: spinlock lockup on CPU#1, rcu_torture_rea/697, ffffffff813bf440 [ 137.324031] Pid: 697, comm: rcu_torture_rea Not tainted 2.6.29-rc8-tip #35362 [ 137.324031] Call Trace: [ 137.324031] [] ? delay_loop+0x9/0x40 [ 137.324031] [] _raw_spin_lock+0x17e/0x190 [ 137.324031] [] _spin_lock_irqsave+0x73/0x90 [ 137.324031] [] ? slob_alloc+0x58/0x200 [ 137.324031] [] slob_alloc+0x58/0x200 [ 137.324031] [] kmem_cache_alloc_node+0xbe/0xf0 [ 137.324031] [] __alloc_skb+0x4e/0x150 [ 137.324031] [] sock_alloc_send_skb+0x1a7/0x200 [ 137.324031] [] ? __rcu_read_unlock+0x20/0xc0 [ 137.324031] [] ip_append_data+0x6f7/0xa60 [ 137.324031] [] ? icmp_glue_bits+0x0/0x70 [ 137.324031] [] icmp_push_reply+0x58/0x110 [ 137.324031] [] icmp_reply+0x17f/0x1e0 [ 137.324031] [] ? csum_partial+0xa/0x180 [ 137.324031] [] icmp_echo+0x5d/0x60 [ 137.324031] BUG: spinlock lockup on CPU#0, rc.sysinit/5461, ffffffff813bf440 [ 137.324031] Pid: 5461, comm: rc.sysinit Not tainted 2.6.29-rc8-tip #35362 [ 137.324031] Call Trace: [ 137.324031] [] ? delay_loop+0x9/0x40 [ 137.324031] [] _raw_spin_lock+0x17e/0x190 [ 137.324031] [] _spin_lock_irqsave+0x73/0x90 [ 137.324031] [] ? slob_free+0x66/0x290 [ 137.324031] [] slob_free+0x66/0x290 [ 137.324031] [] __kmem_cache_free+0x35/0x40 [ 137.324031] [] kmem_cache_free+0x24/0x70 [ 137.324031] [] free_object+0x6c/0xd0 [ 137.324031] [] __debug_check_no_obj_freed+0x193/0x1d0 [ 137.324031] [] ? trace_hardirqs_off+0xd/0x10 [ 137.324031] [] debug_check_no_obj_freed+0x17/0x20 [ 137.324031] [] free_hot_cold_page+0x109/0x2b0 [ 137.324031] [] free_hot_page+0x10/0x20 [ 137.324031] [] __free_pages+0x25/0x40 [ 137.324031] [] free_pages+0x4f/0x60 [ 137.324031] [] slob_free+0x150/0x290 [ 137.324031] [] __kmem_cache_free+0x35/0x40 [ 137.324031] [] kmem_cache_free+0x24/0x70 [ 137.324031] [] __d_free+0x45/0x70 [ 137.324031] [] d_callback+0x15/0x20 [ 137.324031] [] rcu_process_callbacks+0x82/0xd0 [ 137.324031] [] __do_softirq+0xa2/0x220 [ 137.324031] [] call_softirq+0x1c/0x30 [ 137.324031] [] do_softirq+0x6a/0xb0 [ 137.324031] [] irq_exit+0x97/0xa0 [ 137.324031] [] smp_apic_timer_interrupt+0x74/0xb0 [ 137.324031] [] apic_timer_interrupt+0x13/0x20 [ 137.324031] [] ? lock_acquire+0xb4/0x140 [ 137.324031] [] ? notify_change+0x245/0x320 [ 137.324031] [] ? down_write+0x48/0x80 [ 137.324031] [] ? notify_change+0x245/0x320 [ 137.324031] [] ? cap_inode_setattr+0x9/0x10 [ 137.324031] [] ? notify_change+0x245/0x320 [ 137.324031] [] ? do_truncate+0x6a/0x90 [ 137.324031] [] ? sub_preempt_count+0xae/0xf0 [ 137.324031] [] ? cap_path_truncate+0x9/0x10 [ 137.324031] [] ? may_open+0x224/0x2b0 [ 137.324031] [] ? do_filp_open+0x17c/0x980 [ 137.324031] [] ? put_lock_stats+0xe/0x30 [ 137.324031] [] ? sub_preempt_count+0xae/0xf0 [ 137.324031] [] ? alloc_fd+0x116/0x140 [ 137.324031] [] ? do_sys_open+0x63/0xf0 [ 137.324031] [] ? sys_open+0x20/0x30 [ 137.324031] [] ? system_call_fastpath+0x16/0x1b [ 137.324031] [] ? __skb_checksum_complete_head+0x1b/0x70 [ 137.324031] [] ? __skb_checksum_complete+0x11/0x20 [ 137.324031] [] icmp_rcv+0x132/0x2e0 [ 137.324031] [] ip_local_deliver_finish+0x76/0x1e0 [ 137.324031] [] ip_local_deliver+0x40/0xa0 [ 137.324031] [] ip_rcv_finish+0x129/0x3c0 [ 137.324031] [] ip_rcv+0x23c/0x320 [ 137.324031] [] netif_receive_skb+0x2dc/0x540 [ 137.324031] [] nv_napi_poll+0x3cd/0x6c0 [ 137.324031] [] net_rx_action+0x13e/0x210 [ 137.324031] [] ? irq_complete_move+0x21/0x240 [ 137.324031] [] __do_softirq+0xa2/0x220 [ 137.324031] [] call_softirq+0x1c/0x30 [ 137.324031] [] do_softirq+0x6a/0xb0 [ 137.324031] [] irq_exit+0x97/0xa0 [ 137.324031] [] do_IRQ+0x95/0x110 [ 137.324031] [] ret_from_intr+0x0/0xf [ 137.324031] [] ? _spin_unlock_irq+0x36/0x60 [ 137.324031] [] ? thread_return+0x1e3/0x916 [ 137.324031] [] ? restore_args+0x0/0x30 [ 137.324031] [] ? rcu_torture_reader+0x188/0x2e0 [ 137.324031] [] ? trace_hardirqs_on+0xd/0x10 [ 137.324031] [] ? rcu_torture_reader+0x188/0x2e0 [ 137.324031] [] ? rcu_torture_timer+0x0/0x150 [ 137.324031] [] ? _spin_unlock_irqrestore+0x47/0x80 [ 137.324031] [] ? rcu_torture_reader+0x0/0x2e0 [ 137.324031] [] ? kthread+0x53/0x80 [ 137.324031] [] ? child_rip+0xa/0x20 [ 137.324031] [] ? finish_task_switch+0x98/0x140 [ 137.324031] [] ? _spin_unlock_irq+0x3b/0x60 [ 137.324031] [] ? restore_args+0x0/0x30 [ 137.324031] [] ? kthread+0x0/0x80 [ 137.324031] [] ? child_rip+0x0/0x20 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/