bug-hurd
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]