develooper Front page | perl.perl5.porters | Postings from April 2015

Re: [perl #124207] Perl_ck_stringify: Assertion`!((((kid)->op_sibling) ? (_Bool)1 : (_Bool)0))' failed (op.c:11148)

Thread Previous
From:
Dave Mitchell
Date:
April 22, 2015 15:34
Subject:
Re: [perl #124207] Perl_ck_stringify: Assertion`!((((kid)->op_sibling) ? (_Bool)1 : (_Bool)0))' failed (op.c:11148)
Message ID:
20150422153418.GF4035@iabyn.com
On Tue, Apr 21, 2015 at 06:29:13PM -0700, Tony Cook via RT wrote:
> On Sun Mar 29 13:43:30 2015, brian.carpenter@gmail.com wrote:
> > perl v5.21.7 (v5.21.6-602-ge9d2bd8) just fails like this: 
> > 
> > syntax error at test24-min line 1, near "0]"
> > syntax error at test24-min line 1, near "${}"
> > Execution of test24-min aborted due to compilation errors.
> 
> 5.21.7 assrted for me too. I bisected with:
> 
> AFL_HARDEN=1 perl ../bisect.pl --start=v5.18.0  -DDEBUGGING -Dcc=afl-gcc -Doptimize=-O2\ -g --target=miniperl -e 'eval q/qq{@{0]}${}},{})/'
> 
> which produced:
> 
> bad - non-zero exit from ./miniperl -Ilib -e eval q/qq{@{0]}${}},{})/
> 73f4c4fe76492cf68c8a57ccae33a9a3e5a87206 is the first bad commit
> commit 73f4c4fe76492cf68c8a57ccae33a9a3e5a87206
> Author: Father Chrysostomos <sprout@cpan.org>
> Date:   Sun Oct 12 08:10:41 2014 -0700
> 
>     Optimise "@_" to a single join
>     
>     instead of stringify(join(...)).

Now fixed with 

commit 82269f56dcc21a3e0ef8c48158a731daf5ceda25
Author:     David Mitchell <davem@iabyn.com>
AuthorDate: Wed Apr 22 16:26:40 2015 +0100
Commit:     David Mitchell <davem@iabyn.com>
CommitDate: Wed Apr 22 16:26:40 2015 +0100

    RT #124207: assert failure in ck_stringify()
    
    v5.21.4-416-g73f4c4f converted (among other things) stringify(join(...))
    into just join(...).  It asserted that the stringify didn't have any extra
    children, which it won't normally do, since in something like "@a-" the
    elements of the stringify get bundled up into a single tree of concats
    etc, and stringify just sees a single top-level join or concat or
    whatever. However during error recovery weird stuff can get left on the
    stack.
    
    So rather than asserting no more kids, skip the optimisation if there are
    more kids.


-- 
"Procrastination grows to fill the available time"
    -- Mitchell's corollary to Parkinson's Law

Thread Previous


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About