Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757428AbYBXQAT (ORCPT ); Sun, 24 Feb 2008 11:00:19 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1752213AbYBXQAH (ORCPT ); Sun, 24 Feb 2008 11:00:07 -0500 Received: from 41-052.adsl.zetnet.co.uk ([194.247.41.52]:55671 "EHLO mail.esperi.org.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751487AbYBXQAF (ORCPT ); Sun, 24 Feb 2008 11:00:05 -0500 To: linux-kernel@vger.kernel.org Cc: petero2@telia.com, dm-devel@redhat.com Subject: Re: 2.6.24.2: 4KSTACKS + pcdrw + dm + mount -> stack overflow: ide-cd related? dm-related? References: <87wsovkth5.fsf@hades.wkstn.nix> From: Nix Emacs: don't cry -- it won't help. Date: Sun, 24 Feb 2008 15:59:23 +0000 In-Reply-To: <87wsovkth5.fsf@hades.wkstn.nix> (nix@esperi.org.uk's message of "24 Feb 2008 01:56:56 -0000") Message-ID: <87skzipcpw.fsf@hades.wkstn.nix> User-Agent: Gnus/5.1008 (Gnus v5.10.8) XEmacs/21.5-b28 (linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-DCC--Metrics: hades 1356; Body=3 Fuz1=3 Fuz2=3 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 5292 Lines: 123 On 24 Feb 2008, nix@esperi.org.uk outgrape: > A loop mount/umounting a pcdrw or iso9660 (through the pktcdvd device) > sees a stack overflow in four or five tries. Doing the same thing with > the same CD in a normal non-pktcdvd-mounted drive doesn't cause a crash. > (This may or may not be PREEMPT+PREEMPT_BKL-specific: I'll try turning > them off tomorrow and repeating.) It is not preempt-specific, nor dm-specific. Nor it is very easy to capture tracebacks of: even netconsole generally gives up when faced with a string of recursive tracebacks blurring past forever at blinding speed. But while I'd normally blame pktcdvd there's only one pktcdvd function in these tracebacks (pkt_open) and it's not got a significant stack footprint. More notable is a great stack of mutual recursion between dm_bio_destructor() and the CDROM code: it seems to burn most of the stack on this sort of thrashing. Here's one of those tracebacks again: do_IRQ: stack overflow: 480 id: 4645, comm: mount Not tainted 2.6.24.2-dirty #4 [] do_IRQ+0x66/0xc5 [] common_interrupt+0x23/0x28 [] ide_outsl+0x5/0x9 [] ata_output_data+0x4d/0x64 [] atapi_output_bytes+0x19/0x3f [] cdrom_transfer_packet_command+0xb5/0xde [] cdrom_timer_expiry+0x0/0x51 [] cdrom_start_packet_command+0x14f/0x157 [] cdrom_do_pc_continuation+0x0/0x2c [] ide_do_request+0x70a/0x943 [] schedule_timeout+0x13/0x8b [] elv_drain_elevator+0x15/0x58 [] elv_insert+0xf6/0x1d9 [] cdrom_transfer_packet_command+0xb5/0xde [] cdrom_timer_expiry+0x0/0x51 [] ide_do_drive_cmd+0x99/0xe9 [] cdrom_queue_packet_command+0x35/0xa9 [] schedule+0x321/0x33e [] schedule_timeout+0x13/0x8b [] cdrom_read_tocentry+0x96/0xa1 [] blk_end_sync_rq+0x0/0x23 [] cdrom_read_toc+0x14b/0x42e [] blk_end_sync_rq+0x0/0x23 [] ide_do_drive_cmd+0xdf/0xe9 [] ide_cdrom_audio_ioctl+0x13c/0x1de [] dm_bio_destructor+0x0/0x8 [] end_bio_bh_io_sync+0x0/0x27 [] cdrom_check_status+0x55/0x60 [] blk_end_sync_rq+0x0/0x23 [] cdrom_count_tracks+0x64/0x16a [] clone_endio+0x0/0xa3 [] dm_bio_destructor+0x0/0x8 [] cdrom_open+0x190/0x8f8 [] end_bio_bh_io_sync+0x0/0x27 [] bio_fs_destructor+0x0/0xb [] end_bio_bh_io_sync+0x0/0x27 [] bio_fs_destructor+0x0/0xb [] clone_endio+0x0/0xa3 [] dm_bio_destructor+0x0/0x8 [] end_bio_bh_io_sync+0x0/0x27 [] bio_fs_destructor+0x0/0xb [] clone_endio+0x0/0xa3 [] dm_bio_destructor+0x0/0x8 [] get_disk+0x4e/0x65 [] exact_lock+0x7/0xd [] kobj_lookup+0x104/0x12e [] idecd_open+0x72/0x86 [] do_open+0x198/0x238 [] clone_endio+0x0/0xa3 [] __blkdev_get+0x69/0x74 [] blkdev_get+0x12/0x14 [] pkt_open+0x8d/0xc96 [] end_bio_bh_io_sync+0x0/0x27 [] bio_fs_destructor+0x0/0xb [] clone_endio+0x0/0xa3 [] dm_bio_destructor+0x0/0x8 [] clone_endio+0x0/0xa3 [] dm_bio_destructor+0x0/0x8 [] end_bio_bh_io_sync+0x0/0x27 [] bio_fs_destructor+0x0/0xb [] end_bio_bh_io_sync+0x0/0x27 [] bio_fs_destructor+0x0/0xb [] end_bio_bh_io_sync+0x0/0x27 [] bio_fs_destructor+0x0/0xb [] end_bio_bh_io_sync+0x0/0x27 [] bio_fs_destructor+0x0/0xb [] clone_endio+0x0/0xa3 [] dm_bio_destructor+0x0/0x8 [] kobject_get+0xf/0x13 [] get_disk+0x4e/0x65 [] exact_lock+0x7/0xd [] kobj_lookup+0x104/0x12e [] exact_match+0x0/0x4 [] do_open+0x84/0x238 [] EIP: 0060:[] EFLAGS: 00010093 CPU: 0 EIP is at dump_trace+0x52/0x8b EAX: 0000082a EBX: 00000046 ECX: 0000020a EDX: 00000000 ESI: 00000000 EDI: 00000000 EBP: 00000ffc ESP: eeede1c4 DS: 007b ES: 007b FS: 0000 GS: 0033 SS: 0068 rocess mount (pid: 4645, ti=eeede000 task=ee537320 task.ti=eeede000)v