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
Glibc: double free or memory corruption crash running t/spec/S02-types/bool.t in Rakudo 2013.02.1-7-gb205e66 #3058
Comments
From quester.pm@gmail.comHello, I updated Rakudo from git last night and did a make spectest. Only one It seems like if I run the entire test, it fails as shown in the *is Bool.roll(*).[^10].elems, 10, 'Bool.roll(*) contains at least 10 ... and place a copy of it after every existing line, the entire file runs. I would think that this indicates that there must be some sort of boundary Please let me know of anything you can think of that I could gather that The environment here is: rakudo version 2013.02.1-7-gb205e66 built on parrot 4.10.0 revision nqp version 2013.02.1-16-gf70f431 built on parrot 4.10.0 revision Parrot version 4.10.0-devel built for amd64-linux Fedora 17 linux, 64 bit, kernel 3.7.9-101.fc17.x86_64 Gcc 4.7.2-2.fc17.x86_64 Glibc 2.15-58.fc17.x86_64 Best regards, |
From quester.pm@gmail.comScript started on Mon 25 Feb 2013 08:40:18 PM HST #L<S12/Built-in Enumerations/"Two built-in enumerations are"> # tests True and False are Bool's # tests they keep their Bool'ness when stored $a = Bool::False; # tests that Bool.Bool works # tests that ?Bool works # tests they work with && and || # tests they work with ! # tests True with ok() # tests False with ok() and ! # tests Bool stringification - interaction with ~ # numification - interaction with + is(Bool::True.Int, '1', 'True Intifies to 1'); is(+Bool::True, '1', 'True numifies to 1'); # Arithmetic operations # RT #65514 #?pugs skip '.key' #?pugs skip '.pick' } done; # vim: ft=perl6 Script done on Mon 25 Feb 2013 08:40:49 PM HST |
From @questerUpdate: I found that the bug also can be triggered with just this loop, usually (0 but Bool::True) and print qq{$_ } for 1..100; Backtraces are attached for three recent versions of Rakudo, the current It looks like this also failed with a sigabrt in the #perl6 evalbot, see Best regards, |
From @questerThis is from the current version of Rakudo in git (2013-03-01 0700 UTC): [ira@f17 rakudo]$ ./perl6 -v [ira@f17 rakudo]$ ./perl6 -e '(0 but Bool::True) and print qq{$_ } for 1..100;' This is from Rakudo Star 2013-02: [ira@f17 rakudo-star-2013.02]$ ./perl6 -v [ira@f17 rakudo-star-2013.02]$ ./perl6 -e '(0 but Bool::True) and print qq{$_ } for 1..100;' This is from Rakudo Star 2013-01: [ira@f17 rakudo-star-2013.01]$ ./perl6 -v [ira@f17 rakudo-star-2013.01]$ ./perl6 -e '(0 but Bool::True) and print qq{$_ } for 1..100;' |
From @questerOne more observation that might be helpful: Whether memory allocation errors occur or not appears to depend on the All the other defined data types I have tried on the left hand side work I *think* that this *may* indicate that the size of the left hand If I ever have enough tuits, I will try looking at the valgrind output FWIW, here are the tests I ran... each expression is run in a loop 100 These work; at least, without double free or other memory allocation crash: "0" but True These fail with double free or other memory allocation problems: 0 but True [The following number is 2^4095, written out, so the value cannot be 522194440706576253345876355358312191289982124523691890192116741641976953985778728424413405967498779170445053357219631418993786719092896803631618043925682638972978488271854999170180795067191859157214035005927973113188159419698856372836167342172293308748403954352901852035642024370059304557233988891799014503343469488440893892973452815095130470299789726716411734651513348221529512507986199933857107770846917779942645743159118957217248367043905936319748237550094520674504208530837546834166925275516486044134775384991808184705966507606898412918594045916828375610659246423184062775112999150206172392431297837246097308511903252956622805412865917690043804311051417135098849101156584508839003337597742539960818209685142687562392007453579567729991395256699805775897135553415567045292136442139895777424891477161767258532611634530697452993846501061481697843891439474220308003706472837459911525285821188577408160690315522951458068463354171428220365223949985950890732881736611925133626529949897998045399734600887312408859224933727829625089164535236559716582775403784110923285873186648442456409760158728501220463308455437074192539205964902261490928669488824051563042951500651206733594863336608245755565801460390869016718045121902354170201577095168 These fails peculiarly ("Cannot look up attributes in a type object") Rat but True Best regards, |
From @cokeThis has been failing on the daily spec test runs on feather for a week or $ ./perl6 --version $ .-types/bool.t running inside gdb says: Program received signal SIGABRT, Aborted. Neither sixmodelobject's destroy method nor the test file have changed -- |
From @cokeI just completed a git bisect on nom for this issue. 5838e933b362d33c8a0854a7c410c347a4911bde is the first bad commit Merge branch 'iospec' of https://github.com/labster/rakudo into nom -- |
1 similar comment
From @cokeI just completed a git bisect on nom for this issue. 5838e933b362d33c8a0854a7c410c347a4911bde is the first bad commit Merge branch 'iospec' of https://github.com/labster/rakudo into nom -- |
@coke - Status changed from 'new' to 'open' |
From @FROGGSHi, labster and me already discussed that issues the last days (since It is true that this branch merge made this bug visible, but we dont My rakudo-build on feather shows, that if you comment out one of the 51 I can attach diffs to show what we have tried. |
From @usev6Since the tests in S02-types/bool.t pass, the relevant problem seems to be the for loop with "0 but Bool::True". I don't see any crashes within the first 100 iterations, but on Parrot I get segfaults or crashes with around 262 iterations. On Moar and JVM there are no problems: $ perl6-m -e '(0 but Bool::True) and print qq{$_ } for 1..1000;' $ perl6-j -e '(0 but Bool::True) and print qq{$_ } for 1..1000;' $ perl6-p -e '(0 but Bool::True) and print qq{$_ } for 1..1000;' |
1 similar comment
From @usev6Since the tests in S02-types/bool.t pass, the relevant problem seems to be the for loop with "0 but Bool::True". I don't see any crashes within the first 100 iterations, but on Parrot I get segfaults or crashes with around 262 iterations. On Moar and JVM there are no problems: $ perl6-m -e '(0 but Bool::True) and print qq{$_ } for 1..1000;' $ perl6-j -e '(0 but Bool::True) and print qq{$_ } for 1..1000;' $ perl6-p -e '(0 but Bool::True) and print qq{$_ } for 1..1000;' |
@usev6 - Status changed from 'new' to 'open' |
From @usev6As noted above the tests in S02-types/bool.t are passing for quite a while. The only remaining problem was the segmentation fault with parrot when running '(0 but Bool::True) and print qq{$_ } for 1..1000;'. I just tested with the latest Rakudo Star (2015.02) and I was unable to reproduce the segfault there -- even with more iterations: $ perl6-p -e '(0 but Bool::True) and print qq{$_ } for 1..10000;' I'm closing this ticket as 'resolved'. |
1 similar comment
From @usev6As noted above the tests in S02-types/bool.t are passing for quite a while. The only remaining problem was the segmentation fault with parrot when running '(0 but Bool::True) and print qq{$_ } for 1..1000;'. I just tested with the latest Rakudo Star (2015.02) and I was unable to reproduce the segfault there -- even with more iterations: $ perl6-p -e '(0 but Bool::True) and print qq{$_ } for 1..10000;' I'm closing this ticket as 'resolved'. |
@usev6 - Status changed from 'open' to 'resolved' |
Migrated from rt.perl.org#116933 (status was 'resolved')
Searchable as RT116933$
The text was updated successfully, but these errors were encountered: