On Dec 30, 2003, at 5:19 PM, Harry Jackson wrote:

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

That looks like you ran strace on 'make'.


Here's one more thing to investigate: When you get to the point where it freezes, run ps with the -j option, to display the parent pid of each process (so maybe 'ps -jax'). (Do this in a separate terminal session, of course.) Find whatever process is at the bottom of the "tree" of processes descending from 'make' (that is, 'make' should be the parent of 'perl t/harness', which should be the parent of another perl process running a ".t" script, which should be the parent of some parrot process running an individual test), then try to 'gdb attach' to that pid, and do a backtrace to see where it is hanging.

JEff

Reply via email to