Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[perl #41103] [BUG] stdin.'readline'() segfaults on systems w/o readline support

4 views
Skip to first unread message

Patrick R . Michaud

unread,
Dec 16, 2006, 4:54:19 PM12/16/06
to bugs-bi...@rt.perl.org
# New Ticket Created by Patrick R. Michaud
# Please include the string: [perl #41103]
# in the subject line of all future correspondence about this issue.
# <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=41103 >


According to src/pmc/parrotio.pmc, the 'readline'() method for
parrot I/O objects seems like it ought to work even when
readline is not present (PARROT_HAS_READLINE, starting at
approx line 179).

However, it appears to segfault when readline isn't present, as
demonstrated by this test program:

$ cat readline.pir
.sub main :main
.local pmc stdin

stdin = getstdin
$I0 = stdin.'set_readline_interactive'(1)

$P0 = stdin.'readline'('> ')
say $P0
.end
$ ./parrot readline.pir
hello
Segmentation fault

The gdb backtrace shows:

...
#0 0x00002b9f6f414e1e in clone_key_arg (interp=0x50c010, st=0x7fff3b9c1020)
at src/inter_call.c:600
600 if (p_arg && p_arg->vtable->base_type == enum_class_Key) {
(gdb) bt
#0 0x00002b9f6f414e1e in clone_key_arg (interp=0x50c010, st=0x7fff3b9c1020)
at src/inter_call.c:600
#1 0x00002b9f6f416320 in Parrot_convert_arg (interp=0x50c010,
st=0x7fff3b9c1020) at src/inter_call.c:1059
#2 0x00002b9f6f447154 in set_nci_P (interp=0x50c010, st=0x7fff3b9c1020,
val=0x78e3b0) at src/nci.c:135
#3 0x00002b9f6f447aa4 in pcf_P_JOS (interp=0x50c010, self=0x543eb0)
at src/nci.c:373
#4 0x00002b9f6f4a92c3 in Parrot_NCI_invoke (interp=0x50c010, pmc=0x543eb0,
next=0x825d30) at src/pmc/nci.pmc:146
#5 0x00002b9f6f354f24 in Parrot_callmethodcc_p_sc (cur_opcode=0x825d18,
interp=0x50c010) at src/ops/object.ops:65
#6 0x00002b9f6f42acc1 in runops_slow_core (interp=0x50c010, pc=0x825d18)
at src/runops_cores.c:184
#7 0x00002b9f6f412dda in runops_int (interp=0x50c010, offset=0)
at src/interpreter.c:775
#8 0x00002b9f6f41869e in runops (interp=0x50c010, offs=0)
at src/inter_run.c:87
#9 0x00002b9f6f418938 in runops_args (interp=0x50c010, sub=0x7e76a8,
obj=0x550350, meth=0x0, sig=0x2b9f6f547a02 "vP", ap=0x7fff3b9c1340)
at src/inter_run.c:193
#10 0x00002b9f6f418b2b in Parrot_runops_fromc_args (interp=0x50c010,
sub=0x7e76a8, sig=0x2b9f6f547a02 "vP") at src/inter_run.c:295
#11 0x00002b9f6f438ba8 in Parrot_runcode (interp=0x50c010, argc=1,
argv=0x7fff3b9c1660) at src/embed.c:806
#12 0x0000000000403596 in main (argc=1, argv=0x7fff3b9c1660)
at compilers/imcc/main.c:723
(gdb)

Pm

Patrick R. Michaud via RT

unread,
Jan 13, 2007, 8:44:37 AM1/13/07
to perl6-i...@perl.org
Fixed in r16587.

Pm

0 new messages