r26053 produces the segfault shown below, which looks like another case of trying to compare the HLL name "lisp" to something corrupted from the HLL name-to-ID hash. (FWIW, it was still broken as of r26165.)
However, if I revert the src/pmc/string.pmc change, it works again, and also in r26175. The failure happens about 2/3 of the way through loading bytecode files at Kea-CL startup time, so I could create a test case if you wanted to poke at it yourself, but it would be pretty big. WDYT? -- Bob Rogers http://rgrjr.dyndns.org/ ------------------------------------------------------------------------ (gdb) r kea.pbc The program being debugged has been started already. Start it from the beginning? (y or n) y `/usr/src/parrot/parrot' has changed; re-reading symbols. Starting program: /usr/src/parrot/parrot kea.pbc Failed to read a valid object file image from memory. [Thread debugging using libthread_db enabled] [New Thread -1226398000 (LWP 20012)] warning: Lowest section in /usr/lib/libicudata.so.34 is .hash at 000000b4 Program received signal SIGSEGV, Segmentation fault. [Switching to Thread -1226398000 (LWP 20012)] 0xb7df2382 in ascii_compare (interp=0x8050008, lhs=0x82c8bf4, rhs=0xb6dbffc8) at src/charset/ascii.c:474 (gdb) p lhs $1 = (const STRING *) 0x82c8bf4 (gdb) p rhs $2 = (const STRING *) 0xb6dbffc8 (gdb) p rhs->strstart $3 = 0xb6c2ed80 <Address 0xb6c2ed80 out of bounds> (gdb) p lhs->strstart $4 = 0xb6b1d0f0 "lisp" (gdb) bt #0 0xb7df2382 in ascii_compare (interp=0x8050008, lhs=0x82c8bf4, rhs=0xb6dbffc8) at src/charset/ascii.c:474 #1 0xb7c42862 in string_equal (interp=0x8050008, s1=0x82c8bf4, s2=0xb6dbffc8) at src/string.c:1433 #2 0xb7cb32db in STRING_compare (interp=0x8050008, search_key=0x82c8bf4, bucket_key=0xb6dbffc8) at src/hash.c:157 #3 0xb7cb418d in parrot_hash_get_bucket (interp=0x8050008, hash=0x8094d78, key=0x82c8bf4) at src/hash.c:978 #4 0xb7e669d3 in Parrot_OrderedHash_exists_keyed_str (interp=0x8050008, pmc=0x8094d58, key=0x82c8bf4) at ./src/pmc/orderedhash.pmc:400 #5 0xb7cb5d9a in Parrot_get_HLL_id (interp=0x8050008, hll_name=0x82c8bf4) at src/hll.c:264 #6 0xb7e254b3 in Parrot_Sub_thaw (interp=0x8050008, pmc=0x82ec5d8, info=0xbfb96688) at ./src/pmc/sub.pmc:528 #7 0xb7ceeac9 in do_thaw (interp=0x8050008, pmc=0x82ec5d8, info=0xbfb96688) at src/pmc_freeze.c:1228 #8 0xb7cef2bf in visit_todo_list_thaw (interp=0x8050008, old=0x0, info=0xbfb96688) at src/pmc_freeze.c:1487 #9 0xb7cef479 in visit_loop_todo_list (interp=0x8050008, current=0x0, info=0xbfb96688) at src/pmc_freeze.c:1551 #10 0xb7cef806 in run_thaw (interp=0x8050008, image=0x82c8d38, what=VISIT_THAW_NORMAL) at src/pmc_freeze.c:1688 #11 0xb7cefa80 in Parrot_thaw (interp=0x8050008, image=0x82c8d38) at src/pmc_freeze.c:1808 #12 0xb7cea260 in PackFile_Constant_unpack_pmc (interp=0x8050008, constt=0x8444ae0, self=0x8489e58, cursor=0xb6c7dbb8) at src/packfile.c:3485 #13 0xb7cea1b8 in PackFile_Constant_unpack (interp=0x8050008, constt=0x8444ae0, self=0x8489e58, cursor=0xb6c7db0c) at src/packfile.c:3439 #14 0xb7ce9e8c in PackFile_ConstTable_unpack (interp=0x8050008, seg=0x8444ae0, cursor=0xb6c7db08) at src/packfile.c:3235 #15 0xb7ce752a in PackFile_Segment_unpack (interp=0x8050008, self=0x8444ae0, cursor=0xb6c7b240) at src/packfile.c:1552 #16 0xb7ce7a4e in directory_unpack (interp=0x8050008, segp=0x8478650, cursor=0xb6c7b230) at src/packfile.c:1728 #17 0xb7ce752a in PackFile_Segment_unpack (interp=0x8050008, self=0x8478650, cursor=0xb6c6c040) at src/packfile.c:1552 #18 0xb7ce643a in PackFile_unpack (interp=0x8050008, self=0x8478650, packed=0xb6c6c000, packed_size=129232) at src/packfile.c:859 #19 0xb7ca5017 in Parrot_readbc (interp=0x8050008, fullname=0x84ab490 "defmacro.pbc") at src/embed.c:492 #20 0xb7cea624 in PackFile_append_pbc (interp=0x8050008, filename=0x84ab490 "defmacro.pbc") at src/packfile.c:3615 #21 0xb7cea807 in Parrot_load_bytecode (interp=0x8050008, file_str=0x82873b0) at src/packfile.c:3672 #22 0xb7c44de7 in Parrot_load_bytecode_s (cur_opcode=0xb7b58ca0, interp=0x8050008) at src/ops/core.ops:153 #23 0xb7cf0bc4 in runops_slow_core (interp=0x8050008, pc=0xb7b58ca0) at src/runops_cores.c:213 #24 0xb7cbca46 in runops_int (interp=0x8050008, offset=4080) at src/interpreter.c:878 #25 0xb7cbd387 in runops (interp=0x8050008, offs=4080) at src/inter_run.c:104 #26 0xb7cbd62c in runops_args (interp=0x8050008, sub=0x81d6250, obj=0x80947b8, meth_unused=0x0, sig=0xb7f15577 "vP", ap=0xbfb96b6c " b\035\b\xA8k洪`–契\xDD\035\b b\035\bPb\035\b捃祈\xA8k洪2\xFF邨\b") at src/inter_run.c:230 #27 0xb7cbd76c in Parrot_runops_fromc_args (interp=0x8050008, sub=0x81d6250, sig=0xb7f15577 "vP") at src/inter_run.c:299 #28 0xb7ca5ab7 in Parrot_runcode (interp=0x8050008, argc=1, argv=0xbfb96cd8) at src/embed.c:914 #29 0xb7eeff32 in imcc_run_pbc (interp=0x8050008, obj_file=0, output_file=0x0, argc=1, argv=0xbfb96cd8) at compilers/imcc/main.c:794 #30 0xb7ef09e2 in imcc_run (interp=0x8050008, sourcefile=0xbfb9737b "kea.pbc", argc=1, argv=0xbfb96cd8) at compilers/imcc/main.c:1076 #31 0x080488f2 in main (argc=1, argv=0xbfb96cd8) at src/main.c:56 (gdb)