X-BeenThere: develnytprof-dev@googlegroups.com Received: by 10.213.2.70 with SMTP id 6ls1484539ebi.2.p; Tue, 16 Feb 2010 09:58:19 -0800 (PST) Received: by 10.213.100.217 with SMTP id z25mr302784ebn.6.1266343099081; Tue, 16 Feb 2010 09:58:19 -0800 (PST) Received: by 10.213.100.217 with SMTP id z25mr302782ebn.6.1266343099057; Tue, 16 Feb 2010 09:58:19 -0800 (PST) Return-Path: Received: from plum.flirble.org (plum.flirble.org [195.99.220.128]) by gmr-mx.google.com with ESMTP id 12si1266894ewy.6.2010.02.16.09.58.18; Tue, 16 Feb 2010 09:58:18 -0800 (PST) Received-SPF: pass (google.com: domain of n...@flirble.org designates 195.99.220.128 as permitted sender) client-ip=195.99.220.128; Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of n...@flirble.org designates 195.99.220.128 as permitted sender) smtp.mail=n...@flirble.org Received: from nick by plum.flirble.org with local (Exim 4.69 (FreeBSD)) (envelope-from ) id 1NhRgf-000ALB-Jc for develnytprof-dev@googlegroups.com; Tue, 16 Feb 2010 17:58:17 +0000 Date: Tue, 16 Feb 2010 17:58:17 +0000 From: Nicholas Clark To: develnytprof-dev@googlegroups.com Subject: Re: [develnytprof-dev: 1678] RT#54600 Message-ID: <20100216175816.GJ49893@plum.flirble.org> References: <000e0cd0eba25619ec047fb99d38@google.com> <20100216161200.GG49893@plum.flirble.org> <20100216175040.GO373@timac.local> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100216175040.GO373@timac.local> User-Agent: Mutt/1.4.2.3i X-Organisation: Tetrachloromethane Sender: Nicholas Clark On Tue, Feb 16, 2010 at 05:50:40PM +0000, Tim Bunce wrote: > Thanks for background detail and test Nick. Very helpful. > I'll give it some thought, hopefully tonight. No problem. I didn't like finding a failing test, so tried to fix it. I failed on that, but at least figured out the cause, and ruled out and removed all the external dependencies. About the only thing I didn't have in my description was that at the point of the SEGV, subr_entry_ix is 0. (Because it gets reset to that value. Effectively the profiler thinks that it's still running at the top level of the program, when actually its inside a method call.) I suspect, but can't easily test from here, that a goto \&sub inside an import called via use on 5.8.8 and earlier will fail similarly for the same reason. And, I'd guess, tie invocations and overloading invocations. Maybe even goto \&sub inside BEGIN, CHECK or INIT blocks. :-) (I'm trying to remember all the places where the interpreter can make calls out to user code from inside opcodes) Nicholas Clark PS It's only just occurred to me that it might be possible to jump sideways out of BEGIN blocks. Does it work? Yes: $ cat sick.pl #!perl -w use strict; sub sick { warn "Yuck!"; } BEGIN { goto \&sick; } __END__ $ perl sick.pl Yuck! at sick.pl line 5.