[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Debugging help
From: |
Niels Möller |
Subject: |
Re: Debugging help |
Date: |
10 Jun 2002 22:12:03 +0200 |
User-agent: |
Gnus/5.09 (Gnus v5.9.0) Emacs/21.2 |
Ok, now I've tried some more, using rpctrace.
But I think I have a new problem. The program behaves differently when
run under rpctrace than on it's own. The code contains a loop
for (i = *index; system_sources[i].path; )
{
if (access(system_sources[i].path, X_OK) < 0)
{
debug("unix_random.c: spawn_source_process: Skipping '%z'; not
executable: %z\n",
system_sources[i].path, STRERROR(errno));
i++;
}
else
break;
}
Running the process on its own, "/usr/bin/vmstat" is executable
(according to access()), but when run under rpctrace, I get the error
lsh-make-seed: unix_random.c: spawn_source_process: Skipping
'/usr/bin/vmstat'; not executable: (ipc/mig) server type check failure
Later on, the process hangs again, and is not interruptible by ^C.
When trying kill from a different xterm, kill hangs and is not
interruptible. From a third xterm, I run kill -9, which works.
The last lines of the rpctrace log is
82->156019 () = 0 {11010 7 19201 1483} "^D<FF><FF>^?^W^U^R<FF>^C^\^Z^Y^Q^S^V^O
^A" {38400 38400}
82->156021 ({10240 7 19201 195} "^D<FF><FF>^?^W^U^R<FF>^C^\^Z^Y^Q^S^V^O^A" {38
400 38400}) = 0
72->21013 () = 0 {14 651 0 0 1021679881 0 8397184 135528449 1053 1053 0 102373
8031 290000 1023738031 900000 1023738031 900000 512 8 0 0 0 0 135641864 425 1353
56968 135356968 0 409 135356968 135356968 16}
82->21001 (-1 512) 84->23000 (2 0 81)task695-> 3206 (pn{ 14}) = 0
80->24021 ( 70) = 0
84->23000 (15 0 task695) 100-> 71 ();
94-> 71 ();
reply? 98 > 0x40000004 (Interrupted system call)
This probably corresponds to
if (!tcgetattr(STDIN_FILENO, &tty_original_mode))
{
struct termios tty_mode = tty_original_mode;
tty_needs_reset = 1;
tty_mode.c_iflag &= ~(IGNBRK|BRKINT|PARMRK|ISTRIP|INLCR|IGNCR|ICRNL|IXON);
tty_mode.c_cflag &= ~(CSIZE|PARENB); tty_mode.c_cflag |= CS8;
tty_mode.c_lflag &= ~(ECHO|ECHONL|ICANON|IEXTEN);
tty_mode.c_cc[VMIN] = 1;
tty_mode.c_cc[VTIME] = 0;
tcsetattr(STDIN_FILENO, TCSADRAIN, &tty_mode);
}
...
c = getchar();
but I don't know how to make sense out of the rpc-trace output.
I'm also sending a separate mail with a test program for access() and
rpctrace.
Regards,
/Niels