develooper Front page | perl.perl5.porters | Postings from March 2007

Re: MAINT30598 segfaults

Thread Previous
Nicholas Clark
March 19, 2007 16:22
Re: MAINT30598 segfaults
Message ID:
On Mon, Mar 19, 2007 at 10:14:08AM +0300, Alexey Tourbin wrote:
> Hello,
> Upgrading from MAINT29163 to MAINT30598 introduces beautiful
> segmentation fault:
> $ perl -e 'local($var=1)' 
> zsh: segmentation fault  perl -e 'local($var=1)'
> $ 
> Reported by Ivan Adzhubey from Harward early in the morning. :)


a: How come that's not spotted by the regression tests?
b: How come blead doesn't suffer it?

It was introduced in maint with:

Change 29785 by nicholas@nicholas-saigo on 2007/01/13 16:56:44

        [ 26446]
        Add an optimisation to allow proxy constant subroutines to be copied
        as proxy constant subroutines in a new symbol table where possible.
        (Rather than converting them to full blown constant subroutines and
        instantiating 2 typeglobs)

        [ 26448]
        Regression tests for proxy subroutine glob assignment.
        Fix a bug (it turns out that a typeglob isn't SvOK())
        Remove stray debugging code.

        [ 26470]
        Now that proxy subroutines can be unproxied in 2 places without
        becoming the same newCONSTSUB, need an explicit check to avoid a
        warning about subroutines being redefined, as there has never been
        a warning when you assing the same subroutine to a glob's GvCV()

        [ 26482]
        Unless the peephole optimiser already knows that we're in void context,
        avoid even attempting the whole proxy constant sub copying

It turns out that blead isn't effected because of the localise logic of

Change 19588 by rgs@rgs-home on 2003/05/21 21:03:04

        New warning "Useless localization of %s", based on
        Subject: [PATCH] new warning "Useless localization of %s is deprecated"
        From: Dave Mitchell <>
        Date: Wed, 30 Apr 2003 21:17:38 +0100
        Message-ID: <>

        The proposed patch added this warning in the 'deprecated' category ;
        I think this category is for things that exist and will be removed,
        rather than for things that don't exist and that will maybe be added.

(of all things). I merged that logic, but not the warning it adds, into maint,
which solves the SEGV.

Nicholas Clark

Thread Previous Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at | Group listing | About