Skip to content

Instantly share code, notes, and snippets.

@nkh
Created August 25, 2017 06:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nkh/f482d398b8db001a7778f89975723fbc to your computer and use it in GitHub Desktop.
Save nkh/f482d398b8db001a7778f89975723fbc to your computer and use it in GitHub Desktop.
I took an example from Data::Dump::Tree (DDT)and started playing with Promises, the
goal was simply educative, I am following "Parallelism, Concurrency,
and Asynchrony in Perl 6" document to try the different mechanisms. The final goal
being the parallelization of DDT as it is too sluggish and also in preparation of
Asciio 2.0.
<jnthn>
1 will probably because the thread pool over-subscribes the CPU. Second is 'cus you exhausted the thread pool (16 is the number of threads it has by default). Third one may be a data race that's worth reporting.
First two are already known about; the latter being addressed by making await non-blocking (available in 6.d.PREVIEW)
The first just needs the time spent making the pool size itself more sensibly in respones to the kind of workload
<nadim> I don't see how the first case differs from the first run and the last run. I await all the threads in each iteration so the thread pool should be full [no thread running] at each itertation [start]
how does await non blocking fix second problem? I'd like to know I have reached the pool limit when I run start not later when I use await. or I am not understanding it right? I'd rather have an exception thrown directly when using start. or that things get aueued without me thinking about the thread pool.
<jnthn> Everyone would love not to have to think.
<nadim> An exception makes people think, like it or not
Problem 1
=========
for ^50
{
$dump_start = now ;
my $d1 = start $d.ddt: :get, { :$config, :$regex, :$match }, :title<config parsing>, :elements_filters[&sorter] ;
my $d2 = start $d.ddt: :get, { :$config, :$regex, :$match }, :title<config parsing>, :elements_filters[&sorter] ;
my $d3 = start $d.ddt: :get, { :$config, :$regex, :$match }, :title<config parsing>, :elements_filters[&sorter] ;
my $d4 = start $d.ddt: :get, { :$config, :$regex, :$match }, :title<config parsing>, :elements_filters[&sorter] ;
my $d5 = start $d.ddt: :get, { :$config, :$regex, :$match }, :title<config parsing>, :elements_filters[&sorter] ;
my $d6 = start $d.ddt: :get, { :$config, :$regex, :$match }, :title<config parsing>, :elements_filters[&sorter] ;
my $d7 = start $d.ddt: :get, { :$config, :$regex, :$match }, :title<config parsing>, :elements_filters[&sorter] ;
my $d8 = start $d.ddt: :get, { :$config, :$regex, :$match }, :title<config parsing>, :elements_filters[&sorter] ;
await $d1, $d2, $d3, $d4, $d5, $d6, $d7, $d8 ;
say "dump time: {now - $dump_start} s" ;
}
The problem is that it first iterates quickly and then slows down considerably
dump time: 0.24248294 s # first iteration
dump time: 0.2493730 s
dump time: 0.2249258 s
dump time: 0.25128736 s
dump time: 0.24334974 s
dump time: 0.2577809 s
...
dump time: 0.4216805 s
dump time: 0.404167881 s
dump time: 0.40570028 s
dump time: 0.41778251 s
dump time: 0.4126616 s # last iteration
I ran it with 500 iteration, around iteration 150 the time seems to stabilize just below 0.5s.
At iteration 500 it is half the time under 0.5s and half the time very slightly higher
with peaks around 0.7 s
execution slowing down
----------------------
I changed the code to this loop and that call to ddt to show the promises, wrongly calling promises
threads in my example.
for ^15
{
@threads.push: start $d.ddt: :get, { :$config, :$regex, :$match }, :title<config parsing>, :elements_filters[&sorter] ;
}
ddt @threads ;
that worked fine and fast. I changed the code to
for ^16 # change from ^15 to ^16
{
@threads.push: start $d.ddt: :get, { :$config, :$regex, :$match }, :title<config parsing>, :elements_filters[&sorter] ;
}
ddt @threads ;
that doesn't work at all. The "ddt @threads" does not get executed, nothing get's schedules, no CPU is used. It's dead Jim.
random errors
-------------
I changed the code to
for ^15 # change back to ^15
{
@threads.push: start $d.ddt: :get, { :$config, :$regex, :$match }, :title<config parsing>, :elements_filters[&sorter] ;
}
ddt @threads, :flat{1, 5} ; #changed the option to ddt
The option to ddt makes the rendering much slower, slow enough to that some promises get scheduled before the
ddt call returns.
I ran it mucltiple times on the command line, sometimes it works, like the example below:
132 ~/4/P6-Data-Dump-Tree p6 time_threads.pl
time: 0.24393817 s
[15] @0
0 = .Promise <Planned> 5 = .Promise <Kept> 10 = .Promise <Planned>
1 = .Promise <Planned> 6 = .Promise <Planned> 11 = .Promise <Planned>
2 = .Promise <Planned> 7 = .Promise <Planned> 12 = .Promise <Planned>
3 = .Promise <Planned> 8 = .Promise <Planned> 13 = .Promise <Planned>
4 = .Promise <Planned> 9 = .Promise <Planned> 14 = .Promise <Planned>
time: 0.5515428 s
total time 0.8070619 s
sometimes it fails with this error:
-----------------------------------
122 ~/4/P6-Data-Dump-Tree p6 time_threads.pl
time: 0.2489823 s
[15] @0
0 = .Promise <Planned> 5 = .Promise <Planned> 10 = .Promise <Kept>
1 = .Promise <Planned> 6 = .Promise <Planned> 11 = .Promise <Planned>
2 = .Promise <Planned> 7 = .Promise <Kept> 12 = .Promise <Kept>
3 = .Promise <Planned> 8 = .Promise <Planned> 13 = .Promise <Broken>
4 = .Promise <Planned> 9 = .Promise <Planned> 14 = .Promise <Kept>
Tried to get the result of a broken Promise
in block <unit> at time_threads.pl line 53
Original exception:
Cannot find method 'specialize' on object of type NQPClassHOW
in method reset at /home/nadim/nadim/devel/repositories/perl_modules/P6-Data-Dump-Tree/lib/Data/Dump/Tree.pm (Data::Dump::Tree) line 218
my code at line 218 looks like this :
$.width //= %+((qx[stty size] || '0 80') ~~ /\d+ \s+ (\d+)/)[0] ;
Other times it fails like this without outputing the result of ddt:
-------------------------------------------------------------------
122 ~/4/P6-Data-Dump-Tree p6 time_threads.pl
time: 0.24770038 s
Unhandled exception in code scheduled on thread 19
Unhandled exception in code scheduled on thread 18
Unhandled exception in code scheduled on thread 13
Unhandled exception in code scheduled on thread 6
Type check failed in binding to parameter 'value'; expected Any but got NQPMu (?)
I added "use v6.d.PREVIEW" and ran a few mre tests. I don't know if the next errors are
related but here are the errors I got.
Another Error
-------------
207 ~/4/P6-Data-Dump-Tree p6 time_threads.pl
time: 0.2496898 s
.Promise+{x[Str]} (Planned)
Segmentation fault (core dumped)
And One with a stack dump
-------------------------
207 ~/4/P6-Data-Dump-Tree p6 time_threads.pl
time: 0.2489853 s
.Promise+{x[Str]} (Planned)
*** Error in `/home/nadim/nadim/devel/repositories/rakudo/install/bin/moar': double free or corruption (fasttop): 0x0000557c1fe1fa40 ***
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x790cb)[0x7fdd07da80cb]
/lib/x86_64-linux-gnu/libc.so.6(+0x82c9a)[0x7fdd07db1c9a]
/lib/x86_64-linux-gnu/libc.so.6(cfree+0x4c)[0x7fdd07db5d8c]
//home/nadim/nadim/devel/repositories/rakudo/install/lib/libmoar.so(+0x1e91fa)[0x7fdd082df1fa]
//home/nadim/nadim/devel/repositories/rakudo/install/lib/libmoar.so(MVM_serialization_read_ref+0x0)[0x7fdd082e1130]
//home/nadim/nadim/devel/repositories/rakudo/install/lib/libmoar.so(+0x1ec3bd)[0x7fdd082e23bd]
//home/nadim/nadim/devel/repositories/rakudo/install/lib/libmoar.so(+0x1ecaa1)[0x7fdd082e2aa1]
//home/nadim/nadim/devel/repositories/rakudo/install/lib/libmoar.so(MVM_serialization_deserialize+0xb0f)[0x7fdd082e5b5f]
//home/nadim/nadim/devel/repositories/rakudo/install/lib/libmoar.so(MVM_interp_run+0xe168)[0x7fdd0827a7f8]
//home/nadim/nadim/devel/repositories/rakudo/install/lib/libmoar.so(MVM_vm_run_file+0xc2)[0x7fdd0833f942]
/home/nadim/nadim/devel/repositories/rakudo/install/bin/moar(+0x1160)[0x557c1a2ca160]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf1)[0x7fdd07d4f3f1]
/home/nadim/nadim/devel/repositories/rakudo/install/bin/moar(+0x11ca)[0x557c1a2ca1ca]
======= Memory map: ========
557c1a2c9000-557c1a2cb000 r-xp 00000000 08:04 11536889 /home/nadim/nadim/devel/repositories/rakudo/install/bin/moar
557c1a4ca000-557c1a4cb000 r--p 00001000 08:04 11536889 /home/nadim/nadim/devel/repositories/rakudo/install/bin/moar
557c1a4cb000-557c1a4cc000 rw-p 00002000 08:04 11536889 /home/nadim/nadim/devel/repositories/rakudo/install/bin/moar
557c1b5b9000-557c27404000 rw-p 00000000 00:00 0 [heap]
7fdca8000000-7fdca8021000 rw-p 00000000 00:00 0
7fdca8021000-7fdcac000000 ---p 00000000 00:00 0
7fdcb0000000-7fdcb02af000 rw-p 00000000 00:00 0
7fdcb02af000-7fdcb4000000 ---p 00000000 00:00 0
7fdcb4000000-7fdcb42c1000 rw-p 00000000 00:00 0
7fdcb42c1000-7fdcb8000000 ---p 00000000 00:00 0
7fdcb8000000-7fdcb82d8000 rw-p 00000000 00:00 0
7fdcb82d8000-7fdcbc000000 ---p 00000000 00:00 0
7fdcbe7fd000-7fdcbe7fe000 ---p 00000000 00:00 0
7fdcbe7fe000-7fdcbeffe000 rwxp 00000000 00:00 0
7fdcbeffe000-7fdcbefff000 ---p 00000000 00:00 0
7fdcbefff000-7fdcbf7ff000 rwxp 00000000 00:00 0
7fdcbf7ff000-7fdcbf800000 ---p 00000000 00:00 0
7fdcbf800000-7fdcc0000000 rwxp 00000000 00:00 0
7fdcc0000000-7fdcc02a8000 rw-p 00000000 00:00 0
7fdcc02a8000-7fdcc4000000 ---p 00000000 00:00 0
7fdcc4000000-7fdcc42a8000 rw-p 00000000 00:00 0
7fdcc42a8000-7fdcc8000000 ---p 00000000 00:00 0
7fdcc8000000-7fdcc828c000 rw-p 00000000 00:00 0
7fdcc828c000-7fdccc000000 ---p 00000000 00:00 0
7fdccc000000-7fdccc2c9000 rw-p 00000000 00:00 0
7fdccc2c9000-7fdcd0000000 ---p 00000000 00:00 0
7fdcd0000000-7fdcd00eb000 rw-p 00000000 00:00 0
7fdcd00eb000-7fdcd4000000 ---p 00000000 00:00 0
7fdcd4000000-7fdcd42ac000 rw-p 00000000 00:00 0
7fdcd42ac000-7fdcd8000000 ---p 00000000 00:00 0
7fdcd8000000-7fdcd8484000 rw-p 00000000 00:00 0
7fdcd8484000-7fdcdc000000 ---p 00000000 00:00 0
7fdcdc7f9000-7fdcdc7fa000 ---p 00000000 00:00 0
7fdcdc7fa000-7fdcdcffa000 rwxp 00000000 00:00 0
7fdcdcffa000-7fdcdcffb000 ---p 00000000 00:00 0
7fdcdcffb000-7fdcdd7fb000 rwxp 00000000 00:00 0
7fdcdd7fb000-7fdcdd7fc000 ---p 00000000 00:00 0
7fdcdd7fc000-7fdcddffc000 rwxp 00000000 00:00 0
7fdcddffc000-7fdcddffd000 ---p 00000000 00:00 0
7fdcddffd000-7fdcde7fd000 rwxp 00000000 00:00 0
7fdcde7fd000-7fdcde7fe000 ---p 00000000 00:00 0
7fdcde7fe000-7fdcdeffe000 rwxp 00000000 00:00 0
7fdcdeffe000-7fdcdefff000 ---p 00000000 00:00 0
7fdcdefff000-7fdcdf7ff000 rwxp 00000000 00:00 0
7fdcdf7ff000-7fdcdf800000 ---p 00000000 00:00 0
7fdcdf800000-7fdce0000000 rwxp 00000000 00:00 0
7fdce0000000-7fdce02ac000 rw-p 00000000 00:00 0
7fdce02ac000-7fdce4000000 ---p 00000000 00:00 0
7fdce4000000-7fdce4484000 rw-p 00000000 00:00 0
7fdce4484000-7fdce8000000 ---p 00000000 00:00 0
7fdce8000000-7fdce889a000 rw-p 00000000 00:00 0
7fdce889a000-7fdcec000000 ---p 00000000 00:00 0
7fdcec000000-7fdcec484000 rw-p 00000000 00:00 0
7fdcec484000-7fdcf0000000 ---p 00000000 00:00 0
7fdcf0000000-7fdcf1077000 rw-p 00000000 00:00 0
7fdcf1077000-7fdcf4000000 ---p 00000000 00:00 0
7fdcf4000000-7fdcf4c8e000 rw-p 00000000 00:00 0
7fdcf4c8e000-7fdcf8000000 ---p 00000000 00:00 0
7fdcf8000000-7fdcf8906000 rw-p 00000000 00:00 0
7fdcf8906000-7fdcfc000000 ---p 00000000 00:00 0
7fdcfc7f9000-7fdcfc7fa000 ---p 00000000 00:00 0
7fdcfc7fa000-7fdcfcffa000 rwxp 00000000 00:00 0
7fdcfcffa000-7fdcfcffb000 ---p 00000000 00:00 0
7fdcfcffb000-7fdcfd7fb000 rwxp 00000000 00:00 0
7fdcfd7fb000-7fdcfd7fc000 ---p 00000000 00:00 0
7fdcfd7fc000-7fdcfdffc000 rwxp 00000000 00:00 0
7fdcfdffc000-7fdcfdffd000 ---p 00000000 00:00 0
7fdcfdffd000-7fdcfe7fd000 rwxp 00000000 00:00 0
7fdcfe7fd000-7fdcfe7fe000 ---p 00000000 00:00 0
7fdcfe7fe000-7fdcfeffe000 rwxp 00000000 00:00 0
7fdcfeffe000-7fdcfefff000 ---p 00000000 00:00 0
7fdcfefff000-7fdcff7ff000 rwxp 00000000 00:00 0
7fdcff7ff000-7fdcff800000 ---p 00000000 00:00 0
7fdcff800000-7fdd00000000 rwxp 00000000 00:00 0
7fdd00000000-7fdd008f5000 rw-p 00000000 00:00 0
7fdd008f5000-7fdd04000000 ---p 00000000 00:00 0
7fdd047d7000-7fdd047d8000 r-xp 00000000 00:00 0
7fdd04839000-7fdd04842000 r-xp 00000000 00:00 0
7fdd048a3000-7fdd048a9000 r-xp 00000000 00:00 0
7fdd0490a000-7fdd04919000 r-xp 00000000 00:00 0
7fdd0497a000-7fdd0498a000 r-xp 00000000 00:00 0
7fdd049eb000-7fdd049f5000 r-xp 00000000 00:00 0
7fdd04a56000-7fdd04a5b000 r-xp 00000000 00:00 0
7fdd04a5b000-7fdd04a65000 r--p 00000000 08:04 14420696 /home/nadim/nadim/devel/repositories/rakudo/install/share/perl6/runtime/CORE.d.setting.moarvm
7fdd04ac6000-7fdd04ac7000 r-xp 00000000 00:00 0
7fdd04b26000-7fdd04b43000 r-xp 00000000 00:00 0
7fdd04ba4000-7fdd04d0f000 rw-p 00000000 00:00 0
7fdd04d0f000-7fdd04d56000 r--p 00000000 08:04 14420689 /home/nadim/nadim/devel/repositories/rakudo/install/share/nqp/lib/Perl6/Metamodel.moarvm
7fdd04d56000-7fdd04d84000 r--p 00000000 08:04 14420690 /home/nadim/nadim/devel/repositories/rakudo/install/share/nqp/lib/Perl6/BOOTSTRAP.moarvm
7fdd04d84000-7fdd04db4000 rw-p 00000000 00:00 0
7fdd04db4000-7fdd0599e000 r--p 00000000 08:04 14420695 /home/nadim/nadim/devel/repositories/rakudo/install/share/perl6/runtime/CORE.setting.moarvm
7fdd05a77000-7fdd05aa1000 r-xp 00000000 00:00 0
7fdd05aa1000-7fdd05ab5000 r--p 00000000 08:04 16779310 /home/nadim/nadim/devel/repositories/perl_modules/P6-Data-Dump-Tree/lib/.precomp/144BF9F3B6429DD8176CC4E9795A0372370FB9A6.1502282226.01473/44/44D523FFB5ABE7D26BB49E7B06788E251321B707
7fdd05ab5000-7fdd05ac7000 r-xp 00000000 00:00 0
7fdd05ac7000-7fdd05b0e000 r--p 00000000 08:04 12847330 /home/nadim/nadim/devel/repositories/perl_modules/P6-Data-Dump-Tree/lib/.precomp/144BF9F3B6429DD8176CC4E9795A0372370FB9A6.1502282226.01473/3D/3D41A0AFE24130F51FFBCEF6AFE961DDA37F6783
7fdd05b0e000-7fdd05b1f000 r--p 00000000 08:04 16781222 /home/nadim/nadim/devel/repositories/perl_modules/P6-Data-Dump-Tree/lib/.precomp/144BF9F3B6429DD8176CC4E9795A0372370FB9A6.1502282226.01473/60/600A505E725F18E88B88BD0CFAE8777E8D484F71
7fdd05b1f000-7fdd05b21000 r--p 00000000 08:04 18351951 /home/nadim/nadim/devel/repositories/perl_modules/P6-Data-Dump-Tree/lib/.precomp/144BF9F3B6429DD8176CC4E9795A0372370FB9A6.1502282226.01473/8E/8EA5DB2ECF282549078F71D65126461FB7A64E62
7fdd05b21000-7fdd05b29000 r-xp 00000000 00:00 0
7fdd05b29000-7fdd05b31000 r--p 00000000 08:04 16779111 /home/nadim/nadim/devel/repositories/rakudo/install/share/perl6/precomp/144BF9F3B6429DD8176CC4E9795A0372370FB9A6.1502282226.01473/AA/AAC61C0EC6F88780427830443A057030CAA33846
7fdd05b31000-7fdd05b58000 r--p 00000000 08:04 16779270 /home/nadim/nadim/devel/repositories/perl_modules/P6-Data-Dump-Tree/lib/.precomp/144BF9F3B6429DD8176CC4E9795A0372370FB9A6.1502282226.01473/05/0507286D7ECBC11693B1A14D908EFEBDBB1B6923
7fdd05b58000-7fdd05b62000 r--p 00000000 08:04 16778766 /home/nadim/nadim/devel/repositories/perl_modules/P6-Data-Dump-Tree/lib/.precomp/144BF9F3B6429DD8176CC4E9795A0372370FB9A6.1502282226.01473/11/11991BA0029646A8355C826E70969F37E1C76A91
7fdd05b62000-7fdd05b69000 r--p 00000000 08:04 16778762 /home/nadim/nadim/devel/repositories/perl_modules/P6-Data-Dump-Tree/lib/.precomp/144BF9F3B6429DD8176CC4E9795A0372370FB9A6.1502282226.01473/5B/5B65E98943E302FD16C3F9497BEAC3C9129A7D12
7fdd05b69000-7fdd05ba0000 r-xp 00000000 00:00 0
7fdd05ba0000-7fdd05ba7000 r-xp 00000000 08:04 14420701 /home/nadim/nadim/devel/repositories/rakudo/install/share/perl6/runtime/dynext/libperl6_ops_moar.so
7fdd05ba7000-7fdd05da6000 ---p 00007000 08:04 14420701 /home/nadim/nadim/devel/repositories/rakudo/install/share/perl6/runtime/dynext/libperl6_ops_moar.so
7fdd05da6000-7fdd05da7000 r--p 00006000 08:04 14420701 /home/nadim/nadim/devel/repositories/rakudo/install/share/perl6/runtime/dynext/libperl6_ops_moar.so
7fdd05da7000-7fdd05da8000 rw-p 00007000 08:04 14420701 /home/nadim/nadim/devel/repositories/rakudo/install/share/perl6/runtime/dynext/libperl6_ops_moar.so
7fdd05da8000-7fdd05dce000 r--p 00000000 08:04 14420686 /home/nadim/nadim/devel/repositories/rakudo/install/share/nqp/lib/Perl6/Optimizer.moarvm
7fdd05dce000-7fdd05dd3000 r--p 00000000 08:04 14420688 /home/nadim/nadim/devel/repositories/rakudo/install/share/nqp/lib/Perl6/Compiler.moarvm
7fdd05dd3000-7fdd05e56000 rw-p 00000000 00:00 0
7fdd05e56000-7fdd05ea2000 r--p 00000000 08:04 14420682 /home/nadim/nadim/devel/repositories/rakudo/install/share/nqp/lib/Perl6/World.moarvm
7fdd05ea2000-7fdd05eb2000 r--p 00000000 08:04 14420684 /home/nadim/nadim/devel/repositories/rakudo/install/share/nqp/lib/Perl6/Ops.moarvm
7fdd05eb2000-7fdd05ec7000 r--p 00000000 08:04 14420687 /home/nadim/nadim/devel/repositories/rakudo/install/share/nqp/lib/Perl6/Pod.moarvm
7fdd05ec7000-7fdd05fae000 r--p 00000000 08:04 14420685 /home/nadim/nadim/devel/repositories/rakudo/install/share/nqp/lib/Perl6/Actions.moarvm
7fdd05fae000-7fdd05fe8000 r--p 00000000 08:04 14420640 /home/nadim/nadim/devel/repositories/rakudo/install/share/nqp/lib/NQPP5QRegex.moarvm
7fdd05fe8000-7fdd06388000 r--p 00000000 08:04 14420683 /home/nadim/nadim/devel/repositories/rakudo/install/share/nqp/lib/Perl6/Grammar.moarvm
7fdd06388000-7fdd063f9000 r--p 00000000 08:04 14420637 /home/nadim/nadim/devel/repositories/rakudo/install/share/nqp/lib/QAST.moarvm
7fdd063f9000-7fdd063fa000 ---p 00000000 00:00 0
7fdd063fa000-7fdd06bfa000 rwxp 00000000 00:00 0
7fdd06ebe000-7fdd06ed4000 r-xp 00000000 08:04 13631768 /lib/x86_64-linux-gnu/libgcc_s.so.1
7fdd06ed4000-7fdd070d3000 ---p 00016000 08:04 13631768 /lib/x86_64-linux-gnu/libgcc_s.so.1
7fdd070d3000-7fdd070d4000 r--p 00015000 08:04 13631768 /lib/x86_64-linux-gnu/libgcc_s.so.1
7fdd070d4000-7fdd070d5000 rw-p 00016000 08:04 13631768 /lib/x86_64-linux-gnu/libgcc_s.so.1
7fdd070f9000-7fdd070fa000 rw-p 00000000 00:00 0
7fdd070fa000-7fdd0710b000 r--p 00000000 08:04 16780009 /home/nadim/nadim/devel/repositories/perl_modules/P6-Data-Dump-Tree/lib/.precomp/144BF9F3B6429DD8176CC4E9795A0372370FB9A6.1502282226.01473/92/925FEA9C8148300097989ED1F4491922AF09473F
7fdd0710b000-7fdd0711b000 r--p 00000000 08:04 16779108 /home/nadim/nadim/devel/repositories/rakudo/install/share/perl6/precomp/144BF9F3B6429DD8176CC4E9795A0372370FB9A6.1502282226.01473/5D/5DD1D8B49C838828E13504545C427D3D157E56EC
7fdd0711b000-7fdd0727f000 r-xp 00000000 00:00 0
7fdd0727f000-7fdd0728b000 r--p 00000000 08:04 18352112 /home/nadim/.perl6/precomp/144BF9F3B6429DD8176CC4E9795A0372370FB9A6.1502282226.01473/96/9635A0F39B634ECB1D4A3EB252E37C50A1A16D29
7fdd0728b000-7fdd073fc000 r-xp 00000000 00:00 0
7fdd073fc000-7fdd073ff000 r-xp 00000000 08:04 13631697 /lib/x86_64-linux-gnu/libdl-2.24.so
7fdd073ff000-7fdd075fe000 ---p 00003000 08:04 13631697 /lib/x86_64-linux-gnu/libdl-2.24.so
7fdd075fe000-7fdd075ff000 r--p 00002000 08:04 13631697 /lib/x86_64-linux-gnu/libdl-2.24.so
7fdd075ff000-7fdd07600000 rw-p 00003000 08:04 13631697 /lib/x86_64-linux-gnu/libdl-2.24.so
7fdd07600000-7fdd07607000 r-xp 00000000 08:04 13631711 /lib/x86_64-linux-gnu/librt-2.24.so
7fdd07607000-7fdd07806000 ---p 00007000 08:04 13631711 /lib/x86_64-linux-gnu/librt-2.24.so
7fdd07806000-7fdd07807000 r--p 00006000 08:04 13631711 /lib/x86_64-linux-gnu/librt-2.24.so
7fdd07807000-7fdd07808000 rw-p 00007000 08:04 13631711 /lib/x86_64-linux-gnu/librt-2.24.so
7fdd07808000-7fdd07820000 r-xp 00000000 08:04 13631709 /lib/x86_64-linux-gnu/libpthread-2.24.so
7fdd07820000-7fdd07a20000 ---p 00018000 08:04 13631709 /lib/x86_64-linux-gnu/libpthread-2.24.so
7fdd07a20000-7fdd07a21000 r--p 00018000 08:04 13631709 /lib/x86_64-linux-gnu/libpthread-2.24.so
7fdd07a21000-7fdd07a22000 rw-p 00019000 08:04 13631709 /lib/x86_64-linux-gnu/libpthread-2.24.so
7fdd07a22000-7fdd07a26000 rw-p 00000000 00:00 0
7fdd07a26000-7fdd07b2e000 r-xp 00000000 08:04 13631698 /lib/x86_64-linux-gnu/libm-2.24.so
7fdd07b2e000-7fdd07d2d000 ---p 00108000 08:04 13631698 /lib/x86_64-linux-gnu/libm-2.24.so
7fdd07d2d000-7fdd07d2e000 r--p 00107000 08:04 13631698 /lib/x86_64-linux-gnu/libm-2.24.so
7fdd07d2e000-7fdd07d2f000 rw-p 00108000 08:04 13631698 /lib/x86_64-linux-gnu/libm-2.24.so
7fdd07d2f000-7fdd07eed000 r-xp 00000000 08:04 13631692 /lib/x86_64-linux-gnu/libc-2.24.so
7fdd07eed000-7fdd080ec000 ---p 001be000 08:04 13631692 /lib/x86_64-linux-gnu/libc-2.24.so
7fdd080ec000-7fdd080f0000 r--p 001bd000 08:04 13631692 /lib/x86_64-linux-gnu/libc-2.24.so
7fdd080f0000-7fdd080f2000 rw-p 001c1000 08:04 13631692 /lib/x86_64-linux-gnu/libc-2.24.so
7fdd080f2000-7fdd080f6000 rw-p 00000000 00:00 0
7fdd080f6000-7fdd085bd000 r-xp 00000000 08:04 14419156 /home/nadim/nadim/devel/repositories/rakudo/install/lib/libmoar.so
7fdd085bd000-7fdd087bd000 ---p 004c7000 08:04 14419156 /home/nadim/nadim/devel/repositories/rakudo/install/lib/libmoar.so
7fdd087bd000-7fdd0886b000 r--p 004c7000 08:04 14419156 /home/nadim/nadim/devel/repositories/rakudo/install/lib/libmoar.so
7fdd0886b000-7fdd0887d000 rw-p 00575000 08:04 14419156 /home/nadim/nadim/devel/repositories/rakudo/install/lib/libmoar.so
7fdd0887d000-7fdd0887e000 rw-p 00000000 00:00 0
7fdd0887e000-7fdd088a3000 r-xp 00000000 08:04 13631629 /lib/x86_64-linux-gnu/ld-2.24.so
7fdd088a3000-7fdd088a9000 r--p 00000000 08:04 14420681 /home/nadim/nadim/devel/repositories/rakudo/install/share/nqp/lib/Perl6/ModuleLoader.moarvm
7fdd088a9000-7fdd088c5000 r--p 00000000 08:04 14420635 /home/nadim/nadim/devel/repositories/rakudo/install/share/nqp/lib/MASTOps.moarvm
7fdd088c5000-7fdd088d1000 r--p 00000000 08:04 14420636 /home/nadim/nadim/devel/repositories/rakudo/install/share/nqp/lib/MASTNodes.moarvm
7fdd088d1000-7fdd0892b000 r--p 00000000 08:04 14420634 /home/nadim/nadim/devel/repositories/rakudo/install/share/nqp/lib/NQPHLL.moarvm
7fdd0892b000-7fdd08944000 r--p 00000000 08:04 14420632 /home/nadim/nadim/devel/repositories/rakudo/install/share/nqp/lib/QASTNode.moarvm
7fdd08944000-7fdd0896d000 r--p 00000000 08:04 14420633 /home/nadim/nadim/devel/repositories/rakudo/install/share/nqp/lib/QRegex.moarvm
7fdd0896d000-7fdd089cf000 r--p 00000000 08:04 14420638 /home/nadim/nadim/devel/repositories/rakudo/install/share/nqp/lib/NQPP6QRegex.moarvm
7fdd089cf000-7fdd089e3000 r--p 00000000 08:04 14420629 /home/nadim/nadim/devel/repositories/rakudo/install/share/nqp/lib/nqpmo.moarvm
7fdd089e3000-7fdd089f3000 r--p 00000000 08:04 14420631 /home/nadim/nadim/devel/repositories/rakudo/install/share/nqp/lib/NQPCORE.setting.moarvm
7fdd089f3000-7fdd089f6000 r--p 00000000 08:04 14420630 /home/nadim/nadim/devel/repositories/rakudo/install/share/nqp/lib/ModuleLoader.moarvm
7fdd089f6000-7fdd08a7c000 rw-p 00000000 00:00 0
7fdd08a7c000-7fdd08a7f000 r--p 00000000 08:04 14420698 /home/nadim/nadim/devel/repositories/rakudo/install/share/perl6/runtime/perl6.moarvm
7fdd08a7f000-7fdd08aa3000 rw-p 00000000 00:00 0
7fdd08aa3000-7fdd08aa4000 r--p 00025000 08:04 13631629 /lib/x86_64-linux-gnu/ld-2.24.so
7fdd08aa4000-7fdd08aa5000 rw-p 00026000 08:04 13631629 /lib/x86_64-linux-gnu/ld-2.24.so
7fdd08aa5000-7fdd08aa6000 rw-p 00000000 00:00 0
7ffcb1b6a000-7ffcb1b8a000 rwxp 00000000 00:00 0 [stack]
7ffcb1b8a000-7ffcb1b8c000 rw-p 00000000 00:00 0
7ffcb1bc6000-7ffcb1bc8000 r--p 00000000 00:00 0 [vvar]
7ffcb1bc8000-7ffcb1bca000 r-xp 00000000 00:00 0 [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall]
Aborted (core dumped)
Reducing the amount of promises changed nothing
-----------------------------------------------
It still sometimes work and sometimes not.
207 ~/4/P6-Data-Dump-Tree p6 time_threads.pl
time: 0.247054 s
.Promise+{x[Str]} (Planned)
[12] @0
0 = .Promise (Planned) 5 = .Promise (Planned) 10 = .Promise (Kept)
1 = .Promise (Planned) 6 = .Promise (Planned) 11 = .Promise (Planned)
2 = .Promise (Planned) 7 = .Promise (Planned)
3 = .Promise (Planned) 8 = .Promise (Planned)
4 = .Promise (Planned) 9 = .Promise (Planned)
time: 0.455136 s
total time 0.7086660 s
207 ~/4/P6-Data-Dump-Tree p6 time_threads.pl
time: 0.24793827 s
.Promise+{x[Str]} (Planned)
Unhandled exception in code scheduled on thread 10
Type check failed in binding to parameter 'value'; expected Any but got NQPMu (?)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment