# 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]

Reply via email to