On Tue May 13 08:05:08 2008, coke wrote:
> On Tue, May 13, 2008 at 9:48 AM, via RT Patrick R. Michaud
> <[EMAIL PROTECTED]> wrote:
> > # New Ticket Created by  Patrick R. Michaud
> >  # Please include the string:  [perl #54110]
> >  # in the subject line of all future correspondence about this
> issue.
> >  # <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=54110 >
> >
> >
> >
> >  The infix and n_infix opcodes cause segfaults when invoked with
> >  string arguments.  (Kubuntu 8.04, x86, r27472)
> >
> >  Here's an example:
> >
> >  $ cat z.pir
> >  .sub main :main
> >     $P0 = new 'Float'
> >     $P0 = 3
> >     n_mul $P1, $P0, "4"
> >     say $P1                    # 12
> >  .end
> >  $ ./parrot z.pir
> >  Segmentation fault
> >  $
> >
> >  Pm
> >
> 
> Doing some digging: This code (String pmc instead of STRING register)
> generates the expected result:
> 
> .sub main :main
>    $P0 = new 'Float'
>    $P0 = 3
>    $P2 = new 'String'
>    $P2 = "4"
>    n_mul $P1, $P0, $P2
>    say $P1                    # 12
> .end
> 
> And here's the backtrace on the original code:
> #0  0x00000000 in ?? ()
> #1  0xb7dedd1e in Parrot_Integer_multiply (interp=0x804f040,
> pmc=0x82313f8,
>     value=0x81fba7c, dest=0x0) at ./src/pmc/integer.pmc:605
> #2  0xb7c773e3 in mmd_dispatch_p_psp (interp=0x804f040,
> left=0x82313f8,
>     right=0x81fba7c, dest=0x0, func_nr=4) at src/mmd.c:569
> #3  0xb7c0b684 in Parrot_n_infix_ic_p_p_sc (cur_opcode=0x82490b0,
>     interp=0x804f040) at src/ops/math.ops:102
> #4  0xb7c9eef4 in runops_slow_core (interp=0x804f040, pc=0x82490b0)
>     at src/runops_cores.c:221
> #5  0xb7c704d6 in runops_int (interp=0x804f040, offset=0)
>     at src/interpreter.c:918
> #6  0xb7c70e07 in runops (interp=0x804f040, offs=0) at
> src/inter_run.c:106
> #7  0xb7c71096 in runops_args (interp=0x804f040, sub=0x82317b0,
> obj=0x8096090,
>     meth_unused=0x0, sig=0xb7ecda37 "vP",
>     ap=0xbfb1ba6c
>
"\224\027#\b¨º±¿P\fø·Ðò\004\b\224\027#\b°\027#\b|[EMAIL PROTECTED]")
> at src/inter_run.c:232
> #8  0xb7c711cc in Parrot_runops_fromc_args (interp=0x804f040,
> sub=0x82317b0,
>     sig=0xb7ecda37 "vP") at src/inter_run.c:301
> #9  0xb7c59de7 in Parrot_runcode (interp=0x804f040, argc=1,
> argv=0xbfb1bbd8)
>     at src/embed.c:943
> #10 0xb7ea9f92 in imcc_run_pbc (interp=0x804f040, obj_file=0,
> output_file=0x0,
>     argc=1, argv=0xbfb1bbd8) at compilers/imcc/main.c:783
> #11 0xb7eaa982 in imcc_run (interp=0x804f040, sourcefile=0xbfb1c9dd
> "z.pir",
> ...
> 
> 

Is this bug going to continue to be relevant, since the pdd27mmd branch
has removed the n_* opcodes (and presumably trunk will too after the
branch is merged back)?

Christoph

Reply via email to