Jeff Clites wrote:
On Dec 30, 2003, at 3:11 PM, Harry Jackson wrote:

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 ()


I meant try running parrot in the debugger--Perl is probably hanging b/c it's waiting for parrot to exit. For instance, see if the following hangs, and if so run it in gdb:

../parrot --gc-debug -b t/op/arithmetics_4.pasm

[parrot]$ ./parrot --gc-debug -b t/op/arithmetics_4.pasm 4123 4123 [parrot]$ ./parrot --gc-debug -b t/op/arithmetics_3.pasm 3877 3877 [parrot]$ ./parrot --gc-debug -b t/op/arithmetics_2.pasm 0 1234567890 1234567890 0 1234567890 1234567890 [parrot]$ ./parrot --gc-debug -b t/op/arithmetics_1.pasm 0 -1234567890 1234567890 0 -1234567890 1234567890


Looks good to me. I have taken the drastic measure of upgrading to 5.8.2 and....... no change. I am still locking up during tests, or should I say, parrot is still locking up during tests, I seem to be continuing along fine which is why I am still complaining ;-)


I have also tried strace and got the following.


Try this on parrot rather than Perl.


strace on parrot gets to



rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
wait4(-1, [WIFEXITED(s) && WEXITSTATUS(s) == 0], 0, NULL) = 8423
--- SIGCHLD (Child exited) ---
sigreturn() = ? (mask now [])
write(1, ": blib/lib/libparrot.a\n", 23: blib/lib/libparrot.a
) = 23
rt_sigprocmask(SIG_BLOCK, [HUP INT QUIT TERM XCPU XFSZ], NULL, 8) = 0
vfork() = 8424
--- SIGCHLD (Child exited) ---
sigreturn() = ? (mask now [HUP INT QUIT TERM XCPU XFSZ])
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
wait4(-1, [WIFEXITED(s) && WEXITSTATUS(s) == 0], 0, NULL) = 8424
rt_sigprocmask(SIG_BLOCK, [HUP INT QUIT TERM XCPU XFSZ], NULL, 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
stat64("blib/lib/libparrot.a", {st_mode=S_IFREG|0664, st_size=18102092, ...}) = 0
write(1, "cc -o parrot -Wl,-E -g imcc/ma"..., 98cc -o parrot -Wl,-E -g imcc/main.o blib/lib/libparrot.a -lnsl -ldl -lm -lcrypt -lutil -lpthread
) = 98
rt_sigprocmask(SIG_BLOCK, [HUP INT QUIT TERM XCPU XFSZ], NULL, 8) = 0
vfork() = 8425
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
wait4(-1, [WIFEXITED(s) && WEXITSTATUS(s) == 0], 0, NULL) = 8425
--- SIGCHLD (Child exited) ---
sigreturn() = ? (mask now [])
rt_sigprocmask(SIG_BLOCK, [HUP INT QUIT TERM XCPU XFSZ], NULL, 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
stat64("parrot", {st_mode=S_IFREG|0775, st_size=4133629, ...}) = 0
stat64("test_prep", 0xbfffddf0) = -1 ENOENT (No such file or directory)
stat64("testb", 0xbfffddf0) = -1 ENOENT (No such file or directory)
write(1, "/usr/local/bin/perl5.8.2 t/harne"..., 106/usr/local/bin/perl5.8.2 t/harness --gc-debug --running-make-test -b t/op/*.t t/pmc/*.t t/native_pbc/*.t
) = 106
rt_sigprocmask(SIG_BLOCK, [HUP INT QUIT TERM XCPU XFSZ], NULL, 8) = 0
vfork() = 8428
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
t/op/00ff-dos...........ok


t/op/00ff-unix..........ok

t/op/arithmetics........ok 15/18



freeze punk it's the police.

I am now convinced that due to the baffling nature of the problem that it will be something stupid.

Harry Jackson



Reply via email to