# New Ticket Created by  Patrick R. Michaud 
# Please include the string:  [perl #37537]
# in the subject line of all future correspondence about this issue. 
# <URL: https://rt.perl.org/rt3/Ticket/Display.html?id=37537 >


---
osname= linux
osvers= 2.4.21-27.0.2.elsmp
arch=   i386-linux-thread-multi
cc=     gcc 4.0.0 20050516 (Red Hat 4.0.0-6)
---
Flags:
    category=core
    severity=high
    ack=no
---
I'm running into a problem with segfaults in PGE; I think I have
it narrowed down to a problem with coroutines somewhere, or perhaps
it's in the GC code.

The attached test program exhibits the bug; it simply creates a
coroutine and calls it repeatedly in an infinite loop.  On the 229th 
iteration or thereabouts, I get a segfault (changing the code causes 
the actual number of iterations to vary).

The attached typescript file shows the output and the resulting
segfault.  This is from a fresh build of r9571.

Changing the coroutine to a subroutine doesn't end up in a segfault
(at least not as far as I let it run).

Any help or suggestions appreciated!

Pm

---
Summary of my parrot 0.3.0 (r9570) configuration:
  configdate='Tue Oct 25 17:43:50 2005'
  Platform:
    osname=linux, archname=i386-linux-thread-multi
    jitcapable=1, jitarchname=i386-linux,
    jitosname=LINUX, jitcpuarch=i386
    execcapable=1
    perl=/usr/bin/perl
  Compiler:
    cc='gcc', ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBUGGING  -pipe 
-I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 
-I/usr/include/gdbm',
  Linker and Libraries:
    ld='gcc', ldflags=' -L/usr/local/lib',
    cc_ldflags='',
    libs='-lresolv -lnsl -ldl -lm -lcrypt -lutil -lpthread -lrt -lgmp'
  Dynamic Linking:
    share_ext='.so', ld_share_flags='-shared -L/usr/local/lib -fPIC',
    load_ext='.so', ld_load_flags='-shared -L/usr/local/lib -fPIC'
  Types:
    iv=long, intvalsize=4, intsize=4, opcode_t=long, opcode_t_size=4,
    ptrsize=4, ptr_alignment=1 byteorder=1234, 
    nv=double, numvalsize=8, doublesize=8

---
Environment:
    HOME    LANG    LANGUAGE    LD_LIBRARY_PATH    LOGDIR    PATH    SHELL
.sub main :main
    $P0 = find_global "PGE::Rule", "inner"
  loop:
    $P1 = $P0("abc")
    print $P1
    print "\n"
    goto loop
.end


.namespace [ "PGE::Rule" ]

.sub inner
    .param pmc mob
    .local pmc corou
    corou = find_global "PGE::Rule", "_inner_coroutine"
    corou = clone corou
    corou(mob)
    .return (mob)
.end

.sub _inner_coroutine
    .param pmc mob
    .yield ()
  fail_forever:
    .yield ()
    goto fail_forever
.end
Script started on Tue 25 Oct 2005 06:07:12 PM CDT
[EMAIL PROTECTED] trunk]$ ./parrot sf6.pir
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
abc
*** glibc detected *** ./parrot: free(): invalid next size (fast): 0x09fffea0 
***
======= Backtrace: =========
/lib/libc.so.6[0x38e124]
/lib/libc.so.6(__libc_free+0x77)[0x38e65f]
./parrot(mem_sys_free+0x11)[0x8085ad1]
./parrot(Parrot_Sub_destroy+0x2d)[0x81f174d]
./parrot(Parrot_dod_sweep+0x140)[0x80d0a20]
./parrot[0x80d0f5a]
./parrot(Parrot_forall_header_pools+0x63)[0x80cfcf3]
./parrot(Parrot_dod_ms_run+0xc2)[0x80d1062]
./parrot(Parrot_do_dod_run+0x1b)[0x80d110b]
./parrot[0x80cee66]
./parrot[0x80ceef1]
./parrot[0x80cf358]
./parrot(new_string_header+0x3b)[0x80cf8cb]
./parrot(string_make_empty+0x13)[0x808d033]
./parrot(Parrot_String_init+0x15)[0x81fb825]
./parrot(pmc_new+0x2e)[0x8090aee]
./parrot[0x81650a4]
./parrot(Parrot_convert_arg+0x1ac)[0x816544c]
./parrot(parrot_pass_args+0x15a)[0x816596a]
./parrot(Parrot_Sub_invoke+0x1a9)[0x81f1b19]
./parrot(Parrot_invokecc_p+0x63)[0x80e8bc3]
./parrot(runops_slow_core+0x96)[0x8167596]
./parrot(runops_int+0x152)[0x8163c02]
./parrot(runops+0xcf)[0x816644f]
./parrot[0x8166660]
./parrot(Parrot_runops_fromc_args+0x2a)[0x816674a]
./parrot(Parrot_runcode+0x221)[0x80c9da1]
./parrot(Parrot_runcode+0x4d)[0x80c9bcd]
./parrot(main+0x862)[0x8084492]
/lib/libc.so.6(__libc_start_main+0xdf)[0x33fd5f]
./parrot[0x8083001]
======= Memory map: ========
0016f000-00170000 r-xp 0016f000 00:00 0 
002c8000-002cd000 r-xp 00000000 08:01 136423     /lib/libcrypt-2.3.5.so
002cd000-002ce000 r-xp 00004000 08:01 136423     /lib/libcrypt-2.3.5.so
002ce000-002cf000 rwxp 00005000 08:01 136423     /lib/libcrypt-2.3.5.so
002cf000-002f6000 rwxp 002cf000 00:00 0 
0030d000-00327000 r-xp 00000000 08:01 134900     /lib/ld-2.3.5.so
00327000-00328000 r-xp 00019000 08:01 134900     /lib/ld-2.3.5.so
00328000-00329000 rwxp 0001a000 08:01 134900     /lib/ld-2.3.5.so
0032b000-0044e000 r-xp 00000000 08:01 136414     /lib/libc-2.3.5.so
0044e000-00450000 r-xp 00123000 08:01 136414     /lib/libc-2.3.5.so
00450000-00452000 rwxp 00125000 08:01 136414     /lib/libc-2.3.5.so
00452000-00454000 rwxp 00452000 00:00 0 
00456000-00479000 r-xp 00000000 08:01 192305     /lib/libm-2.3.5.so
00479000-0047a000 r-xp 00022000 08:01 192305     /lib/libm-2.3.5.so
0047a000-0047b000 rwxp 00023000 08:01 192305     /lib/libm-2.3.5.so
0047d000-0047f000 r-xp 00000000 08:01 192306     /lib/libdl-2.3.5.so
0047f000-00480000 r-xp 00001000 08:01 192306     /lib/libdl-2.3.5.so
00480000-00481000 rwxp 00002000 08:01 192306     /lib/libdl-2.3.5.so
005a0000-005ae000 r-xp 00000000 08:01 192307     /lib/libpthread-2.3.5.so
005ae000-005af000 r-xp 0000d000 08:01 192307     /lib/libpthread-2.3.5.so
005af000-005b0000 rwxp 0000e000 08:01 192307     /lib/libpthread-2.3.5.so
005b0000-005b2000 rwxp 005b0000 00:00 0 
005ea000-00617000 r-xp 00000000 08:01 961477     /usr/lib/sse2/libgmp.so.3.3.3
00617000-00618000 rwxp 0002d000 08:01 961477     /usr/lib/sse2/libgmp.so.3.3.3
00680000-0068f000 r-xp 00000000 08:01 134906     /lib/libresolv-2.3.5.so
0068f000-00690000 r-xp 0000e000 08:01 134906     /lib/libresolv-2.3.5.so
00690000-00691000 rwxp 0000f000 08:01 134906     /lib/libresolv-2.3.5.so
00691000-00693000 rwxp 00691000 00:00 0 
00695000-0069e000 r-xp 00000000 08:01 192308     
/lib/libgcc_s-4.0.1-20050727.so.1
0069e000-0069f000 rwxp 00009000 08:01 192308     
/lib/libgcc_s-4.0.1-20050727.so.1
006a1000-00781000 r-xp 00000000 08:01 805603     /usr/lib/libstdc++.so.6.0.5
00781000-00786000 rwxp 000df000 08:01 805603     /usr/lib/libstdc++.so.6.0.5
00786000-0078c000 rwxp 00786000 00:00 0 
00d22000-00d24000 r-xp 00000000 08:01 192309     /lib/libutil-2.3.5.so
00d24000-00d25000 r-xp 00001000 08:01 192309     /lib/libutil-2.3.5.so
00d25000-00d26000 rwxp 00002000 08:01 192309     /lib/libutil-2.3.5.so
00d2d000-00d35000 r-xp 00000000 08:01 134915     /lib/librt-2.3.5.so
00d35000-00d36000 r-xp 00007000 08:01 134915     /lib/librt-2.3.5.so
00d36000-00d37000 rwxp 00008000 08:01 134915     /lib/librt-2.3.5.so
00d37000-00d41000 rwxp 00d37000 00:00 0 
04dc7000-04dd9000 r-xp 00000000 08:01 136418     /lib/libnsl-2.3.5.so
04dd9000-04dda000 r-xp 00011000 08:01 136418     /lib/libnsl-2.3.5.so
04dda000-04ddb000 rwxp 00012000 08:01 136418     /lib/libnsl-2.3.5.so
04ddb000-04ddd000 rwxp 04ddb000 00:00 0 
08048000-08272000 r-xp 00000000 08:02 331528     
/home/pmichaud/work2/trunk/parrot
08272000-08290000 rw-p 00229000 08:02 331528     
/home/pmichaud/work2/trunk/parrot
08290000-08297000 rw-p 08290000 00:00 0 
09ddb000-0a062000 rw-p 09ddb000 00:00 0          [heap]
b6a00000-b6a21000 rw-p b6a00000 00:00 0 
b6a21000-b6b00000 ---p b6a21000 00:00 0 
b6b17000-b6baa000 rw-p b6b17000 00:00 0 
b6bab000-b6bac000 ---p b6bab000 00:00 0 
b6bac000-b75ac000 rw-p b6bac000 00:00 0 
b75ac000-b75ad000 ---p b75ac000 00:00 0 
b75ad000-b7fb1000 rw-p b75ad000 00:00 0 
b7fc4000-b7fc5000 rw-p b7fc4000 00:00 0 
bfeaf000-bfec5000 rw-p bfeaf000 00:00 0          [stack]
Aborted
[EMAIL PROTECTED] trunk]$ ./parrot sf6.pir | wc -l
*** glibc detected *** ./parrot: free(): invalid next size (fast): 0x09e73ea0 
***
======= Backtrace: =========
/lib/libc.so.6[0x38e124]
/lib/libc.so.6(__libc_free+0x77)[0x38e65f]
./parrot(mem_sys_free+0x11)[0x8085ad1]
./parrot(Parrot_Sub_destroy+0x2d)[0x81f174d]
./parrot(Parrot_dod_sweep+0x140)[0x80d0a20]
./parrot[0x80d0f5a]
./parrot(Parrot_forall_header_pools+0x63)[0x80cfcf3]
./parrot(Parrot_dod_ms_run+0xc2)[0x80d1062]
./parrot(Parrot_do_dod_run+0x1b)[0x80d110b]
./parrot[0x80cee66]
./parrot[0x80ceef1]
./parrot[0x80cf358]
./parrot(new_string_header+0x3b)[0x80cf8cb]
./parrot(string_make_empty+0x13)[0x808d033]
./parrot(Parrot_String_init+0x15)[0x81fb825]
./parrot(pmc_new+0x2e)[0x8090aee]
./parrot[0x81650a4]
./parrot(Parrot_convert_arg+0x1ac)[0x816544c]
./parrot(parrot_pass_args+0x15a)[0x816596a]
./parrot(Parrot_Sub_invoke+0x1a9)[0x81f1b19]
./parrot(Parrot_invokecc_p+0x63)[0x80e8bc3]
./parrot(runops_slow_core+0x96)[0x8167596]
./parrot(runops_int+0x152)[0x8163c02]
./parrot(runops+0xcf)[0x816644f]
./parrot[0x8166660]
./parrot(Parrot_runops_fromc_args+0x2a)[0x816674a]
./parrot(Parrot_runcode+0x221)[0x80c9da1]
./parrot(Parrot_runcode+0x4d)[0x80c9bcd]
./parrot(main+0x862)[0x8084492]
/lib/libc.so.6(__libc_start_main+0xdf)[0x33fd5f]
./parrot[0x8083001]
======= Memory map: ========
002c8000-002cd000 r-xp 00000000 08:01 136423     /lib/libcrypt-2.3.5.so
002cd000-002ce000 r-xp 00004000 08:01 136423     /lib/libcrypt-2.3.5.so
002ce000-002cf000 rwxp 00005000 08:01 136423     /lib/libcrypt-2.3.5.so
002cf000-002f6000 rwxp 002cf000 00:00 0 
0030d000-00327000 r-xp 00000000 08:01 134900     /lib/ld-2.3.5.so
00327000-00328000 r-xp 00019000 08:01 134900     /lib/ld-2.3.5.so
00328000-00329000 rwxp 0001a000 08:01 134900     /lib/ld-2.3.5.so
0032b000-0044e000 r-xp 00000000 08:01 136414     /lib/libc-2.3.5.so
0044e000-00450000 r-xp 00123000 08:01 136414     /lib/libc-2.3.5.so
00450000-00452000 rwxp 00125000 08:01 136414     /lib/libc-2.3.5.so
00452000-00454000 rwxp 00452000 00:00 0 
00456000-00479000 r-xp 00000000 08:01 192305     /lib/libm-2.3.5.so
00479000-0047a000 r-xp 00022000 08:01 192305     /lib/libm-2.3.5.so
0047a000-0047b000 rwxp 00023000 08:01 192305     /lib/libm-2.3.5.so
0047d000-0047f000 r-xp 00000000 08:01 192306     /lib/libdl-2.3.5.so
0047f000-00480000 r-xp 00001000 08:01 192306     /lib/libdl-2.3.5.so
00480000-00481000 rwxp 00002000 08:01 192306     /lib/libdl-2.3.5.so
005a0000-005ae000 r-xp 00000000 08:01 192307     /lib/libpthread-2.3.5.so
005ae000-005af000 r-xp 0000d000 08:01 192307     /lib/libpthread-2.3.5.so
005af000-005b0000 rwxp 0000e000 08:01 192307     /lib/libpthread-2.3.5.so
005b0000-005b2000 rwxp 005b0000 00:00 0 
005ea000-00617000 r-xp 00000000 08:01 961477     /usr/lib/sse2/libgmp.so.3.3.3
00617000-00618000 rwxp 0002d000 08:01 961477     /usr/lib/sse2/libgmp.so.3.3.3
00680000-0068f000 r-xp 00000000 08:01 134906     /lib/libresolv-2.3.5.so
0068f000-00690000 r-xp 0000e000 08:01 134906     /lib/libresolv-2.3.5.so
00690000-00691000 rwxp 0000f000 08:01 134906     /lib/libresolv-2.3.5.so
00691000-00693000 rwxp 00691000 00:00 0 
00695000-0069e000 r-xp 00000000 08:01 192308     
/lib/libgcc_s-4.0.1-20050727.so.1
0069e000-0069f000 rwxp 00009000 08:01 192308     
/lib/libgcc_s-4.0.1-20050727.so.1
006a1000-00781000 r-xp 00000000 08:01 805603     /usr/lib/libstdc++.so.6.0.5
00781000-00786000 rwxp 000df000 08:01 805603     /usr/lib/libstdc++.so.6.0.5
00786000-0078c000 rwxp 00786000 00:00 0 
00c3d000-00c3e000 r-xp 00c3d000 00:00 0 
00d22000-00d24000 r-xp 00000000 08:01 192309     /lib/libutil-2.3.5.so
00d24000-00d25000 r-xp 00001000 08:01 192309     /lib/libutil-2.3.5.so
00d25000-00d26000 rwxp 00002000 08:01 192309     /lib/libutil-2.3.5.so
00d2d000-00d35000 r-xp 00000000 08:01 134915     /lib/librt-2.3.5.so
00d35000-00d36000 r-xp 00007000 08:01 134915     /lib/librt-2.3.5.so
00d36000-00d37000 rwxp 00008000 08:01 134915     /lib/librt-2.3.5.so
00d37000-00d41000 rwxp 00d37000 00:00 0 
04dc7000-04dd9000 r-xp 00000000 08:01 136418     /lib/libnsl-2.3.5.so
04dd9000-04dda000 r-xp 00011000 08:01 136418     /lib/libnsl-2.3.5.so
04dda000-04ddb000 rwxp 00012000 08:01 136418     /lib/libnsl-2.3.5.so
04ddb000-04ddd000 rwxp 04ddb000 00:00 0 
08048000-08272000 r-xp 00000000 08:02 331528     
/home/pmichaud/work2/trunk/parrot
08272000-08290000 rw-p 00229000 08:02 331528     
/home/pmichaud/work2/trunk/parrot
08290000-08297000 rw-p 08290000 00:00 0 
09c4f000-09ed6000 rw-p 09c4f000 00:00 0          [heap]
b6900000-b6921000 rw-p b6900000 00:00 0 
b6921000-b6a00000 ---p b6921000 00:00 0 
b6ab0000-b6b43000 rw-p b6ab0000 00:00 0 
b6b44000-b6b45000 ---p b6b44000 00:00 0 
b6b45000-b7545000 rw-p b6b45000 00:00 0 
b7545000-b7546000 ---p b7545000 00:00 0 
b7546000-b7f4a000 rw-p b7546000 00:00 0 
b7f5d000-b7f5e000 rw-p b7f5d000 00:00 0 
bfd49000-bfd5e000 rw-p bfd49000 00:00 0          [stack]
229
[EMAIL PROTECTED] trunk]$ exit

Script done on Tue 25 Oct 2005 06:07:27 PM CDT

Reply via email to