-
Notifications
You must be signed in to change notification settings - Fork 550
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
Perl_sv_2pv_flags: Assertion `((svtype)((sv)->sv_flags & 0xff)) != SVt_PVAV && ((svtype)((sv)->sv_flags & 0xff)) != SVt_PVHV && ((svtype)((sv)->sv_flags & 0xff)) != SVt_PVFM' failed (sv.c:2963) #14569
Comments
From @geeknikBuilt v5.21.10 (v5.21.9-43-g2c3f32a) with the following command line: ./Configure -des -Dusedevel -DDEBUGGING -Dcc=afl-gcc -Doptimize=-O2\ -g && AFL_HARDEN=1 make -j12 test-prep Bug found with AFL (http://lcamtuf.coredump.cx/afl) Valgrind: GDB: Program received signal SIGABRT, Aborted. Hexdump of the 42-byte test case: System Info: Debian 7, Kernel 3.2.65-1+deb7u1 x86_64, GCC 4.9.2, libc 2.13-38+deb7u8 |
From @geeknik |
From @hvdsInterestingly, the nul byte in the string eval serves to stop the @0 from being interpolated, so the test case is equivalent to this: % ./miniperl -e '$_ = "xx"; eval q{s/./1 for @x/e} while s/./0/' I'm not sure whether the non-interpolation is an additional bug. Hacking bisect-runner to treat timeout as success and running with: bisect.pl --target=miniperl -DDEBUGGING --crash --timeout=1 -- ./miniperl -e '$_ = "xx"; eval q{s/./1 for @x/e} while s/./0/' finds this change first introduced in perl-5.16: commit 815dd40 In pp_subst, use a mortal scalar for dstr, instead of SAVEFREESV(). .. but I don't think I believe it - running with -Ds perturbs things a bit, but shows a stack underflow which I assume is real; reverting 815dd40 appears to allow the plain run to go successfully round its endless loop, but -Ds still shows the same stack underflow. I'm unlikely to have time to look further at this any time soon. Hugo |
The RT System itself - Status changed from 'new' to 'open' |
From @cpansproutOn Sat Mar 07 02:42:18 2015, hv wrote:
$ ./miniperl -le 'print 1, 2, 3, scalar do { 1 for @x } + 1, 4, 5, 6' $ /opt/testing/bin/perl5.8.7 -le 'print 1, 2, 3, scalar do { 1 for @x } + 1, 4, 5, 6' $ /opt/bin/perl5.8.8 -le 'print 1, 2, 3, scalar do { 1 for @x } + 1, 4, 5, 6' With this variation, I get ‘1 2 4 4 5 6’ as far back as 5.002: push @_, 1, 2, 3, scalar do { for(@x){} } + 1, 4, 5, 6; die "@_" unless @_ == 7 Can't find a suitable start revision to default to. -- Father Chrysostomos |
From @cpansproutFixed in c5f78d0. -- Father Chrysostomos |
@cpansprout - Status changed from 'open' to 'pending release' |
From @khwilliamsonThank you for submitting this ticket. The issue should now be resolved with the release today of Perl v5.22, which is available at http://www.perl.org/get.html |
@khwilliamson - Status changed from 'pending release' to 'resolved' |
Migrated from rt.perl.org#124004 (status was 'resolved')
Searchable as RT124004$
The text was updated successfully, but these errors were encountered: