Jeff Clites wrote:


Here are 3 things to try:


1) When it hangs there, check with 'top' to see if it is using CPU (ie, is it blocking, or in an infinite loop).

Already done that and it is eating no cycles.


2) Try running one of the tests which blocks, individually. If you can get it to happen this way, then run it in gdb and see what it's doing. (Or, attach to an already blocked one from 'make test'--this is assuming it's parrot that's actually blocking, and not t/harness.)

When run individually I get the same error. Complete freeze at what appears to be an arbitrary point.


Running gdb

0x080a7625 in Perl_sv_gets ()
(gdb) n
Single stepping until exit from function Perl_sv_gets,
which has no line number information.
0x0809d254 in Perl_do_readline ()
(gdb) n
Single stepping until exit from function Perl_do_readline,
which has no line number information.
0x08099fd8 in Perl_runops_standard ()
(gdb) n
Single stepping until exit from function Perl_runops_standard,
which has no line number information.
t/op/arithmetics....ok 13/18



This is where gdb freezes execution. CTL-C then frees it up to continue until the next one freezes.



3) Try building from a clean checkout, and see if that shows the problem. If not, it's probably something you've changed and don't realize.

I have tried something a bit more drastic. Deleted the entire tree and downloaded it again (sorry about the bandwidth).


I have also tried strace and got the following.

mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x401fe000
read(3, "#! perl -w\n\nuse Parrot::Test tes"..., 4096) = 4096
brk(0x81e2000) = 0x81e2000
close(3) = 0
munmap(0x401fe000, 4096) = 0
pipe([3, 4]) = 0
pipe([5, 6]) = 0
fork() = 19676
close(4) = 0
close(6) = 0
read(5, "", 4) = 0
close(5) = 0
fcntl64(0x3, 0x3, 0xbffff5c4, 0) = 0
fstat64(3, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x401fe000
_llseek(3, 0, 0xbffff410, SEEK_CUR) = -1 ESPIPE (Illegal seek)
fcntl64(0x3, 0x2, 0x1, 0x1d) = 0
read(3, "1..18\n", 4096) = 6
read(3,



Doing a "ps ax" reveals the following (ignore the test number it keeps changing)



20802 pts/11 S 0:00 make test
21598 pts/11 S 0:00 perl t/harness --gc-debug --running-make-test -b t/op/00ff-dos.t t/op/00ff-unix.t t/op/arithmetics.t t/op/basic.t 21610 pts/11 S 0:00 perl -w t/op/arithmetics.t
21620 pts/11 S 0:00 ./parrot --gc-debug -b t/op/arithmetics_4.pasm
21621 pts/11 S 0:00 ./parrot --gc-debug -b t/op/arithmetics_4.pasm
21622 pts/11 S 0:00 ./parrot --gc-debug -b t/op/arithmetics_4.pasm




From all of this I am guessing that something has corrupted a module in Perl at least that is all I can think of.

Harry Jackson

Reply via email to