[perl #127452] [CONC] hyper is very broken, *sometimes* it returns nothing

2017-10-18 Thread jn...@jnthn.net via RT
On Mon, 01 Feb 2016 21:59:33 -0800, alex.jakime...@gmail.com wrote:
> Let's try running the same code twice:
> 
>  m: my @x = ^10; my @y = @x.hyper(:3batch, :5degree).map: {
> sleep rand / 10; $_ + 1 }; say @y
>  rakudo-moar a5fe34: OUTPUT«[]␤»
>  m: my @x = ^10; my @y = @x.hyper(:3batch, :5degree).map: {
> sleep rand / 10; $_ + 1 }; say @y
>  rakudo-moar a5fe34: OUTPUT«[1 2 3 4 5 6 7 8 9 10]␤»
> 
> The thing is that sometimes 「hyper」 decides to return an empty list. This
> is a real problem because it basically renders it useless (too unreliable).
> 
> If you have problems reproducing it, try changing 「/ 10」 to something
> else. This delay is not really relevant but it seems like it affects the
> chances to get one result or another.
> 
> Here's also a golfed down version:
> 
> Code:
> dd @(^10 .hyper(:1batch).map: { sleep rand; $_ })
> 
> Result:
> ()
> OR
> (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
> 
> According to the execution time 「hyper」 does not even bother to compute the
> result in these problematic cases (it just returns an empty list without
> trying to process the data). That being said, there is a chance that it
> fails half way through, see next example.
> 
> 
> Another interesting issue (probably the same one):
> 
> Code:
> .say for (^10).hyper(:1batch).map: { sleep rand; $_ }
> 
> Result:
> 1
> OR
> 2
> OR
> 3
> OR
> 0
> 3
> 2
> 1
> 5
> 8
> 7
> 4
> 6
> 9
> OR etc.
> 
> So not only it is out of order (#127099), but it is also extremely broken.
> 
> It looks like there is no such problem with 「race」.
> 
> IRC log (nothing useful there though):
> http://irclog.perlgeek.de/perl6/2016-02-02#i_11975794

Fixed in new hyper/race implementation; tests in S07-hyperrace/hyper.t and 
S07-hyperrace/race.t (for original post and other examples that I found in the 
discussion of this ticket).


[perl #127452] [CONC] hyper is very broken, *sometimes* it returns nothing

2017-10-18 Thread jn...@jnthn.net via RT
On Mon, 01 Feb 2016 21:59:33 -0800, alex.jakime...@gmail.com wrote:
> Let's try running the same code twice:
> 
>  m: my @x = ^10; my @y = @x.hyper(:3batch, :5degree).map: {
> sleep rand / 10; $_ + 1 }; say @y
>  rakudo-moar a5fe34: OUTPUT«[]␤»
>  m: my @x = ^10; my @y = @x.hyper(:3batch, :5degree).map: {
> sleep rand / 10; $_ + 1 }; say @y
>  rakudo-moar a5fe34: OUTPUT«[1 2 3 4 5 6 7 8 9 10]␤»
> 
> The thing is that sometimes 「hyper」 decides to return an empty list. This
> is a real problem because it basically renders it useless (too unreliable).
> 
> If you have problems reproducing it, try changing 「/ 10」 to something
> else. This delay is not really relevant but it seems like it affects the
> chances to get one result or another.
> 
> Here's also a golfed down version:
> 
> Code:
> dd @(^10 .hyper(:1batch).map: { sleep rand; $_ })
> 
> Result:
> ()
> OR
> (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
> 
> According to the execution time 「hyper」 does not even bother to compute the
> result in these problematic cases (it just returns an empty list without
> trying to process the data). That being said, there is a chance that it
> fails half way through, see next example.
> 
> 
> Another interesting issue (probably the same one):
> 
> Code:
> .say for (^10).hyper(:1batch).map: { sleep rand; $_ }
> 
> Result:
> 1
> OR
> 2
> OR
> 3
> OR
> 0
> 3
> 2
> 1
> 5
> 8
> 7
> 4
> 6
> 9
> OR etc.
> 
> So not only it is out of order (#127099), but it is also extremely broken.
> 
> It looks like there is no such problem with 「race」.
> 
> IRC log (nothing useful there though):
> http://irclog.perlgeek.de/perl6/2016-02-02#i_11975794

Fixed in new hyper/race implementation; tests in S07-hyperrace/hyper.t and 
S07-hyperrace/race.t (for original post and other examples that I found in the 
discussion of this ticket).


[perl #130576] [CONC] .race & .hyper break [+] (1..100)

2017-10-18 Thread jn...@jnthn.net via RT
On Tue, 17 Jan 2017 10:10:44 -0800, coke wrote:
> The presence of a hyper or race causes incorrect output in some cases.
> Originally found with the .grep in the pipeline, but seems to impact
> even the simple case.
> 
> $ perl6 -e 'say [+] (1..100)'
> 5050
> 
> $ perl6 -e 'say [+] (1..100).race'
> 0
> 
>  $ perl6 -e 'say [+] (1..100).grep(* != 22)'
> 5028
> 
>  $ perl6 -e 'say [+] (1..100).race.grep(* != 22)'
> 0
> 
> $ perl6 -e 'say [+] (1..100).hyper.grep(* != 22)'
> 0
> 
> $ perl6 -e 'say [+] (1..100).grep(* != 22).race'
> 0
> 
> $ perl6 -e 'say [+] (1..100).grep(* != 22).hyper'
> 0
> 

Fixed in new hyper/race implementation; tests in S07-hyperrace/hyper.t and 
S07-hyperrace/race.t.


[perl #126597] [CONC][BUG] .race.grep(...) and .hyper.grep(...) produce an empty sequence

2017-10-18 Thread jn...@jnthn.net via RT
On Mon, 09 Nov 2015 06:36:49 -0800, matt.oa...@congenica.com wrote:
> The following has an empty result when using race or hyper in perl6
> version 2015.10-233-gac750a9 built on MoarVM version 2015.10-61-
> g624d504
> 
> $ perl6
> > (1..10).grep(* > 3)
> (4 5 6 7 8 9 10)
> > (1..10).race().grep(* > 3)
> ()
> > (1..10).hyper().grep(* > 3)
> ()
> 
> Looks specifically like the methods after the hyper/race never get
> called:
> 
> > (1..10).hyper().grep(* > 3).map({$_.say; $_})
> ()
> > (1..10).map({$_.say; $_}).hyper().grep(* > 3)
> 1
> 2
> 3
> 4
> 5
> 6
> 7
> 8
> 9
> 10
> ()

Fixed in new hyper/race implementation; tests in S07-hyperrace/hyper.t and 
S07-hyperrace/race.t.


[perl #126597] [CONC][BUG] .race.grep(...) and .hyper.grep(...) produce an empty sequence

2017-10-18 Thread jn...@jnthn.net via RT
On Mon, 09 Nov 2015 06:36:49 -0800, matt.oa...@congenica.com wrote:
> The following has an empty result when using race or hyper in perl6
> version 2015.10-233-gac750a9 built on MoarVM version 2015.10-61-
> g624d504
> 
> $ perl6
> > (1..10).grep(* > 3)
> (4 5 6 7 8 9 10)
> > (1..10).race().grep(* > 3)
> ()
> > (1..10).hyper().grep(* > 3)
> ()
> 
> Looks specifically like the methods after the hyper/race never get
> called:
> 
> > (1..10).hyper().grep(* > 3).map({$_.say; $_})
> ()
> > (1..10).map({$_.say; $_}).hyper().grep(* > 3)
> 1
> 2
> 3
> 4
> 5
> 6
> 7
> 8
> 9
> 10
> ()

Fixed in new hyper/race implementation; tests in S07-hyperrace/hyper.t and 
S07-hyperrace/race.t.


[perl #130576] [CONC] .race & .hyper break [+] (1..100)

2017-10-18 Thread jn...@jnthn.net via RT
On Tue, 17 Jan 2017 10:10:44 -0800, coke wrote:
> The presence of a hyper or race causes incorrect output in some cases.
> Originally found with the .grep in the pipeline, but seems to impact
> even the simple case.
> 
> $ perl6 -e 'say [+] (1..100)'
> 5050
> 
> $ perl6 -e 'say [+] (1..100).race'
> 0
> 
>  $ perl6 -e 'say [+] (1..100).grep(* != 22)'
> 5028
> 
>  $ perl6 -e 'say [+] (1..100).race.grep(* != 22)'
> 0
> 
> $ perl6 -e 'say [+] (1..100).hyper.grep(* != 22)'
> 0
> 
> $ perl6 -e 'say [+] (1..100).grep(* != 22).race'
> 0
> 
> $ perl6 -e 'say [+] (1..100).grep(* != 22).hyper'
> 0
> 

Fixed in new hyper/race implementation; tests in S07-hyperrace/hyper.t and 
S07-hyperrace/race.t.


[perl #131865] [REGRESSION] Looping over a HyperSeq in sink context does nothing (for .hyper { say 2 })

2017-10-18 Thread jn...@jnthn.net via RT
On Tue, 08 Aug 2017 18:40:48 -0700, alex.jakime...@gmail.com wrote:
> Code:
> for .hyper { say 2 }
> 
> Result (2015.09-2015.06):
> 2
> 2
> 2
> 
> Result (9b0b9effe5,2017.07,HEAD(6745517)):
> (no output)
> 
> 
> There seems to be nothing wrong with using a for loop on .hyper or
> .race, so it should work. It starts working if you somehow use the
> value, for example:
> 
> Code:
> do for .hyper { say 2 }
> 
> Result (9b0b9effe5,2017.07,HEAD(6745517)):
> 2
> 2
> 2
> 
> 
> Bisectable points to
> https://github.com/rakudo/rakudo/commit/9b0b9effe5fee1f35497cf97a5e7bda9bb083507

Fixed in new hyper/race implementation; tests in S07-hyperrace/hyper.t and 
S07-hyperrace/race.t.


[perl #131865] [REGRESSION] Looping over a HyperSeq in sink context does nothing (for .hyper { say 2 })

2017-10-18 Thread jn...@jnthn.net via RT
On Tue, 08 Aug 2017 18:40:48 -0700, alex.jakime...@gmail.com wrote:
> Code:
> for .hyper { say 2 }
> 
> Result (2015.09-2015.06):
> 2
> 2
> 2
> 
> Result (9b0b9effe5,2017.07,HEAD(6745517)):
> (no output)
> 
> 
> There seems to be nothing wrong with using a for loop on .hyper or
> .race, so it should work. It starts working if you somehow use the
> value, for example:
> 
> Code:
> do for .hyper { say 2 }
> 
> Result (9b0b9effe5,2017.07,HEAD(6745517)):
> 2
> 2
> 2
> 
> 
> Bisectable points to
> https://github.com/rakudo/rakudo/commit/9b0b9effe5fee1f35497cf97a5e7bda9bb083507

Fixed in new hyper/race implementation; tests in S07-hyperrace/hyper.t and 
S07-hyperrace/race.t.


[perl #128084] [CONC][BUG] `.hyper/.race.map()` produces an empty sequence if `` is a multi-sub

2017-10-18 Thread jn...@jnthn.net via RT
On Fri, 06 May 2016 08:37:20 -0700, sml...@gmail.com wrote:
> ➜  sub f ($a) { $a**2 };  say (^10).hyper.map().list;
> (0 1 4 9 16 25 36 49 64 81)
> 
> ➜  multi f ($a) { $a**2 };  say (^10).hyper.map().list;
> ()
> 
> The expected behavior would be for both examples to produce the same
> (non-empty) list.
> 
> (This was first reported by Alexander Moquin in a comment to ticket
> #126597, but I think it should have its own ticket.)

Fixed in new hyper/race implementation; tests in S07-hyperrace/hyper.t and 
S07-hyperrace/race.t.


[perl #129234] [CONC] `.hyper` and `.race` resume after exceptions

2017-10-18 Thread jn...@jnthn.net via RT
On Thu, 08 Sep 2016 12:55:10 -0700, sml...@gmail.com wrote:
> If you `die` inside a `map/for` that is being `hyper/race`d...
> 
> for (1..1).hyper { die };  sleep 1;  say "Alive";
> 
> ...it prints the exception's backtrace, but then resumes the program
> as if nothing had happened:
> 
> Died
>   in block  at -e line 1
> 
> Alive

Fixed in new hyper/race implementation; tests in S07-hyperrace/hyper.t and 
S07-hyperrace/race.t. The new error reporting shows the backtrace of both the 
thing that went wrong in a worker thread, and the place that triggered the 
iteration.


[perl #128084] [CONC][BUG] `.hyper/.race.map()` produces an empty sequence if `` is a multi-sub

2017-10-18 Thread jn...@jnthn.net via RT
On Fri, 06 May 2016 08:37:20 -0700, sml...@gmail.com wrote:
> ➜  sub f ($a) { $a**2 };  say (^10).hyper.map().list;
> (0 1 4 9 16 25 36 49 64 81)
> 
> ➜  multi f ($a) { $a**2 };  say (^10).hyper.map().list;
> ()
> 
> The expected behavior would be for both examples to produce the same
> (non-empty) list.
> 
> (This was first reported by Alexander Moquin in a comment to ticket
> #126597, but I think it should have its own ticket.)

Fixed in new hyper/race implementation; tests in S07-hyperrace/hyper.t and 
S07-hyperrace/race.t.


[perl #129234] [CONC] `.hyper` and `.race` resume after exceptions

2017-10-18 Thread jn...@jnthn.net via RT
On Thu, 08 Sep 2016 12:55:10 -0700, sml...@gmail.com wrote:
> If you `die` inside a `map/for` that is being `hyper/race`d...
> 
> for (1..1).hyper { die };  sleep 1;  say "Alive";
> 
> ...it prints the exception's backtrace, but then resumes the program
> as if nothing had happened:
> 
> Died
>   in block  at -e line 1
> 
> Alive

Fixed in new hyper/race implementation; tests in S07-hyperrace/hyper.t and 
S07-hyperrace/race.t. The new error reporting shows the backtrace of both the 
thing that went wrong in a worker thread, and the place that triggered the 
iteration.


[perl #132012] Numeric values of signals are wrong (say +SIGUSR1)

2017-10-18 Thread Zoffix Znet via RT
On Sat, 14 Oct 2017 08:29:50 -0700, c...@zoffix.com wrote:
> Something fishy going on with the Signals enum. If that's fixed then
> the
> regression you pointed out will be fixed as well, as the new method
> simply
> uses enum's `.value` to get the signal number:
> 
>  c: 79b8ab9d3f^,79b8ab9d3f,HEAD say SIGUSR1.Numeric; say
> SIGUSR1.value; say $*KERNEL.signal: SIGUSR1
>  Zoffix__, ¦79b8ab9d3f^: «30␤30␤10»
> ¦79b8ab9,HEAD(cc6c055): «30␤30␤30»


There's also a failing spectest on Windows that expects both of these to give 
same value (on and Linux, they do):

C:\rakudo>perl6 -e "$*KERNEL.signal('SIGHUP').say"
3

C:\rakudo>perl6 -e "$*KERNEL.signal(SIGHUP).say"
1


[perl #132012] Numeric values of signals are wrong (say +SIGUSR1)

2017-10-18 Thread Zoffix Znet via RT
On Sat, 14 Oct 2017 08:29:50 -0700, c...@zoffix.com wrote:
> Something fishy going on with the Signals enum. If that's fixed then
> the
> regression you pointed out will be fixed as well, as the new method
> simply
> uses enum's `.value` to get the signal number:
> 
>  c: 79b8ab9d3f^,79b8ab9d3f,HEAD say SIGUSR1.Numeric; say
> SIGUSR1.value; say $*KERNEL.signal: SIGUSR1
>  Zoffix__, ¦79b8ab9d3f^: «30␤30␤10»
> ¦79b8ab9,HEAD(cc6c055): «30␤30␤30»


There's also a failing spectest on Windows that expects both of these to give 
same value (on and Linux, they do):

C:\rakudo>perl6 -e "$*KERNEL.signal('SIGHUP').say"
3

C:\rakudo>perl6 -e "$*KERNEL.signal(SIGHUP).say"
1


Re: [perl #132316] [Double Free] Crash while running program

2017-10-18 Thread Marcel Timmerman

On 10/17/2017 09:27 PM, Timo Paulssen via RT wrote:

if you can, please re-compile MoarVM passing the same options that were
used before (you can find them on the first screenfuls of the Makefile
inside moarvm's source folder) to Configure.pl but also include
--debug=3 and --optimize=0. This is an optional step. After that, please
run perl6-valgrind-m instead of perl6 or perl6-m to execute your script,
that should give more helpful data.

Later on, to run stuff regularly again, turn optimize back up to 3,
otherwise things will be noticeably slower.


@timo

The program didn't crash but the system got slower until a point that I 
had to stop it. The end result is shown below. (There are 2 more runs 
below this one!)



==26702==
==26702== Process terminating with default action of signal 2 (SIGINT)
==26702==    at 0x5DE090B: pthread_cond_wait@@GLIBC_2.3.2 (in 
/usr/lib64/libpthread-2.25.so)
==26702==    by 0x51061F8: uv_cond_wait (in 
/home/marcel/Software/perl6/rakudo/install/lib/libmoar.so)
==26702==    by 0x5061E04: shift (in 
/home/marcel/Software/perl6/rakudo/install/lib/libmoar.so)
==26702==    by 0x50419F3: MVM_repr_shift_o (in 
/home/marcel/Software/perl6/rakudo/install/lib/libmoar.so)
==26702==    by 0x5091898: worker (in 
/home/marcel/Software/perl6/rakudo/install/lib/libmoar.so)
==26702==    by 0x5019EF0: thread_initial_invoke (in 
/home/marcel/Software/perl6/rakudo/install/lib/libmoar.so)
==26702==    by 0x4FF84F7: MVM_interp_run (in 
/home/marcel/Software/perl6/rakudo/install/lib/libmoar.so)
==26702==    by 0x5019F6D: start_thread (in 
/home/marcel/Software/perl6/rakudo/install/lib/libmoar.so)

==26702==    by 0x5DDA36C: start_thread (in /usr/lib64/libpthread-2.25.so)
==26702==
==26702== HEAP SUMMARY:
==26702== in use at exit: 491,357,261 bytes in 1,627,986 blocks
==26702==   total heap usage: 29,576,790 allocs, 27,948,804 frees, 
17,354,627,753 bytes allocated

==26702==
==26702== LEAK SUMMARY:
==26702==    definitely lost: 1,213,140 bytes in 37,380 blocks
==26702==    indirectly lost: 49,224 bytes in 1,709 blocks
==26702==  possibly lost: 395,844 bytes in 7,003 blocks
==26702==    still reachable: 489,699,053 bytes in 1,581,894 blocks
==26702== suppressed: 0 bytes in 0 blocks
==26702== Rerun with --leak-check=full to see details of leaked memory
==26702==
==26702== For counts of detected and suppressed errors, rerun with: -v
==26702== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)



A run on a smaller set of files and directories ended like this

==27745==
==27745== HEAP SUMMARY:
==27745== in use at exit: 299,554,654 bytes in 996,179 blocks
==27745==   total heap usage: 3,885,468 allocs, 2,889,289 frees, 
2,080,116,257 bytes allocated

==27745==
==27745== LEAK SUMMARY:
==27745==    definitely lost: 632,860 bytes in 19,779 blocks
==27745==    indirectly lost: 15,392 bytes in 436 blocks
==27745==  possibly lost: 381,904 bytes in 6,792 blocks
==27745==    still reachable: 298,524,498 bytes in 969,172 blocks
==27745== suppressed: 0 bytes in 0 blocks
==27745== Rerun with --leak-check=full to see details of leaked memory
==27745==
==27745== For counts of detected and suppressed errors, rerun with: -v
==27745== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)


Then I ran with the option '--leak-check=full' which ended with a much 
larger list of data


==27960==
==27960== HEAP SUMMARY:
==27960== in use at exit: 280,544,350 bytes in 992,192 blocks
==27960==   total heap usage: 3,672,304 allocs, 2,680,112 frees, 
1,929,387,061 bytes allocated

==27960==
==27960== 24 bytes in 3 blocks are possibly lost in loss record 820 of 4,825
==27960==    at 0x4C2EB6B: malloc (vg_replace_malloc.c:299)
==27960==    by 0x50941CD: plan_for_cs (in 
/home/marcel/Software/perl6/rakudo/install/lib/libmoar.so)
==27960==    by 0x50942FB: plan_for_sf (in 
/home/marcel/Software/perl6/rakudo/install/lib/libmoar.so)
==27960==    by 0x50944CF: MVM_spesh_plan (in 
/home/marcel/Software/perl6/rakudo/install/lib/libmoar.so)
==27960==    by 0x5091A13: worker (in 
/home/marcel/Software/perl6/rakudo/install/lib/libmoar.so)
==27960==    by 0x5019EF0: thread_initial_invoke (in 
/home/marcel/Software/perl6/rakudo/install/lib/libmoar.so)
==27960==    by 0x4FF84F7: MVM_interp_run (in 
/home/marcel/Software/perl6/rakudo/install/lib/libmoar.so)
==27960==    by 0x5019F6D: start_thread (in 
/home/marcel/Software/perl6/rakudo/install/lib/libmoar.so)

==27960==    by 0x5DDA36C: start_thread (in /usr/lib64/libpthread-2.25.so)
==27960==
==27960== 81 bytes in 27 blocks are definitely lost in loss record 1,626 
of 4,825

==27960==    at 0x4C2EB6B: malloc (vg_replace_malloc.c:299)
==27960==    by 0x509779D: MVM_string_ascii_encode_substr (in 
/home/marcel/Software/perl6/rakudo/install/lib/libmoar.so)
==27960==    by 0x5097BF5: MVM_string_ascii_encode (in 
/home/marcel/Software/perl6/rakudo/install/lib/libmoar.so)
==27960==    by 0x50BA5DD: MVM_unicode_name_to_property_value_code 

Re: [perl #132316] [Double Free] Crash while running program

2017-10-18 Thread mt1957 via RT
On 10/17/2017 09:27 PM, Timo Paulssen via RT wrote:
> if you can, please re-compile MoarVM passing the same options that were
> used before (you can find them on the first screenfuls of the Makefile
> inside moarvm's source folder) to Configure.pl but also include
> --debug=3 and --optimize=0. This is an optional step. After that, please
> run perl6-valgrind-m instead of perl6 or perl6-m to execute your script,
> that should give more helpful data.
>
> Later on, to run stuff regularly again, turn optimize back up to 3,
> otherwise things will be noticeably slower.
>
@timo

The program didn't crash but the system got slower until a point that I 
had to stop it. The end result is shown below. (There are 2 more runs 
below this one!)


==26702==
==26702== Process terminating with default action of signal 2 (SIGINT)
==26702==    at 0x5DE090B: pthread_cond_wait@@GLIBC_2.3.2 (in 
/usr/lib64/libpthread-2.25.so)
==26702==    by 0x51061F8: uv_cond_wait (in 
/home/marcel/Software/perl6/rakudo/install/lib/libmoar.so)
==26702==    by 0x5061E04: shift (in 
/home/marcel/Software/perl6/rakudo/install/lib/libmoar.so)
==26702==    by 0x50419F3: MVM_repr_shift_o (in 
/home/marcel/Software/perl6/rakudo/install/lib/libmoar.so)
==26702==    by 0x5091898: worker (in 
/home/marcel/Software/perl6/rakudo/install/lib/libmoar.so)
==26702==    by 0x5019EF0: thread_initial_invoke (in 
/home/marcel/Software/perl6/rakudo/install/lib/libmoar.so)
==26702==    by 0x4FF84F7: MVM_interp_run (in 
/home/marcel/Software/perl6/rakudo/install/lib/libmoar.so)
==26702==    by 0x5019F6D: start_thread (in 
/home/marcel/Software/perl6/rakudo/install/lib/libmoar.so)
==26702==    by 0x5DDA36C: start_thread (in /usr/lib64/libpthread-2.25.so)
==26702==
==26702== HEAP SUMMARY:
==26702== in use at exit: 491,357,261 bytes in 1,627,986 blocks
==26702==   total heap usage: 29,576,790 allocs, 27,948,804 frees, 
17,354,627,753 bytes allocated
==26702==
==26702== LEAK SUMMARY:
==26702==    definitely lost: 1,213,140 bytes in 37,380 blocks
==26702==    indirectly lost: 49,224 bytes in 1,709 blocks
==26702==  possibly lost: 395,844 bytes in 7,003 blocks
==26702==    still reachable: 489,699,053 bytes in 1,581,894 blocks
==26702== suppressed: 0 bytes in 0 blocks
==26702== Rerun with --leak-check=full to see details of leaked memory
==26702==
==26702== For counts of detected and suppressed errors, rerun with: -v
==26702== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)



A run on a smaller set of files and directories ended like this

==27745==
==27745== HEAP SUMMARY:
==27745== in use at exit: 299,554,654 bytes in 996,179 blocks
==27745==   total heap usage: 3,885,468 allocs, 2,889,289 frees, 
2,080,116,257 bytes allocated
==27745==
==27745== LEAK SUMMARY:
==27745==    definitely lost: 632,860 bytes in 19,779 blocks
==27745==    indirectly lost: 15,392 bytes in 436 blocks
==27745==  possibly lost: 381,904 bytes in 6,792 blocks
==27745==    still reachable: 298,524,498 bytes in 969,172 blocks
==27745== suppressed: 0 bytes in 0 blocks
==27745== Rerun with --leak-check=full to see details of leaked memory
==27745==
==27745== For counts of detected and suppressed errors, rerun with: -v
==27745== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)


Then I ran with the option '--leak-check=full' which ended with a much 
larger list of data

==27960==
==27960== HEAP SUMMARY:
==27960== in use at exit: 280,544,350 bytes in 992,192 blocks
==27960==   total heap usage: 3,672,304 allocs, 2,680,112 frees, 
1,929,387,061 bytes allocated
==27960==
==27960== 24 bytes in 3 blocks are possibly lost in loss record 820 of 4,825
==27960==    at 0x4C2EB6B: malloc (vg_replace_malloc.c:299)
==27960==    by 0x50941CD: plan_for_cs (in 
/home/marcel/Software/perl6/rakudo/install/lib/libmoar.so)
==27960==    by 0x50942FB: plan_for_sf (in 
/home/marcel/Software/perl6/rakudo/install/lib/libmoar.so)
==27960==    by 0x50944CF: MVM_spesh_plan (in 
/home/marcel/Software/perl6/rakudo/install/lib/libmoar.so)
==27960==    by 0x5091A13: worker (in 
/home/marcel/Software/perl6/rakudo/install/lib/libmoar.so)
==27960==    by 0x5019EF0: thread_initial_invoke (in 
/home/marcel/Software/perl6/rakudo/install/lib/libmoar.so)
==27960==    by 0x4FF84F7: MVM_interp_run (in 
/home/marcel/Software/perl6/rakudo/install/lib/libmoar.so)
==27960==    by 0x5019F6D: start_thread (in 
/home/marcel/Software/perl6/rakudo/install/lib/libmoar.so)
==27960==    by 0x5DDA36C: start_thread (in /usr/lib64/libpthread-2.25.so)
==27960==
==27960== 81 bytes in 27 blocks are definitely lost in loss record 1,626 
of 4,825
==27960==    at 0x4C2EB6B: malloc (vg_replace_malloc.c:299)
==27960==    by 0x509779D: MVM_string_ascii_encode_substr (in 
/home/marcel/Software/perl6/rakudo/install/lib/libmoar.so)
==27960==    by 0x5097BF5: MVM_string_ascii_encode (in 
/home/marcel/Software/perl6/rakudo/install/lib/libmoar.so)
==27960==    by 0x50BA5DD: 

Re: [perl #132316] [Double Free] Crash while running program

2017-10-18 Thread Marcel Timmerman

@Aleks-Daniel Jakimenko-Aleksejev

How can I reproduce this issue? What code did you use?


Well,

1) Install a mongod server and start it up. Its address  might be 
127.0.0.1:27017 which is the default for mongod servers. Servers can be 
downloaded using


$ curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.2.9.tgz

When unpacked, you can find the server in the bin directory.

2) Install MongoDB. it depends on a host of modules.

3) Install the Library project from github; 
https://github.com/MARTIMM/Library


4) Setup a config file in $HOME/.library/config.toml

database = "Library"
uri = "mongodb://127.0.0.1:27017"
[collection]
meta-config = "Metaconfig"
meta-data = "Metadata"

5) Run the program (take a directory which is not of value for you to be 
sure! like /tmp)


$ store-file-metadata.pl6 fs -et -r 

If the directory is sufficiently large/deep, the program will crash.


I can imagine that this will take too much to do, thanks anyway if you try.

Marcel


Re: [perl #132316] [Double Free] Crash while running program

2017-10-18 Thread mt1957 via RT
@Aleks-Daniel Jakimenko-Aleksejev
> How can I reproduce this issue? What code did you use?
>
Well,

1) Install a mongod server and start it up. Its address  might be 
127.0.0.1:27017 which is the default for mongod servers. Servers can be 
downloaded using

$ curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.2.9.tgz

When unpacked, you can find the server in the bin directory.

2) Install MongoDB. it depends on a host of modules.

3) Install the Library project from github; 
https://github.com/MARTIMM/Library

4) Setup a config file in $HOME/.library/config.toml

database = "Library"
uri = "mongodb://127.0.0.1:27017"
[collection]
meta-config = "Metaconfig"
meta-data = "Metadata"

5) Run the program (take a directory which is not of value for you to be 
sure! like /tmp)

$ store-file-metadata.pl6 fs -et -r 

If the directory is sufficiently large/deep, the program will crash.


I can imagine that this will take too much to do, thanks anyway if you try.

Marcel