# New Ticket Created by Andy Dougherty # Please include the string: [perl #31695] # in the subject line of all future correspondence about this issue. # <URL: http://rt.perl.org:80/rt3/Ticket/Display.html?id=31695 >
I'm getting a crash if I try to run parrot on libpcre.imc. The debugger output is shown below. The crash occurs because imcc/instructions.c:ins_writes2() is somehow passed a type t == 'K'. I could fix up ins_writes2() to detect such an illegal type and not crash, but I don't know what the proper return value would be. Also, I think the problem is higher up here, but I don't know where to even start. (dbx) run -v -t -o libpcre.pbc runtime/parrot/library/libpcre.imc Running: parrot -v -t -o libpcre.pbc runtime/parrot/library/libpcre.imc (process id 333) debug = 0x0 Reading runtime/parrot/library/libpcre.imc using optimization '0' (0) Starting parse... build_reglist: 21 symbols allocate_non_interfering, now: 20 symbols sub _pcre_compile: registers in .imc: I2, N0, S2, P4 0 labels, 0 lines deleted, 0 if_branch, 0 branch_branch 0 used once deleted 0 invariants_moved registers needed: I8, N0, S4, P9 registers in .pasm: I31, N0, S18, P20 - 0 spilled 4 basic_blocks, 4 edges build_reglist: 25 symbols allocate_non_interfering, now: 25 symbols sub _pcre_exec: registers in .imc: I4, N0, S1, P4 0 labels, 0 lines deleted, 0 if_branch, 0 branch_branch 0 used once deleted 0 invariants_moved registers needed: I13, N0, S2, P10 registers in .pasm: I19, N0, S17, P21 - 0 spilled 2 basic_blocks, 1 edges build_reglist: 17 symbols allocate_non_interfering, now: 15 symbols [EMAIL PROTECTED] ([EMAIL PROTECTED]) signal SEGV (no mapping at the fault address) in ins_writes2 at line 138 in file "instructions.c" 138 if (ins->opnum == w_special[i + (strchr(types, t) - types)]) current thread: [EMAIL PROTECTED] (dbx) where =>[1] ins_writes2(ins = 0x802a88, t = 75), line 138 in "instructions.c" [2] analyse_life_block(interpreter = 0x590930, bb = 0x591388, r = 0x803ca8), line 583 in "cfg.c" [3] analyse_life_symbol(interpreter = 0x590930, unit = 0x7ea2f8, r = 0x803ca8), line 523 in "cfg.c" [4] life_analysis(interpreter = 0x590930, unit = 0x7ea2f8), line 499 in "cfg.c" [5] imc_reg_alloc(interpreter = 0x590930, unit = 0x7ea2f8), line 172 in "reg_alloc.c" [6] imc_compile_unit(interp = 0x590930, unit = 0x7ea2f8), line 111 in "imc.c" [7] imc_compile_all_units(interp = 0x590930), line 68 in "imc.c" [8] main(argc = 1, argv = 0xffbef988), line 527 in "main.c" (dbx) print ins->opnum print ins->opnum = -1 (dbx) print w_special w_special = (1001, 976, 977, 979, 978, 972, 973, 975, 974, 0, 0, 0, 0) (dbx) print i i = 1U (dbx) print types types = "INPS" (dbx) print t t = 75 (dbx) print strchr(&types[0], t) strchr(&types[0], t) = (nil) (dbx) quit Summary of my parrot 0.1.0 configuration: configdate='Thu Sep 23 13:37:42 2004' Platform: osname=solaris, archname=sun4-solaris jitcapable=1, jitarchname=sun4-solaris, jitosname=SOLARIS, jitcpuarch=sun4 execcapable=0 perl=perl5.6 Compiler: cc='cc', ccflags='-I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64', Linker and Libraries: ld='cc', ldflags=' -L/usr/lib -L/usr/ccs/lib -L/opt/SUNWspro/SC4.2/lib -L/usr/local/lib ', cc_ldflags='', libs='-lsocket -lnsl -ldl -lm -lpthread -lrt' Dynamic Linking: so='.so', ld_shared='-G -L/usr/lib -L/usr/ccs/lib -L/opt/SUNWspro/SC4.2/lib -L/usr/local/lib', ld_shared_flags='' Types: iv=long, intvalsize=4, intsize=4, opcode_t=long, opcode_t_size=4, ptrsize=4, ptr_alignment=4 byteorder=4321, nv=double, numvalsize=8, doublesize=8 -- Andy Dougherty [EMAIL PROTECTED]