# New Ticket Created by Will Coleda # Please include the string: [perl #35018] # in the subject line of all future correspondence about this issue. # <URL: https://rt.perl.org/rt3/Ticket/Display.html?id=35018 >
More of an implied patch. ^_^ The recent conversion to mostly defaulting to ascii has broken Tcl (*again*). ./parrot languages/tcl/tcl.pbc languages/tcl/examples/hello.tcl gives encodings/fixed_8.c:190: failed assertion `pos < PObj_buflen(iter->str)' running in gdb: Program received signal SIGABRT, Aborted. 0x900429ac in kill () (gdb) bt #0 0x900429ac in kill () #1 0x9009eb1c in abort () #2 0x00259d54 in __eprintf () #3 0x001f1504 in fixed8_set_position (interpreter=0xd001a0, iter=0xbffff5a0, pos=0) at encodings/fixed_8.c:190 #4 0x001ed244 in mixed_cs_index (interpreter=0xd001a0, src=0xbc1d00, search=0xe60aa0, offs=0) at charset/ascii.c:357 #5 0x001ed2e8 in ascii_cs_index (interpreter=0xd001a0, source_string=0xbc1d00, search_string=0xe60aa0, offset=0) at charset/ascii.c:371 #6 0x000293dc in string_str_index (interpreter=0xd001a0, s=0xbc1d00, s2=0xe60aa0, start=0) at src/string.c:807 #7 0x00ec9b18 in Parrot_TclParser_parse (interpreter=0xd001a0, pmc=0xe4acb0, code=0xe4aae8, psw=0xe4aaa0, bi=0xe4aaa0) at tclparser.pmc:109 #8 0x002514c8 in pcf_P_JOPPP (interpreter=0xd001a0, self=0xe496c0) at src/nci.c:4746 #9 0x00213edc in Parrot_NCI_invoke (interpreter=0xd001a0, pmc=0xe496c0, next=0xe38f84) at classes/nci.c:149 #10 0x0005492c in Parrot_callmethodcc_sc (cur_opcode=0xe38f7c, interpreter=0xd001a0) at ops/object.ops:140 #11 0x001e209c in runops_slow_core (interpreter=0xd001a0, pc=0xe38f7c) at src/runops_cores.c:147 #12 0x000478d0 in runops_int (interpreter=0xd001a0, offset=0) at src/interpreter.c:742 #13 0x000402c8 in runops (interpreter=0xd001a0, offs=0) at src/inter_run.c:81 #14 0x00015730 in Parrot_runcode (interpreter=0xd001a0, argc=2, argv=0xbffffcd0) at src/embed.c:767 #15 0x000154e8 in Parrot_runcode (interpreter=0xd001a0, argc=2, argv=0xbffffcd0) at src/embed.c:701 #16 0x00003f78 in main (argc=2, argv=0xbffffcd0) at imcc/main.c:604 with: ./include/parrot/pobj.h:#define PObj_buflen(pmc) (pmc)->obj.u._b._buflen Now, if I break just before #3 above, I see: (gdb) p (iter->str)->obj $23 = { u = { _b = { _bufstart = 0xe60a78, _buflen = 0 }, _ptrs = { _struct_val = 0xe60a78, _pmc_val = 0x0 }, _i = { _int_val = 15075960, _int_val2 = 0 }, _num_val = 2.5109819426137611e-304, _string_val = 0xe60a78 }, flags = 524288, _pobj_version = 0 } So, the assertion here is clearly going to fail, as 0 ! < 0 . If I change this assertion to <=, nothing else breaks in parrot's make test, and I can go about my business. (Which involves much more ascii-related breakage.) If anyone thinks changing this assertion is the right way to fix this error, by all means apply it. (Not quite sure why we have an assertion that isn't tested! =-)