develooper Front page | perl.perl5.porters | Postings from May 2016

[perl #128183] Assert fail in op.c without other symptoms:0=\my%u:e=0

From:
Dan Collins via RT
Date:
May 27, 2016 00:28
Subject:
[perl #128183] Assert fail in op.c without other symptoms:0=\my%u:e=0
Message ID:
rt-4.0.18-20136-1464308887-965.128183-15-0@perl.org
Experts: is the following bug related? (Also uses attributes, same assert, but in a different place.)

dcollins@nightshade64:~/perldebug$ ./perl -Ilib -W -e 'tie my$r:n'
perl: op.c:2799: Perl_op_lvalue_flags: Assertion `(o->op_flags & 3) != 1' failed.
Aborted


Without debug:

dcollins@nightshade64:~/perl$ ./perl -Ilib -W -e 'tie my$r:n'
Can't modify non-lvalue subroutine call of &attributes::import at -e line 1.
dcollins@nightshade64:~/perl$ ./perl -MO=Deparse -Ilib -e 'tie my$r:n'
use attributes ();
tie 'attributes'->import('main', \$r, 'n'), my $r;
-e syntax OK

Bisect

5c906035ffb6b2857a0f941a97ac9e7bb4126275 is the first bad commit
commit 5c906035ffb6b2857a0f941a97ac9e7bb4126275
Author: Gerard Goossen <gerard@ggoossen.net>
Date:   Sat Aug 13 18:38:13 2011 +0200

    Propagate lvalue context only to children of list ops which are not in void context.

    Children list ops might be in void context because the list is in scalar
    context. A test that discarded elements in a list are not assigned lvalue
    context is added.
    Children of a list op might also be in void context because they are
    special entersub ops for attributes. This patch makes the
    OPpENTERSUB_NOMOD flag redundant.

:100644 100644 775705b55e4c0f69255527942edbf8ae7b4f0bbf c4c0e762493df04c66d924090cde0c87e2bea018 M       op.c
:040000 040000 8b96ea734cee36175aef04088948ead0744c5b03 a5c0ce3a48597ac07dadb8340649a878dad3877b M       t
bisect run success


---
via perlbug:  queue: perl5 status: open
https://rt.perl.org/Ticket/Display.html?id=128183



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