Skip to content
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

SEGV with rakudo.moar when executing 'next; CONTROL { }' #3774

Closed
p6rt opened this issue Apr 7, 2015 · 7 comments
Closed

SEGV with rakudo.moar when executing 'next; CONTROL { }' #3774

p6rt opened this issue Apr 7, 2015 · 7 comments

Comments

@p6rt
Copy link

p6rt commented Apr 7, 2015

Migrated from rt.perl.org#124255 (status was 'resolved')

Searchable as RT124255$

@p6rt
Copy link
Author

p6rt commented Apr 7, 2015

From @usev6

While trying to silence warnings from tests which use eval_lives_ok, I stumbled upon a segfault with rakudo.moar. The golfed version is​:

$ perl6-m -e 'next; CONTROL { }'
Segmentation fault

I tried to generate a gdb backtrace​:

$ cat control.p6
next;
CONTROL {};

$ gdb --args /home/christian/my_files/computer/Perl6/tmp/rakudo_work_1/install/bin/moar --execname="$0" --libpath="/home/christian/my_files/computer/Perl6/tmp/rakudo_work_1/install/share/nqp/lib" --libpath="." /home/christian/my_files/computer/Perl6/tmp/rakudo_work_1/perl6.moarvm control.p6
GNU gdb (GDB) 7.4.1-debian
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+​: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software​: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
For bug reporting instructions, please see​:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /home/christian/my_files/computer/Perl6/tmp/rakudo_work_1/install/bin/moar...done.
(gdb) run
Starting program​: /home/christian/my_files/computer/Perl6/tmp/rakudo_work_1/install/bin/moar --execname=-bash --libpath=/home/christian/my_files/computer/Perl6/tmp/rakudo_work_1/install/share/nqp/lib --libpath=. /home/christian/my_files/computer/Perl6/tmp/rakudo_work_1/perl6.moarvm control.p6
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".

Program received signal SIGSEGV, Segmentation fault.
MVM_string_flatten (tc=0x6026c0, s=0x0) at src/strings/ops.c​:1018
1018 switch (s->body.storage_type) {
(gdb) bt full
#​0 MVM_string_flatten (tc=0x6026c0, s=0x0) at src/strings/ops.c​:1018
No locals.
#​1 0x00007ffff79478b6 in MVM_interp_run (tc=0x6026c0, initial_invoke=0x2cbcc60, invoke_data=0x6)
  at src/core/interp.c​:1561
  op = 6
  LABELS = {0x7ffff7944e81, 0x7ffff7955569, 0x7ffff7944efa, 0x7ffff7944efa, 0x7ffff794b4c1,
  0x7ffff794b504, 0x7ffff795556e, 0x7ffff7955429, 0x7ffff7953b6d, 0x7ffff7954b0f, 0x7ffff7954b14,
  0x7ffff794a3c6, 0x7ffff794a3cb, 0x7ffff794a3d0, 0x7ffff794a3d5, 0x7ffff794a36d, 0x7ffff79557f8,
  0x7ffff79557fd, 0x7ffff7955802, 0x7ffff7953ca0, 0x7ffff79562fb, 0x7ffff7944eb2, 0x7ffff7944eb8,
  0x7ffff7953fbd, 0x7ffff7954011, 0x7ffff7954157, 0x7ffff795407c, 0x7ffff79540ed, 0x7ffff794a3e5,
  0x7ffff794a45d, 0x7ffff7954a1d, 0x7ffff7954a8d, 0x7ffff79541bb, 0x7ffff795422d, 0x7ffff794dd90,
  0x7ffff7952178, 0x7ffff79521f7, 0x7ffff7956300, 0x7ffff795628f, 0x7ffff7955851, 0x7ffff79558bb,
  0x7ffff7955936, 0x7ffff79555ff, 0x7ffff7955670, 0x7ffff79556df, 0x7ffff7944f9e, 0x7ffff7944f9e,
  0x7ffff794e519, 0x7ffff794e578, 0x7ffff794de60, 0x7ffff794f59a, 0x7ffff794b6da, 0x7ffff794b73d,
  0x7ffff794b51a, 0x7ffff794b57d, 0x7ffff79555b3, 0x7ffff794b1b3, 0x7ffff794b2af, 0x7ffff794b207,
  0x7ffff794b25b, 0x7ffff794b303, 0x7ffff794b357, 0x7ffff794e6f2, 0x7ffff795547b, 0x7ffff79554ca,
  0x7ffff7955519, 0x7ffff79542a2, 0x7ffff7955a59, 0x7ffff79559a5, 0x7ffff7955a07, 0x7ffff7955807,
  0x7ffff794a820, 0x7ffff794a874, 0x7ffff794a8b4, 0x7ffff794a8f4, 0x7ffff794a934, 0x7ffff794e10b,
  0x7ffff794eba9, 0x7ffff794d671, 0x7ffff794e371, 0x7ffff794e2cd, 0x7ffff794e31f, 0x7ffff794e15a,
  0x7ffff794eb0e, 0x7ffff7946eea, 0x7ffff7946f74, 0x7ffff794b3ab, 0x7ffff794b40d, 0x7ffff794b46b,
  0x7ffff794d050, 0x7ffff794d0a6, 0x7ffff794d0fd, 0x7ffff794e9e4, 0x7ffff794af35, 0x7ffff794af87,
  0x7ffff794afd9, 0x7ffff794b02b, 0x7ffff794b07d, 0x7ffff794b10b, 0x7ffff794b15c, 0x7ffff794e1d0,
  0x7ffff794f61f, 0x7ffff794f66e, 0x7ffff79472e8, 0x7ffff7947337, 0x7ffff7947388, 0x7ffff79473d7,
  0x7ffff7947428, 0x7ffff7947477, 0x7ffff79474c6, 0x7ffff7947520, 0x7ffff794757b, 0x7ffff79475d4,
  0x7ffff7947625, 0x7ffff7946de8, 0x7ffff7946e37, 0x7ffff7946e94, 0x7ffff7948f9a, 0x7ffff794955d,
  0x7ffff794de16, 0x7ffff794eb5c, 0x7ffff794e3bb, 0x7ffff794e412, 0x7ffff794e46a, 0x7ffff794e4c1,
  0x7ffff794d92b, 0x7ffff794ea4d, 0x7ffff794a9c7, 0x7ffff794aa17, 0x7ffff794aa6e, 0x7ffff794aac7,
  0x7ffff794ab1e, 0x7ffff794d154, 0x7ffff794d19f, 0x7ffff794d1ec, 0x7ffff794ab75, 0x7ffff794ac25,
  0x7ffff794ace9, 0x7ffff794adad, 0x7ffff794ae71, 0x7ffff794d246, 0x7ffff794d29d, 0x7ffff794d32f,
  0x7ffff794d3cb, 0x7ffff794d45d, 0x7ffff794d4ef, 0x7ffff794d5ab, 0x7ffff794dc18, 0x7ffff794dcd4,
  0x7ffff794d98a, 0x7ffff794da2b, 0x7ffff794dad6, 0x7ffff794db77, 0x7ffff794d6c0, 0x7ffff794d78b,
  0x7ffff794d860, 0x7ffff794e040, 0x7ffff794e81f, 0x7ffff794eaac, 0x7ffff794a974, 0x7ffff794e5d4,
  0x7ffff794e22a, 0x7ffff794e276, 0x7ffff794df5a, 0x7ffff794dfb5, 0x7ffff794e885, 0x7ffff794e754,
  0x7ffff794e7b5, 0x7ffff794e910, 0x7ffff794e97a, 0x7ffff794a63a, 0x7ffff794a69b, 0x7ffff794a6ff,
  0x7ffff794a763, 0x7ffff794a7c0, 0x7ffff794ed86, 0x7ffff794ede6, 0x7ffff795463c, 0x7ffff795472e,
  0x7ffff794ee45, 0x7ffff794eeac, 0x7ffff794f1d3, 0x7ffff79509ef, 0x7ffff794f180, 0x7ffff794f23d,
  0x7ffff794eefe, 0x7ffff794ef6c, 0x7ffff794f01a, 0x7ffff794f0c8, 0x7ffff794f290, 0x7ffff794f33e,
  0x7ffff7956910, 0x7ffff79566d6, 0x7ffff794f3f9, 0x7ffff794f4d4, 0x7ffff794f53b, 0x7ffff794659f,
  0x7ffff794595e, 0x7ffff79502b3, 0x7ffff7950312...}
  cur_op = 0x7ffff5a0e8ce "\006"
  bytecode_start = 0x7ffff5a0e79e "\237"
  reg_base = 0x2cbcc60
  cu = 0x66ac70
  cur_callsite = 0x7ffff7ddc2e0
#​2 0x00007ffff79d02ff in MVM_vm_run_file (instance=0x602010,
  filename=0x7fffffffe72d "/home/christian/my_files/computer/Perl6/tmp/rakudo_work_1/perl6.moarvm")
  at src/moar.c​:210
  start_frame = <optimized out>
  tc = 0x6026c0
  cu = 0x669a50
#​3 0x000000000040100d in main (argc=6, argv=0x7fffffffe418) at src/main.c​:189
  instance = 0x602010
  input_file = 0x7fffffffe72d "/home/christian/my_files/computer/Perl6/tmp/rakudo_work_1/perl6.moarvm"
  executable_name = <optimized out>
  lib_path = {
  0x7fffffffe6d1 "/home/christian/my_files/computer/Perl6/tmp/rakudo_work_1/install/share/nqp/lib",
  0x7fffffffe72b ".", 0x0, 0x7fffffffe31e "", 0x7fffffffe31f "",
  0x400b39 "H\203\304", <incomplete sequence \303>, 0x1 <Address 0x1 out of bounds>,
  0x4011fd "H\203\303\001H9\353r\352H\213\\$\bH\213l$\020L\213d$\030L\213l$ L\213t$(L\213|$0H\203\304\070Ð\220\220H\203\354\bH\203\304", <incomplete sequence \303>}
  dump = <optimized out>
  full_cleanup = <optimized out>
  argi = 5
  lib_path_i = <optimized out>
  flag = 6

@p6rt
Copy link
Author

p6rt commented Apr 7, 2015

From @usev6

In case it is helpful, here is a gdb backtrace with moar built with --no-optimize (other things being equal)​:

(gdb) bt full
#​0 0x00007ffff79a7a03 in MVM_string_flatten (tc=0x6026c0, s=0x0) at src/strings/ops.c​:1018
No locals.
#​1 0x00007ffff78e1210 in MVM_interp_run (tc=0x6026c0, initial_invoke=0x7ffff79c2a10 <toplevel_initial_invoke>,
  invoke_data=0x680490) at src/core/interp.c​:1561
  op = 235
  LABELS = {0x7ffff78d6029, 0x7ffff78d74c2, 0x7ffff78d74c4, 0x7ffff78d74c4, 0x7ffff78d74df,
  0x7ffff78d7562, 0x7ffff78d757d, 0x7ffff78d760f, 0x7ffff78d68de, 0x7ffff78d68ab, 0x7ffff78d68ad,
  0x7ffff78d68af, 0x7ffff78d68b1, 0x7ffff78d68b3, 0x7ffff78d68b5, 0x7ffff78d68b7, 0x7ffff78d68b9,
  0x7ffff78d68bb, 0x7ffff78d68bd, 0x7ffff78d68bf, 0x7ffff78d68c1, 0x7ffff78d68c3, 0x7ffff78d68c3,
  0x7ffff78d6065, 0x7ffff78d60db, 0x7ffff78d618f, 0x7ffff78d6243, 0x7ffff78d6307, 0x7ffff78d63cb,
  0x7ffff78d64a8, 0x7ffff78d6585, 0x7ffff78d6659, 0x7ffff78d672d, 0x7ffff78d67ec, 0x7ffff78db223,
  0x7ffff78d696e, 0x7ffff78d6b2b, 0x7ffff78d6c16, 0x7ffff78d6cc3, 0x7ffff78d6d70, 0x7ffff78d6e1d,
  0x7ffff78d6ef5, 0x7ffff78d6fa1, 0x7ffff78d7050, 0x7ffff78d70fc, 0x7ffff78d7205, 0x7ffff78d7205,
  0x7ffff78db438, 0x7ffff78db4ea, 0x7ffff78dbe29, 0x7ffff78de2eb, 0x7ffff78d7220, 0x7ffff78d72ab,
  0x7ffff78d7342, 0x7ffff78d73cd, 0x7ffff78d7458, 0x7ffff78d8f04, 0x7ffff78d8fbf, 0x7ffff78d907a,
  0x7ffff78d9135, 0x7ffff78d91f0, 0x7ffff78d92ab, 0x7ffff78dbbac, 0x7ffff78d76a1, 0x7ffff78d7756,
  0x7ffff78d7811, 0x7ffff78d78c7, 0x7ffff78d7a5d, 0x7ffff78d7b23, 0x7ffff78d7c21, 0x7ffff78d7cdf,
  0x7ffff78d7d72, 0x7ffff78d7e33, 0x7ffff78d7ea8, 0x7ffff78d7f1d, 0x7ffff78d7f92, 0x7ffff78daae7,
  0x7ffff78dab9c, 0x7ffff78dac51, 0x7ffff78dad06, 0x7ffff78dad99, 0x7ffff78dae56, 0x7ffff78daf13,
  0x7ffff78dbd90, 0x7ffff78e2260, 0x7ffff78e238d, 0x7ffff78d9366, 0x7ffff78d9433, 0x7ffff78d9500,
  0x7ffff78d95be, 0x7ffff78d967c, 0x7ffff78d973a, 0x7ffff78dbc9c, 0x7ffff78d89a7, 0x7ffff78d8a60,
  0x7ffff78d8b19, 0x7ffff78d8bd2, 0x7ffff78d8c8b, 0x7ffff78d8dad, 0x7ffff78d8e4b, 0x7ffff78db01b,
  0x7ffff78de41d, 0x7ffff78de4d1, 0x7ffff78e184d, 0x7ffff78e1901, 0x7ffff78e19b5, 0x7ffff78e1a69,
  0x7ffff78e1b1d, 0x7ffff78e1bd1, 0x7ffff78e1c85, 0x7ffff78e1d6a, 0x7ffff78e1e24, 0x7ffff78e1ed6,
  0x7ffff78e1f8a, 0x7ffff78e203e, 0x7ffff78e20f2, 0x7ffff78e21ac, 0x7ffff78e45eb, 0x7ffff78e469f,
  0x7ffff78da9bb, 0x7ffff78daa51, 0x7ffff78db598, 0x7ffff78db63b, 0x7ffff78db6ea, 0x7ffff78db78d,
  0x7ffff78db83f, 0x7ffff78db8fa, 0x7ffff78d809b, 0x7ffff78d8118, 0x7ffff78d81b0, 0x7ffff78d8248,
  0x7ffff78d82e0, 0x7ffff78d97f8, 0x7ffff78d9883, 0x7ffff78d991d, 0x7ffff78d8378, 0x7ffff78d849f,
  0x7ffff78d85e1, 0x7ffff78d8723, 0x7ffff78d8865, 0x7ffff78d99b7, 0x7ffff78d9a43, 0x7ffff78d9b1b,
  0x7ffff78d9bf3, 0x7ffff78d9ccb, 0x7ffff78d9da3, 0x7ffff78d9ea7, 0x7ffff78d9fab, 0x7ffff78da0af,
  0x7ffff78da1b3, 0x7ffff78da29e, 0x7ffff78da389, 0x7ffff78da474, 0x7ffff78da55f, 0x7ffff78da676,
  0x7ffff78da78d, 0x7ffff78da8a4, 0x7ffff78db9b5, 0x7ffff78dba56, 0x7ffff78d8007, 0x7ffff78db34c,
  0x7ffff78db100, 0x7ffff78db180, 0x7ffff78dc797, 0x7ffff78dc838, 0x7ffff78dc95a, 0x7ffff78dca7c,
  0x7ffff78dcb6d, 0x7ffff78dcc5d, 0x7ffff78dcd4d, 0x7ffff78dce3e, 0x7ffff78dcefb, 0x7ffff78dcfb8,
  0x7ffff78dd075, 0x7ffff78dd122, 0x7ffff78dd1cf, 0x7ffff78dd27c, 0x7ffff78f06d6, 0x7ffff78f074b,
  0x7ffff78dd337, 0x7ffff78dd3e3, 0x7ffff78dd470, 0x7ffff78de88b, 0x7ffff78dd560, 0x7ffff78dd5ec,
  0x7ffff78dd678, 0x7ffff78dd782, 0x7ffff78dd8f3, 0x7ffff78dda64, 0x7ffff78ddbd5, 0x7ffff78ddd46,
  0x7ffff78f14da, 0x7ffff78f1612, 0x7ffff78ddf87, 0x7ffff78de142, 0x7ffff78de226, 0x7ffff78e9af6,
  0x7ffff78e94d9, 0x7ffff78df37c, 0x7ffff78df441...}
  cur_op = 0x7ffff599d8ce "\006"
  bytecode_start = 0x7ffff599d79e "\237"
  reg_base = 0x2702360
  cu = 0x66ac70
  cur_callsite = 0x7ffff7d6ff60
#​2 0x00007ffff79c2b4e in MVM_vm_run_file (instance=0x602010,
  filename=0x7fffffffe72d "/home/christian/my_files/computer/Perl6/tmp/rakudo_work_1/perl6.moarvm")
  at src/moar.c​:210
  start_frame = 0x680490
  tc = 0x6026c0
  cu = 0x669a50
#​3 0x0000000000401263 in main (argc=6, argv=0x7fffffffe418) at src/main.c​:189
  instance = 0x602010
  input_file = 0x7fffffffe72d "/home/christian/my_files/computer/Perl6/tmp/rakudo_work_1/perl6.moarvm"
  executable_name = 0x7fffffffe6c1 "-bash"
  lib_path = {
  0x7fffffffe6d1 "/home/christian/my_files/computer/Perl6/tmp/rakudo_work_1/install/share/nqp/lib",
  0x7fffffffe72b ".", 0x0, 0xf0b2e3 "", 0xc2 <Address 0xc2 out of bounds>, 0x7fffffffe31e "",
  0x7fffffffe31f "", 0x400b39 "H\203\304", <incomplete sequence \303>}
  dump = 0
  full_cleanup = 0
  argi = 5
  lib_path_i = 2
  flag = -2

@p6rt
Copy link
Author

p6rt commented May 3, 2015

From @usev6

The segfault with MoarVM is fixed. The new error message seems LTA, though.

$ perl6-m -e 'next; CONTROL { }'
flatten requires a concrete string, but got null
  in regex at ././CORE.setting.moarvm​:1
  in block <unit> at -e​:1

1 similar comment
@p6rt
Copy link
Author

p6rt commented May 3, 2015

From @usev6

The segfault with MoarVM is fixed. The new error message seems LTA, though.

$ perl6-m -e 'next; CONTROL { }'
flatten requires a concrete string, but got null
  in regex at ././CORE.setting.moarvm​:1
  in block <unit> at -e​:1

@p6rt
Copy link
Author

p6rt commented May 15, 2015

From @jnthn

On Sun May 03 13​:49​:54 2015, bartolin@​gmx.de wrote​:

The segfault with MoarVM is fixed. The new error message seems LTA, though.

$ perl6-m -e 'next; CONTROL { }'
flatten requires a concrete string, but got null
in regex at ././CORE.setting.moarvm​:1
in block <unit> at -e​:1

Indeed. Now it's better​:

perl6-m -e "next; CONTROL { }"
next without loop construct

Test in S04-exception-handlers/control.t.

@p6rt
Copy link
Author

p6rt commented May 15, 2015

The RT System itself - Status changed from 'new' to 'open'

@p6rt p6rt closed this as completed May 15, 2015
@p6rt
Copy link
Author

p6rt commented May 15, 2015

@jnthn - Status changed from 'open' to 'resolved'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant