New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Assert fail in op.c without other symptoms: 0=\my%u:e=0 #15338
Comments
From @dcollinsnGreetings Porters, I have compiled bleadperl with the afl-gcc compiler using: ./Configure -Dusedevel -Dprefix='/usr/local/perl-afl' -Dcc='ccache afl-gcc' -Uuselongdouble -Duse64bitall -Doptimize=-g -Uversiononly -Uman1dir -Uman3dir -Dusequadmath -des And then fuzzed the resulting binary using: AFL_NO_VAR_CHECK=1 afl-fuzz -i in -o out bin/perl @@ After reducing testcases using `afl-tmin` and performing additional minimization by hand, I have located the following testcase that triggers an assert fail in debugging builds of the perl interpreter. The testcase is the file below. On normal builds, this exits with the expected error. On debug builds, this returns an assert fail. dcollins@nightshade64:~$ cat f3i1 Debugging tool output is below. A git bisect was performed. Unfortunately, this requires attributes, so a miniperl build is not sufficient to test. Here is the result: 7664512 is the first bad commit Make \( ?: ) assignment work When I first implemented list assignment to lvalue references, I (I thought about combining it with op_lvalue’s switch statement, but :100644 100644 2e163602eb33b1df99c98aeee9c803e79004f7db 9e4e8d9db15ae2e214420f67b2e6683c1611cf54 M op.c **GDB** dcollins@nightshade64:~$ gdb --args ./perldebug/perl f3i1 Program received signal SIGABRT, Aborted. **PERL -V** dcollins@nightshade64:~$ perl/perl -V Characteristics of this binary (from libperl): |
From @cpansproutOn Wed May 18 16:59:31 2016, dcollinsn@gmail.com wrote:
The initial 0= is unnecessary. I completely failed to take attributes into account when implementing refaliasing. $ ./perl -Ilib -e '\my %x:e = 1' $ ./perl -Ilib -e '\CORE::state %x :e = 1' $ ./perl -Ilib -XMfeature=:all -e 'sub MODIFY_HASH_ATTRIBUTES{} \our %x:e = \%a; print "ok\n"' The last one works, because the attribute does not modify the op tree with ‘our’. -- Father Chrysostomos |
The RT System itself - Status changed from 'new' to 'open' |
From @dcollinsnExperts: 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' Without debug: dcollins@nightshade64:~/perl$ ./perl -Ilib -W -e 'tie my$r:n' Bisect 5c90603 is the first bad commit 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 :100644 100644 775705b55e4c0f69255527942edbf8ae7b4f0bbf c4c0e762493df04c66d924090cde0c87e2bea018 M op.c |
Migrated from rt.perl.org#128183 (status was 'open')
Searchable as RT128183$
The text was updated successfully, but these errors were encountered: