Open p5pRT opened 5 years ago
While fuzzing perl v5.29.8-21-gde59f38ed9 built with afl and run under libdislocator\, I found the following program
00.=my$0=00.0
to cause an assertion failure:
perl: op.c:3323: void S_maybe_multiconcat(OP *): Assertion `!targmyop' failed.
GDB stack trace is following:
#1 0x00007ffff7c25535 in __GI_abort () at abort.c:79
#2 0x00007ffff7c2540f in __assert_fail_base (fmt=0x7ffff7d87ee0
"%s%s%s:%u: %s%sAssertion `%s' failed.\n%n"\, assertion=0x555555911678
"!targmyop"\,
file=0x55555590f7ae "op.c"\, line=3323\, function=\
This is a regression in blead\, bisect points to
commit 0fe04e1dc741a43190e79a985fb0cec0493ebfe9 Author: David Mitchell \davem@​iabyn\.com Date: Wed Aug 29 14:32:24 2018 +0100
multiconcat: mutator not seen in (lex = ...) .= ...
RT #133441
TL;DR: (($lex = expr1.expr2) .= expr3) was being misinterpreted as (expr1 . expr2 . expr3) when the ($lex = expr1) subtree had had the assign op optimised away by the OPpTARGET_MY optimisation.
Migrated from rt.perl.org#133881 (status was 'new')
Searchable as RT133881$