Created
October 21, 2012 02:29
-
-
Save japhb/3925501 to your computer and use it in GitHub Desktop.
Rakudo/Parrot crash using run() in a loop
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
$ perl6 -e 'for 1..100 -> $i { say $i; run "true"; 1; }' | |
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
Segmentation fault | |
$ perl6 -e 'for 1..100 -> $i { say $i; run "true"; 1; }' | |
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
*** glibc detected *** perl6: double free or corruption (!prev): 0x00fc83f8 *** | |
======= Backtrace: ========= | |
/lib/i386-linux-gnu/libc.so.6(+0x6f751)[0xed2751] | |
/lib/i386-linux-gnu/libc.so.6(+0x7107b)[0xed407b] | |
/lib/i386-linux-gnu/libc.so.6(cfree+0x6d)[0xed720d] | |
/home/geoff/git/rakudo/install/lib/parrot/4.4.0-devel/dynext/nqp_bigint_ops.so(+0xb17e)[0x52d17e] | |
/home/geoff/git/rakudo/install/lib/parrot/4.4.0-devel/dynext/nqp_bigint_ops.so(+0x1391d)[0x53591d] | |
/home/geoff/git/rakudo/install/lib/parrot/4.4.0-devel/dynext/nqp_ops.so(+0x1f526)[0xb30526] | |
/home/geoff/git/rakudo/install/lib/parrot/4.4.0-devel/dynext/nqp_group.so(+0xd5b4)[0x3715b4] | |
/home/geoff/git/rakudo/install/lib/libparrot.so.4.4.0(+0x69d19)[0x179d19] | |
/home/geoff/git/rakudo/install/lib/libparrot.so.4.4.0(+0x6a103)[0x17a103] | |
/home/geoff/git/rakudo/install/lib/libparrot.so.4.4.0(Parrot_gc_new_pmc_header+0x2d)[0x174a7d] | |
/home/geoff/git/rakudo/install/lib/libparrot.so.4.4.0(+0x8c31d)[0x19c31d] | |
/home/geoff/git/rakudo/install/lib/libparrot.so.4.4.0(Parrot_pmc_new+0x51)[0x19c601] | |
/home/geoff/git/rakudo/install/lib/libparrot.so.4.4.0(Parrot_pcc_reuse_continuation+0x60)[0x184c20] | |
/home/geoff/git/rakudo/install/lib/libparrot.so.4.4.0(+0x3f734)[0x14f734] | |
/home/geoff/git/rakudo/install/lib/libparrot.so.4.4.0(+0x8d9fc)[0x19d9fc] | |
/home/geoff/git/rakudo/install/lib/libparrot.so.4.4.0(+0x8d638)[0x19d638] | |
/home/geoff/git/rakudo/install/lib/libparrot.so.4.4.0(+0x743ad)[0x1843ad] | |
/home/geoff/git/rakudo/install/lib/libparrot.so.4.4.0(Parrot_pcc_invoke_from_sig_object+0xc3)[0x17fd13] | |
/home/geoff/git/rakudo/install/lib/libparrot.so.4.4.0(Parrot_ext_call+0x76)[0x171c06] | |
/home/geoff/git/rakudo/install/lib/libparrot.so.4.4.0(+0x14fb6d)[0x25fb6d] | |
/home/geoff/git/rakudo/install/lib/libparrot.so.4.4.0(Parrot_pcc_invoke_from_sig_object+0x86)[0x17fcd6] | |
/home/geoff/git/rakudo/install/lib/libparrot.so.4.4.0(Parrot_ext_call+0x76)[0x171c06] | |
/home/geoff/git/rakudo/install/lib/libparrot.so.4.4.0(+0x918f2)[0x1a18f2] | |
/home/geoff/git/rakudo/install/lib/libparrot.so.4.4.0(+0x920e9)[0x1a20e9] | |
/home/geoff/git/rakudo/install/lib/libparrot.so.4.4.0(Parrot_cx_begin_execution+0x67)[0x1a2187] | |
/home/geoff/git/rakudo/install/lib/libparrot.so.4.4.0(Parrot_pf_execute_bytecode_program+0xaf)[0x1aa49f] | |
/home/geoff/git/rakudo/install/lib/libparrot.so.4.4.0(Parrot_api_run_bytecode+0xc5)[0x16dda5] | |
perl6(main+0x185)[0x80490b5] | |
/lib/i386-linux-gnu/libc.so.6(__libc_start_main+0xe7)[0xe79e37] | |
perl6[0x8048c71] | |
======= Memory map: ======== | |
00110000-002a1000 r-xp 00000000 08:01 3283286 /home/geoff/git/rakudo/install/lib/libparrot.so.4.4.0 | |
002a1000-002a4000 r--p 00191000 08:01 3283286 /home/geoff/git/rakudo/install/lib/libparrot.so.4.4.0 | |
002a4000-002d4000 rw-p 00194000 08:01 3283286 /home/geoff/git/rakudo/install/lib/libparrot.so.4.4.0 | |
002d4000-002d6000 r-xp 00000000 08:01 271528 /lib/i386-linux-gnu/libdl-2.13.so | |
002d6000-002d7000 r--p 00001000 08:01 271528 /lib/i386-linux-gnu/libdl-2.13.so | |
002d7000-002d8000 rw-p 00002000 08:01 271528 /lib/i386-linux-gnu/libdl-2.13.so | |
002d8000-002e0000 r-xp 00000000 08:01 262192 /lib/i386-linux-gnu/libcrypt-2.13.so | |
002e0000-002e1000 r--p 00007000 08:01 262192 /lib/i386-linux-gnu/libcrypt-2.13.so | |
002e1000-002e2000 rw-p 00008000 08:01 262192 /lib/i386-linux-gnu/libcrypt-2.13.so | |
002e2000-00309000 rw-p 00000000 00:00 0 | |
00309000-0030e000 r-xp 00000000 08:01 1313710 /usr/lib/libffi.so.5.0.10 | |
0030e000-0030f000 r--p 00004000 08:01 1313710 /usr/lib/libffi.so.5.0.10 | |
0030f000-00310000 rw-p 00005000 08:01 1313710 /usr/lib/libffi.so.5.0.10 | |
00310000-00344000 r-xp 00000000 08:01 131108 /lib/libncurses.so.5.7 | |
00344000-00345000 ---p 00034000 08:01 131108 /lib/libncurses.so.5.7 | |
00345000-00347000 r--p 00034000 08:01 131108 /lib/libncurses.so.5.7 | |
00347000-00348000 rw-p 00036000 08:01 131108 /lib/libncurses.so.5.7 | |
00348000-00362000 r-xp 00000000 08:01 278830 /lib/i386-linux-gnu/libgcc_s.so.1 | |
00362000-00363000 r--p 00019000 08:01 278830 /lib/i386-linux-gnu/libgcc_s.so.1 | |
00363000-00364000 rw-p 0001a000 08:01 278830 /lib/i386-linux-gnu/libgcc_s.so.1 | |
00364000-00376000 r-xp 00000000 08:01 3283673 /home/geoff/git/rakudo/install/lib/parrot/4.4.0-devel/dynext/nqp_group.so | |
00376000-00377000 r--p 00011000 08:01 3283673 /home/geoff/git/rakudo/install/lib/parrot/4.4.0-devel/dynext/nqp_group.so | |
00377000-00378000 rw-p 00012000 08:01 3283673 /home/geoff/git/rakudo/install/lib/parrot/4.4.0-devel/dynext/nqp_group.so | |
00378000-0037c000 r-xp 00000000 08:01 3283310 /home/geoff/git/rakudo/install/lib/parrot/4.4.0-devel/dynext/io_ops.so | |
0037c000-0037d000 r--p 00003000 08:01 3283310 /home/geoff/git/rakudo/install/lib/parrot/4.4.0-devel/dynext/io_ops.so | |
0037d000-0037f000 rw-p 00004000 08:01 3283310 /home/geoff/git/rakudo/install/lib/parrot/4.4.0-devel/dynext/io_ops.so | |
0037f000-00385000 r-xp 00000000 08:01 3283305 /home/geoff/git/rakudo/install/lib/parrot/4.4.0-devel/dynext/bit_ops.so | |
00385000-00386000 r--p 00005000 08:01 3283305 /home/geoff/git/rakudo/install/lib/parrot/4.4.0-devel/dynext/bit_ops.so | |
00386000-0038a000 rw-p 00006000 08:01 3283305 /home/geoff/git/rakudo/install/lib/parrot/4.4.0-devel/dynext/bit_ops.so | |
0038a000-00397000 r-xp 00000000 08:01 3283676 /home/geoff/git/rakudo/install/lib/parrot/4.4.0-devel/dynext/nqp_dyncall_ops.so | |
00397000-00398000 r--p 0000c000 08:01 3283676 /home/geoff/git/rakudo/install/lib/parrot/4.4.0-devel/dynext/nqp_dyncall_ops.so | |
00398000-00399000 rw-p 0000d000 08:01 3283676 /home/geoff/git/rakudo/install/lib/parrot/4.4.0-devel/dynext/nqp_dyncall_ops.so | |
003c1000-003c5000 r-xp 00000000 08:01 3283318 /home/geoff/git/rakudo/install/lib/parrot/4.4.0-devel/dynext/trans_ops.so | |
003c5000-003c6000 r--p 00003000 08:01 3283318 /home/geoff/git/rakudo/install/lib/parrot/4.4.0-devel/dynext/trans_ops.so | |
003c6000-003c9000 rw-p 00004000 08:01 3283318 /home/geoff/git/rakudo/install/lib/parrot/4.4.0-devel/dynext/trans_ops.so | |
003e2000-003f7000 r-xp 00000000 08:01 271534 /lib/i386-linux-gnu/libpthread-2.13.so | |
003f7000-003f8000 r--p 00015000 08:01 271534 /lib/i386-linux-gnu/libpthread-2.13.so | |
003f8000-003f9000 rw-p 00016000 08:01 271534 /lib/i386-linux-gnu/libpthread-2.13.so | |
003f9000-003fb000 rw-p 00000000 00:00 0 | |
003fb000-004da000 r-xp 00000000 08:01 1312725 /usr/lib/i386-linux-gnu/libstdc++.so.6.0.14 | |
004da000-004de000 r--p 000de000 08:01 1312725 /usr/lib/i386-linux-gnu/libstdc++.so.6.0.14 | |
004de000-004df000 rw-p 000e2000 08:01 1312725 /usr/lib/i386-linux-gnu/libstdc++.so.6.0.14 | |
004df000-004e6000 rw-p 00000000 00:00 0 | |
00508000-0050a000 r-xp 00000000 08:01 3283317 /home/geoff/git/rakudo/install/lib/parrot/4.4.0-devel/dynext/sys_ops.so | |
0050a000-0050b000 r--p 00001000 08:01 3283317 /home/geoff/git/rakudo/install/lib/parrot/4.4.0-devel/dynext/sys_ops.so | |
0050b000-0050c000 rw-p 00002000 08:01 3283317 /home/geoff/git/rakudo/install/lib/parrot/4.4.0-devel/dynext/sys_ops.soAborted | |
$ |
However, if the run() is the last statement within the loop block, it can survive 1000 iterations:
$ perl6 -e 'for 1..1000 -> $i { say $i; my $error = run "true"; }'
1
2
...
1000
$ # YAY!
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Crashes even faster when the run() is not in sink context:
$ perl6 -e 'for 1..100 -> $i { say $i; my $error = run "true"; 1; }'
1
2
3
4
5
6
7
8
9
10
Segmentation fault
$ perl6 -e 'for 1..100 -> $i { say $i; my $error = run "true"; 1; }'
1
2
3
4
5
6
7
8
9
10
*** glibc detected *** perl6: free(): invalid pointer: 0x08d3a234 ***
======= Backtrace: =========
/lib/i386-linux-gnu/libc.so.6(+0x6f751)[0x3e4751]
/lib/i386-linux-gnu/libc.so.6(+0x7107b)[0x3e607b]
/lib/i386-linux-gnu/libc.so.6(cfree+0x6d)[0x3e920d]
/home/geoff/git/rakudo/install/lib/parrot/4.4.0-devel/dynext/nqp_bigint_ops.so(+0xb17e)[0x1fa17e]
/home/geoff/git/rakudo/install/lib/parrot/4.4.0-devel/dynext/nqp_bigint_ops.so(+0x1391d)[0x20291d]
/home/geoff/git/rakudo/install/lib/parrot/4.4.0-devel/dynext/nqp_ops.so(+0x1f526)[0x1aa526]
/home/geoff/git/rakudo/install/lib/parrot/4.4.0-devel/dynext/nqp_group.so(+0xd5b4)[0x6555b4]
/home/geoff/git/rakudo/install/lib/libparrot.so.4.4.0(+0x69d19)[0xaebd19]
/home/geoff/git/rakudo/install/lib/libparrot.so.4.4.0(+0x6a103)[0xaec103]
/home/geoff/git/rakudo/install/lib/libparrot.so.4.4.0(Parrot_gc_new_pmc_header+0x2d)[0xae6a7d]
/home/geoff/git/rakudo/install/lib/libparrot.so.4.4.0(+0x8c31d)[0xb0e31d]
/home/geoff/git/rakudo/install/lib/libparrot.so.4.4.0(Parrot_pmc_new+0x51)[0xb0e601]
/home/geoff/git/rakudo/install/lib/libparrot.so.4.4.0(+0xf8875)[0xb7a875]
/home/geoff/git/rakudo/install/lib/libparrot.so.4.4.0(+0x70f3f)[0xaf2f3f]
/home/geoff/git/rakudo/install/lib/libparrot.so.4.4.0(+0x53c7b)[0xad5c7b]
/home/geoff/git/rakudo/install/lib/libparrot.so.4.4.0(+0x8d9fc)[0xb0f9fc]
/home/geoff/git/rakudo/install/lib/libparrot.so.4.4.0(+0x8d638)[0xb0f638]
/home/geoff/git/rakudo/install/lib/libparrot.so.4.4.0(+0x743ad)[0xaf63ad]
/home/geoff/git/rakudo/install/lib/libparrot.so.4.4.0(Parrot_pcc_invoke_from_sig_object+0xc3)[0xaf1d13]
/home/geoff/git/rakudo/install/lib/libparrot.so.4.4.0(Parrot_ext_call+0x76)[0xae3c06]
/home/geoff/git/rakudo/install/lib/libparrot.so.4.4.0(+0x14fb6d)[0xbd1b6d]
/home/geoff/git/rakudo/install/lib/libparrot.so.4.4.0(Parrot_pcc_invoke_from_sig_object+0x86)[0xaf1cd6]
/home/geoff/git/rakudo/install/lib/libparrot.so.4.4.0(Parrot_ext_call+0x76)[0xae3c06]
/home/geoff/git/rakudo/install/lib/libparrot.so.4.4.0(+0x918f2)[0xb138f2]
/home/geoff/git/rakudo/install/lib/libparrot.so.4.4.0(+0x920e9)[0xb140e9]
/home/geoff/git/rakudo/install/lib/libparrot.so.4.4.0(Parrot_cx_begin_execution+0x67)[0xb14187]
/home/geoff/git/rakudo/install/lib/libparrot.so.4.4.0(Parrot_pf_execute_bytecode_program+0xaf)[0xb1c49f]
/home/geoff/git/rakudo/install/lib/libparrot.so.4.4.0(Parrot_api_run_bytecode+0xc5)[0xadfda5]
perl6(main+0x185)[0x80490b5]
/lib/i386-linux-gnu/libc.so.6(__libc_start_main+0xe7)[0x38be37]
perl6[0x8048c71]
======= Memory map: ========
00110000-0013e000 r-xp 00000000 08:01 131120 /lib/libreadline.so.6.2
0013e000-0013f000 r--p 0002e000 08:01 131120 /lib/libreadline.so.6.2
0013f000-00142000 rw-p 0002f000 08:01 131120 /lib/libreadline.so.6.2
00142000-00143000 rw-p 00000000 00:00 0
00143000-00148000 r-xp 00000000 08:01 1313710 /usr/lib/libffi.so.5.0.10
00148000-00149000 r--p 00004000 08:01 1313710 /usr/lib/libffi.so.5.0.10
00149000-0014a000 rw-p 00005000 08:01 1313710 /usr/lib/libffi.so.5.0.10
0014a000-0017e000 r-xp 00000000 08:01 131108 /lib/libncurses.so.5.7
0017e000-0017f000 ---p 00034000 08:01 131108 /lib/libncurses.so.5.7
0017f000-00181000 r--p 00034000 08:01 131108 /lib/libncurses.so.5.7
00181000-00182000 rw-p 00036000 08:01 131108 /lib/libncurses.so.5.7
00182000-00189000 r-xp 00000000 08:01 3283726 /home/geoff/git/rakudo/install/lib/parrot/4.4.0-devel/dynext/perl6_group.so
00189000-0018a000 r--p 00006000 08:01 3283726 /home/geoff/git/rakudo/install/lib/parrot/4.4.0-devel/dynext/perl6_group.so
0018a000-0018b000 rw-p 00007000 08:01 3283726 /home/geoff/git/rakudo/install/lib/parrot/4.4.0-devel/dynext/perl6_group.so
0018b000-001bb000 r-xp 00000000 08:01 3283674 /home/geoff/git/rakudo/install/lib/parrot/4.4.0-devel/dynext/nqp_ops.so
001bb000-001bc000 r--p 0002f000 08:01 3283674 /home/geoff/git/rakudo/install/lib/parrot/4.4.0-devel/dynext/nqp_ops.so
001bc000-001c6000 rw-p 00030000 08:01 3283674 /home/geoff/git/rakudo/install/lib/parrot/4.4.0-devel/dynext/nqp_ops.so
001c6000-001d3000 r-xp 00000000 08:01 3283676 /home/geoff/git/rakudo/install/lib/parrot/4.4.0-devel/dynext/nqp_dyncall_ops.so
001d3000-001d4000 r--p 0000c000 08:01 3283676 /home/geoff/git/rakudo/install/lib/parrot/4.4.0-devel/dynext/nqp_dyncall_ops.so
001d4000-001d5000 rw-p 0000d000 08:01 3283676 /home/geoff/git/rakudo/install/lib/parrot/4.4.0-devel/dynext/nqp_dyncall_ops.so
001d6000-001eb000 r-xp 00000000 08:01 271534 /lib/i386-linux-gnu/libpthread-2.13.so
001eb000-001ec000 r--p 00015000 08:01 271534 /lib/i386-linux-gnu/libpthread-2.13.so
001ec000-001ed000 rw-p 00016000 08:01 271534 /lib/i386-linux-gnu/libpthread-2.13.so
001ed000-001ef000 rw-p 00000000 00:00 0
001ef000-00205000 r-xp 00000000 08:01 3283675 /home/geoff/git/rakudo/install/lib/parrot/4.4.0-devel/dynext/nqp_bigint_ops.so
00205000-00206000 r--p 00015000 08:01 3283675 /home/geoff/git/rakudo/install/lib/parrot/4.4.0-devel/dynext/nqp_bigint_ops.so
00206000-00209000 rw-p 00016000 08:01 3283675 /home/geoff/git/rakudo/install/lib/parrot/4.4.0-devel/dynext/nqp_bigint_ops.so
0021a000-0021c000 r-xp 00000000 08:01 271528 /lib/i386-linux-gnu/libdl-2.13.so
0021c000-0021d000 r--p 00001000 08:01 271528 /lib/i386-linux-gnu/libdl-2.13.so
0021d000-0021e000 rw-p 00002000 08:01 271528 /lib/i386-linux-gnu/libdl-2.13.so
0021e000-00344000 r-xp 00000000 08:01 1322250 /usr/lib/libicuuc.so.44.2
00344000-0034d000 r--p 00126000 08:01 1322250 /usr/lib/libicuuc.so.44.2
0034d000-0034e000 rw-p 0012f000 08:01 1322250 /usr/lib/libicuuc.so.44.2
0034e000-00352000 rw-p 00000000 00:00 0
0036d000-00370000 r-xp 00000000 08:01 3283312 /home/geoff/git/rakudo/install/lib/parrot/4.4.0-devel/dynext/math_ops.so
00370000-00371000 r--p 00002000 08:01 3283312 /home/geoff/git/rakudo/install/lib/parrot/4.4.0-devel/dynext/math_ops.so
00371000-00373000 rw-p 00003000 08:01 3283312 /home/geoff/git/rakudo/install/lib/parrot/4.4.0-devel/dynext/math_ops.so
00374000-00375000 r-xp 00000000 00:00 0 [vdso]
00375000-004d6000 r-xp 00000000 08:01 271533 /lib/i386-linux-gnu/libc-2.13.so
004d6000-004d7000 ---p 00161000 08:01 271533 /lib/i386-linux-gnu/libc-2.13.so
004d7000-004d9000 r--p 00161000 08:01 271533 /lib/i386-linux-gnu/libc-2.13.so
004d9000-004da000 rw-p 00163000 08:01 271533 /lib/i386-linux-gnu/libc-2.13.so
004da000-004dd000 rw-p 00000000 00:00 0
004dd000-005bc000 r-xp 00000000 08:01 1312725 /usr/lib/i386-linux-gnu/libstdc++.so.6.0.14
005bc000-005c0000 r--p 000de000 08:01 1312725 /usr/lib/i386-linux-gnu/libstdc++.so.6.0.14
005c0000-005c1000 rw-p 000e2000 08:01 1312725 /usr/lib/i386-linux-gnu/libstdc++.so.6.0.14
005c1000-005c8000 rw-p 00000000 00:00 0
005c8000-005ee000 r-xp 00000000 08:01 3283727 /home/geoff/git/rakudo/install/lib/parrot/4.4.0-devel/dynext/perl6_ops.soAborted
$