On Thursday 11 September 2008 07:17:56 Carl Mäsak wrote: > Jonathan (>), Carl (>>): > >> This also works, but segfaults: > >> > >> $ ./perl6 -e 'class A {}; sub c { say A.new.b() }; c' > >> Method 'b' not found for invocant of class 'A' > >> current instr.: 'c' pc 99 (EVAL_13:42) > >> called from Sub '_block11' pc 17 (EVAL_13:11) > >> called from Sub 'parrot;PCT::HLLCompiler;eval' pc 806 > >> (src/PCT/HLLCompiler.pir:481) > >> called from Sub 'parrot;PCT::HLLCompiler;command_line' pc 1305 > >> (src/PCT/HLLCompiler.pir:708) > >> called from Sub 'parrot;Perl6::Compiler;main' pc 14567 (perl6.pir:172) > >> perl6(27149) malloc: *** error for object 0xcc2e40: double free > >> *** set a breakpoint in malloc_error_break to debug > >> Segmentation fault > > > > Is this still an issue - I think I saw something to the effect taht the > > double free had been resolved recently-ish? > > Aye, this one still persists.
This backtrace pattern bothers me a lot; I wish I could figure it out: Program received signal SIGABRT, Aborted. [Switching to Thread 0xb7b4f8d0 (LWP 29711)] 0xb7f17410 in __kernel_vsyscall () (gdb) bt #0 0xb7f17410 in __kernel_vsyscall () #1 0x4810b085 in raise () from /lib/tls/i686/cmov/libc.so.6 #2 0x4810ca01 in abort () from /lib/tls/i686/cmov/libc.so.6 #3 0x4814e835 in free_check () from /lib/tls/i686/cmov/libc.so.6 #4 0x4814f495 in free () from /lib/tls/i686/cmov/libc.so.6 #5 0xb7cae3c1 in mem_sys_free (from=0x0) at src/gc/memory.c:304 #6 0xb7caeafa in destroy_context (interp=0x81e4008) at src/gc/register.c:163 #7 0xb7cb555b in Parrot_really_destroy (interp=0x81e4008, exit_code_unused=1, arg_unused=0x0) at src/inter_create.c:441 #8 0xb7ca8459 in Parrot_exit (interp=0x81e4008, status=1) at src/exit.c:89 #9 0xb7ca7e26 in find_exception_handler (interp=0x81e4008, exception=0x4822b864) at src/exceptions.c:149 #10 0xb7ca8095 in Parrot_ex_throw_from_op (interp=0x81e4008, exception=0xb772ee3c, dest=0x0) at src/exceptions.c:193 #11 0xb7ca8209 in Parrot_ex_rethrow_from_op (interp=0x81e4008, exception=0xb772ee3c) at src/exceptions.c:363 #12 0xb7c7af1f in Parrot_rethrow_p (cur_opcode=0x828d6f4, interp=0x81e4008) at src/ops/core.ops:832 #13 0xb7ce6bd0 in runops_slow_core (interp=0x81e4008, pc=0x828d6f4) at src/runops_cores.c:222 #14 0xb7cb6a7f in runops_int (interp=0x81e4008, offset=164) at src/interpreter.c:937 #15 0xb7cb754d in runops (interp=0x81e4008, offs=164) at src/inter_run.c:101 ---Type <return> to continue, or q <return> to quit--- #16 0xb7cb7753 in runops_args (interp=0x81e4008, sub=0xb772ef1c, obj=0x823cf28, meth_unused=0x0, sig=0xb7e80886 "vPS", ap=0xbfb38f5c "<��x�212�<��x�212�-") at src/inter_run.c:236 #17 0xb7cb7d77 in Parrot_runops_fromc_args (interp=0x81e4008, sub=0xb772ef1c, sig=0xb7e80886 "vPS") at src/inter_run.c:300 #18 0xb7ca7fcc in Parrot_ex_throw_from_c (interp=0x81e4008, exception=0xb772ee3c) at src/exceptions.c:292 #19 0xb7ca8361 in Parrot_ex_throw_from_c_args (interp=0x81e4008, ret_addr=0x828d65c, exitcode=45, format=0xb7e76018 "Method '%Ss' not found for invocant of class '%Ss'") at src/exceptions.c:339 #20 0xb7c63a6c in Parrot_callmethodcc_p_sc (cur_opcode=0x828d650, interp=0x81e4008) at src/ops/object.ops:71 #21 0xb7ce6bd0 in runops_slow_core (interp=0x81e4008, pc=0x828d650) at src/runops_cores.c:222 #22 0xb7cb6a7f in runops_int (interp=0x81e4008, offset=3289) at src/interpreter.c:937 #23 0xb7cb754d in runops (interp=0x81e4008, offs=3289) at src/inter_run.c:101 #24 0xb7cb7753 in runops_args (interp=0x81e4008, sub=0xb73c65e0, obj=0x823cf28, meth_unused=0x0, sig=0xb7e80886 "vPS", ap=0xbfb3916c "�<��X��<��X�\024") at src/inter_run.c:236 #25 0xb7cb7d77 in Parrot_runops_fromc_args (interp=0x81e4008, sub=0xb73c65e0, sig=0xb7e80886 "vPS") at src/inter_run.c:300 ---Type <return> to continue, or q <return> to quit--- #26 0xb7ca7fcc in Parrot_ex_throw_from_c (interp=0x81e4008, exception=0xb73c58c0) at src/exceptions.c:292 #27 0xb7ca8361 in Parrot_ex_throw_from_c_args (interp=0x81e4008, ret_addr=0x0, exitcode=20, format=0xb7e82edc "Class %Ss already registered!\n") at src/exceptions.c:339 #28 0xb7cdec19 in Parrot_oo_register_type (interp=0x81e4008, name=0xb73c620c) at src/oo.c:624 #29 0xb7e02296 in init_class_from_hash (interp=0x81e4008, self=0xb73c6084, info=0xb73c594c) at ./src/pmc/class.pmc:222 #30 0xb7ce620f in pmc_new_init (interp=0x81e4008, base_type=49, init=0xb73c620c) at src/pmc.c:368 #31 0xb7c70607 in Parrot_newclass_p_p (cur_opcode=0xb7b67b24, interp=0x81e4008) at src/ops/object.ops:249 #32 0xb7ce6bd0 in runops_slow_core (interp=0x81e4008, pc=0xb7b67b24) at src/runops_cores.c:222 #33 0xb7cb6a7f in runops_int (interp=0x81e4008, offset=3289) at src/interpreter.c:937 #34 0xb7cb754d in runops (interp=0x81e4008, offs=3289) at src/inter_run.c:101 #35 0xb7cb7753 in runops_args (interp=0x81e4008, sub=0xb73b40dc, obj=0x823cf28, meth_unused=0x0, sig=0xb7e80886 "vPS", ap=0xbfb3942c "t>;��X�t>;��X�\024") at src/inter_run.c:236 #36 0xb7cb7d77 in Parrot_runops_fromc_args (interp=0x81e4008, sub=0xb73b40dc, sig=0xb7e80886 "vPS") at src/inter_run.c:300 #37 0xb7ca7fcc in Parrot_ex_throw_from_c (interp=0x81e4008, exception=0xb73b3e74) at src/exceptions.c:292 #38 0xb7ca8361 in Parrot_ex_throw_from_c_args (interp=0x81e4008, ret_addr=0x0, exitcode=20, format=0xb7e82edc "Class %Ss already registered!\n") at src/exceptions.c:339 #39 0xb7cdec19 in Parrot_oo_register_type (interp=0x81e4008, name=0xb73b4050) at src/oo.c:624 #40 0xb7e02296 in init_class_from_hash (interp=0x81e4008, self=0xb73b3ffc, info=0xb73b3eac) at ./src/pmc/class.pmc:222 #41 0xb7ce620f in pmc_new_init (interp=0x81e4008, base_type=49, init=0xb73b4050) at src/pmc.c:368 #42 0xb7c70607 in Parrot_newclass_p_p (cur_opcode=0xb7b67b24, interp=0x81e4008) at src/ops/object.ops:249 #43 0xb7ce6bd0 in runops_slow_core (interp=0x81e4008, pc=0xb7b67b24) at src/runops_cores.c:222 #44 0xb7cb6a7f in runops_int (interp=0x81e4008, offset=3289) at src/interpreter.c:937 #45 0xb7cb754d in runops (interp=0x81e4008, offs=3289) at src/inter_run.c:101 #46 0xb7cb7753 in runops_args (interp=0x81e4008, sub=0xb73b67b0, obj=0x823cf28, meth_unused=0x0, sig=0xb7e80886 "vPS", ap=0xbfb396ec "�e;�l\002Y��e;�l\002Y�\024") at src/inter_run.c:236 #47 0xb7cb7d77 in Parrot_runops_fromc_args (interp=0x81e4008, sub=0xb73b67b0, sig=0xb7e80886 "vPS") at src/inter_run.c:300 ---Type <return> to continue, or q <return> to quit--- #48 0xb7ca7fcc in Parrot_ex_throw_from_c (interp=0x81e4008, exception=0xb73b65b8) at src/exceptions.c:292 #49 0xb7ca8361 in Parrot_ex_throw_from_c_args (interp=0x81e4008, ret_addr=0x0, exitcode=20, format=0xb7e82edc "Class %Ss already registered!\n") at src/exceptions.c:339 #50 0xb7cdec19 in Parrot_oo_register_type (interp=0x81e4008, name=0xb73b6724) at src/oo.c:624 #51 0xb7e02296 in init_class_from_hash (interp=0x81e4008, self=0xb73b66b4, info=0xb73b65d4) at ./src/pmc/class.pmc:222 #52 0xb7ce620f in pmc_new_init (interp=0x81e4008, base_type=49, init=0xb73b6724) at src/pmc.c:368 #53 0xb7c70607 in Parrot_newclass_p_p (cur_opcode=0xb7b67b24, interp=0x81e4008) at src/ops/object.ops:249 #54 0xb7ce6bd0 in runops_slow_core (interp=0x81e4008, pc=0xb7b67b24) at src/runops_cores.c:222 #55 0xb7cb6a7f in runops_int (interp=0x81e4008, offset=3289) at src/interpreter.c:937 #56 0xb7cb754d in runops (interp=0x81e4008, offs=3289) at src/inter_run.c:101 #57 0xb7cb7753 in runops_args (interp=0x81e4008, sub=0xb73b98e8, obj=0x823cf28, meth_unused=0x0, sig=0xb7e80886 "vPS", ap=0xbfb399ac "�226;�`VY��226;�`VY�\024") at src/inter_run.c:236 #58 0xb7cb7d77 in Parrot_runops_fromc_args (interp=0x81e4008, sub=0xb73b98e8, sig=0xb7e80886 "vPS") at src/inter_run.c:300 #59 0xb7ca7fcc in Parrot_ex_throw_from_c (interp=0x81e4008, exception=0xb73b96f0) at src/exceptions.c:292 #60 0xb7ca8361 in Parrot_ex_throw_from_c_args (interp=0x81e4008, ret_addr=0x0, exitcode=20, format=0xb7e82edc "Class %Ss already registered!\n") at src/exceptions.c:339 #61 0xb7cdec19 in Parrot_oo_register_type (interp=0x81e4008, name=0xb73b9840) at src/oo.c:624 #62 0xb7e02296 in init_class_from_hash (interp=0x81e4008, self=0xb73b97ec, info=0xb73b970c) at ./src/pmc/class.pmc:222 #63 0xb7ce620f in pmc_new_init (interp=0x81e4008, base_type=49, init=0xb73b9840) at src/pmc.c:368 #64 0xb7c70607 in Parrot_newclass_p_p (cur_opcode=0xb7b67b24, interp=0x81e4008) at src/ops/object.ops:249 #65 0xb7ce6bd0 in runops_slow_core (interp=0x81e4008, pc=0xb7b67b24) at src/runops_cores.c:222 #66 0xb7cb6a7f in runops_int (interp=0x81e4008, offset=3289) at src/interpreter.c:937 #67 0xb7cb754d in runops (interp=0x81e4008, offs=3289) at src/inter_run.c:101 #68 0xb7cb7753 in runops_args (interp=0x81e4008, sub=0xb73bb30c, obj=0x823cf28, meth_unused=0x0, sig=0xb7e80886 "vPS", ap=0xbfb39c6c "0�;��W�0�;��W�\024") at src/inter_run.c:236 #69 0xb7cb7d77 in Parrot_runops_fromc_args (interp=0x81e4008, sub=0xb73bb30c, sig=0xb7e80886 "vPS") at src/inter_run.c:300 ---Type <return> to continue, or q <return> to quit--- #70 0xb7ca7fcc in Parrot_ex_throw_from_c (interp=0x81e4008, exception=0xb73bb130) at src/exceptions.c:292 #71 0xb7ca8361 in Parrot_ex_throw_from_c_args (interp=0x81e4008, ret_addr=0x0, exitcode=20, format=0xb7e82edc "Class %Ss already registered!\n") at src/exceptions.c:339 #72 0xb7cdec19 in Parrot_oo_register_type (interp=0x81e4008, name=0xb73bb280) at src/oo.c:624 #73 0xb7e02296 in init_class_from_hash (interp=0x81e4008, self=0xb73bb22c, info=0xb73bb14c) at ./src/pmc/class.pmc:222 #74 0xb7ce620f in pmc_new_init (interp=0x81e4008, base_type=49, init=0xb73bb280) at src/pmc.c:368 #75 0xb7c70607 in Parrot_newclass_p_p (cur_opcode=0xb7b67b24, interp=0x81e4008) at src/ops/object.ops:249 #76 0xb7ce6bd0 in runops_slow_core (interp=0x81e4008, pc=0xb7b67b24) at src/runops_cores.c:222 #77 0xb7cb6a7f in runops_int (interp=0x81e4008, offset=3289) at src/interpreter.c:937 #78 0xb7cb754d in runops (interp=0x81e4008, offs=3289) at src/inter_run.c:101 #79 0xb7cb7753 in runops_args (interp=0x81e4008, sub=0xb73bcef0, obj=0x823cf28, meth_unused=0x0, sig=0xb7e80886 "vPS", ap=0xbfb39f2c "\024��8\214W�\024��8\214W�\024") at src/inter_run.c:236 #80 0xb7cb7d77 in Parrot_runops_fromc_args (interp=0x81e4008, sub=0xb73bcef0, sig=0xb7e80886 "vPS") at src/inter_run.c:300 #81 0xb7ca7fcc in Parrot_ex_throw_from_c (interp=0x81e4008, exception=0xb73bcd14) at src/exceptions.c:292 #82 0xb7ca8361 in Parrot_ex_throw_from_c_args (interp=0x81e4008, ret_addr=0x0, exitcode=20, format=0xb7e82edc "Class %Ss already registered!\n") at src/exceptions.c:339 #83 0xb7cdec19 in Parrot_oo_register_type (interp=0x81e4008, name=0xb73bce64) at src/oo.c:624 #84 0xb7e02296 in init_class_from_hash (interp=0x81e4008, self=0xb73bce10, info=0xb73bcd30) at ./src/pmc/class.pmc:222 #85 0xb7ce620f in pmc_new_init (interp=0x81e4008, base_type=49, init=0xb73bce64) at src/pmc.c:368 #86 0xb7c70607 in Parrot_newclass_p_p (cur_opcode=0xb7b67b24, interp=0x81e4008) at src/ops/object.ops:249 #87 0xb7ce6bd0 in runops_slow_core (interp=0x81e4008, pc=0xb7b67b24) at src/runops_cores.c:222 #88 0xb7cb6a7f in runops_int (interp=0x81e4008, offset=3289) at src/interpreter.c:937 #89 0xb7cb754d in runops (interp=0x81e4008, offs=3289) at src/inter_run.c:101 #90 0xb7cb7753 in runops_args (interp=0x81e4008, sub=0xb73bef34, obj=0x823cf28, meth_unused=0x0, sig=0xb7e80886 "vPS", ap=0xbfb3a1ec "\004���DY�\004���DY�\024") at src/inter_run.c:236 #91 0xb7cb7d77 in Parrot_runops_fromc_args (interp=0x81e4008, sub=0xb73bef34, sig=0xb7e80886 "vPS") at src/inter_run.c:300 ---Type <return> to continue, or q <return> to quit--- #92 0xb7ca7fcc in Parrot_ex_throw_from_c (interp=0x81e4008, exception=0xb73bed04) at src/exceptions.c:292 #93 0xb7ca8361 in Parrot_ex_throw_from_c_args (interp=0x81e4008, ret_addr=0x0, exitcode=20, format=0xb7e82edc "Class %Ss already registered!\n") at src/exceptions.c:339 #94 0xb7cdec19 in Parrot_oo_register_type (interp=0x81e4008, name=0xb73bee8c) at src/oo.c:624 #95 0xb7e02296 in init_class_from_hash (interp=0x81e4008, self=0xb73bee38, info=0xb73bed58) at ./src/pmc/class.pmc:222 #96 0xb7ce620f in pmc_new_init (interp=0x81e4008, base_type=49, init=0xb73bee8c) at src/pmc.c:368 #97 0xb7c70607 in Parrot_newclass_p_p (cur_opcode=0xb7b67b24, interp=0x81e4008) at src/ops/object.ops:249 #98 0xb7ce6bd0 in runops_slow_core (interp=0x81e4008, pc=0xb7b67b24) at src/runops_cores.c:222 #99 0xb7cb6a7f in runops_int (interp=0x81e4008, offset=3289) at src/interpreter.c:937 #100 0xb7cb754d in runops (interp=0x81e4008, offs=3289) at src/inter_run.c:101 #101 0xb7cb7753 in runops_args (interp=0x81e4008, sub=0xb73c2b24, obj=0x823cf28, meth_unused=0x0, sig=0xb7e80886 "vPS", ap=0xbfb3a4ac "H)<�8\215Y�H)<�8\215Y�\024") at src/inter_run.c:236 #102 0xb7cb7d77 in Parrot_runops_fromc_args (interp=0x81e4008, sub=0xb73c2b24, sig=0xb7e80886 "vPS") at src/inter_run.c:300 #103 0xb7ca7fcc in Parrot_ex_throw_from_c (interp=0x81e4008, exception=0xb73c2948) at src/exceptions.c:292 #104 0xb7ca8361 in Parrot_ex_throw_from_c_args (interp=0x81e4008, ret_addr=0x0, exitcode=20, format=0xb7e82edc "Class %Ss already registered!\n") at src/exceptions.c:339 #105 0xb7cdec19 in Parrot_oo_register_type (interp=0x81e4008, name=0xb73c2a98) at src/oo.c:624 #106 0xb7e02296 in init_class_from_hash (interp=0x81e4008, self=0xb73c2a44, info=0xb73c2964) at ./src/pmc/class.pmc:222 #107 0xb7ce620f in pmc_new_init (interp=0x81e4008, base_type=49, init=0xb73c2a98) at src/pmc.c:368 #108 0xb7c70607 in Parrot_newclass_p_p (cur_opcode=0xb7b67b24, interp=0x81e4008) at src/ops/object.ops:249 #109 0xb7ce6bd0 in runops_slow_core (interp=0x81e4008, pc=0xb7b67b24) at src/runops_cores.c:222 #110 0xb7cb6a7f in runops_int (interp=0x81e4008, offset=15907) at src/interpreter.c:937 #111 0xb7cb754d in runops (interp=0x81e4008, offs=15907) at src/inter_run.c:101 #112 0xb7cb7753 in runops_args (interp=0x81e4008, sub=0x84d409c, obj=0x823cf28, meth_unused=0x0, sig=0xb7e75473 "vP", ap=0xbfb3a76c " &s�") at src/inter_run.c:236 #113 0xb7cb7d77 in Parrot_runops_fromc_args (interp=0x81e4008, sub=0x84d409c, sig=0xb7e75473 "vP") at src/inter_run.c:300 #114 0xb7ca54f8 in Parrot_runcode (interp=0x81e4008, argc=3, argv=0xbfb3a864) at src/embed.c:951 #115 0x08048a40 in main (argc=3, argv=0xbfb3a864) at perl6.c:25927 -- c