# New Ticket Created by chromatic # Please include the string: [perl #39378] # in the subject line of all future correspondence about this issue. # <URL: https://rt.perl.org/rt3/Ticket/Display.html?id=39378 >
Hi there, I started to port Pheme's class names to the new keyed style. Applying this patch and rebuilding causes segfaults in some tests and multidispatch failures in others. Oddly, I see these only when running through the Pheme interpreter, not when dumping out the raw PIR code and executing that. Here's the backtrace from parrot pheme.pbc t/car.t: (gdb) run pheme.pbc t/car.t Starting program: /home/chromatic/dev/parrot/parrot pheme.pbc t/car.t [Thread debugging using libthread_db enabled] [New Thread 805415360 (LWP 22606)] [New Thread 814109936 (LWP 22609)] [New Thread 822498544 (LWP 22610)] Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 805415360 (LWP 22606)] 0x0fdd97a8 in Parrot_Context_info (interpreter=0x1001a008, ctx=0x0, info=0x7f9e7b20) at sub.c:316 316 if (PMC_IS_NULL(ctx->current_sub)) { (gdb) bt #0 0x0fdd97a8 in Parrot_Context_info (interpreter=0x1001a008, ctx=0x0, info=0x7f9e7b20) at sub.c:316 #1 0x0fdd9c34 in Parrot_Context_infostr (interpreter=0x1001a008, ctx=0x0) at sub.c:387 #2 0x0fea8c60 in Parrot_Continuation_get_string (interpreter=0x1001a008, pmc=0x10245128) at continuation.pmc:293 #3 0x0fde052c in key_string (interpreter=0x1001a008, key=0x10245128) at key.c:367 #4 0x0feeb41c in Parrot_NameSpace_get_pointer_keyed (interpreter=0x1001a008, pmc=0x1004fed8, key=0x10245128) at namespace.pmc:292 #5 0x0fddc5b0 in pmc_type_p (interpreter=0x1001a008, name=0x10245140) at pmc.c:416 #6 0x0fe73650 in mmd_cvt_to_types (interpreter=0x1001a008, multi_sig=0x10245158) at mmd.c:1278 #7 0x0fe73760 in mmd_distance (interpreter=0x1001a008, pmc=0x10245188, arg_tuple=0x10297ea0) at mmd.c:1305 #8 0x0fe73b04 in mmd_sort_candidates (interpreter=0x1001a008, arg_tuple=0x10297ea0, cl=0x10297e88) at mmd.c:1411 #9 0x0fe731cc in mmd_search_default (interpreter=0x1001a008, meth=0x310bdb70, arg_tuple=0x10297ea0) at mmd.c:1168 #10 0x0fe7274c in Parrot_MMD_search_default_func (interpreter=0x1001a008, meth=0x310bdb70) at mmd.c:912 #11 0x0fe3cc5c in Parrot_get_name (interpreter=0x1001a008, name=0x310bdb70) at global.c:185 #12 0x0fcd76f0 in Parrot_find_name_p_sc (cur_opcode=0x1034b3a0, interpreter=0x1001a008) at var.ops:199 #13 0x0fdda494 in runops_slow_core (interpreter=0x1001a008, pc=0x1034b3a0) at runops_cores.c:180 #14 0x0fdbec64 in runops_int (interpreter=0x1001a008, offset=3) at interpreter.c:775 #15 0x0fdc4d18 in runops (interpreter=0x1001a008, offs=3) at inter_run.c:81 #16 0x0fdc5030 in runops_args (interpreter=0x1001a008, sub=0x10188e10, obj=0x10054578, meth=0x0, sig=0xff3ea88 "vP", ap=0x7f9e7ee0) at inter_run.c:182 #17 0x0fdc5224 in Parrot_runops_fromc_args (interpreter=0x1001a008, sub=0x10188e10, sig=0xff3ea88 "vP") at inter_run.c:276 #18 0x0fe3ecc0 in Parrot_runcode (interpreter=0x1001a008, argc=2, argv=0x7f9e81e8) at embed.c:802 #19 0x10003a0c in main (argc=2, argv=0x7f9e81e8) at main.c:681 For some reason, the continuation being used has an empty context. I haven't been able to track it down further. -- c