仲村です

 そういえば、sigaction とか使って書こうとして挫折した記憶があります...
# C言語は挫折した記憶しかありません(笑)

 grep して見てみると SIG_register という wrap 関数で SIGABRT, SIGHUP, SIGINT, SIGQUIT, 
SIGPIPE, SIGTERM
あたりを拾っているみたいですが、SIGSEGV は拾ってないですね。

cvsnt の source を grep してみたところ、
% grep -r SIGSEGV .
./plink/putty/unix/pty.c:                   putty_signal(SIGSEGV, 
fatal_sig_handler);

 拾ってなさそうですねぇ。
(plink は ssh とか telnet, rsh のクライアントになる為で、
 きっと pserver には使われていないはず。)



1. inetd から起動されるクライアントは core を吐く?
   core を吐くプログラムを inetd に登録。
   telnet で繋ぐ ==> kernel: pid 69060 (a.out), uid 0: exited on signal 11 (core 
dumped)
   / に core を吐きました。 core dumped と表示されてますねぇ...

  #include <stdio.h>
  main()
  {
    char *p;
    p = (char *)65536; /* 落ちればいいので大きめの数字を適当に */

    printf("%s\n",p);
  }


2. setuid する プログラムは core を吐くのか?
    ==> kernel: pid 69141 (a.out), uid 1001: exited on signal 11
   core は吐きませんでした。 
   ここで、core を吐くように OS を設定できればいいと思うのですが...

  #include <stdio.h>
  #include <sys/types.h>
  #include <unistd.h>
  main()
  {
    char *p;
    p = (char *)65536;

    setuid((uid_t) 1001);
    printf("%s\n",p);
  }


 何か、手はないでしょうか。
# 動いているプロセスに gdb から atach しても detach されますし...

On Wed, 25 Oct 2006 16:02:33 +0900,
 Kouji Ito <[EMAIL PROTECTED]> wrote:

>>  う〜ん。cvsnt が自分で core を吐かないようにしているのだろうか?
> 
> あー、そうかも。
> signal 11 を自分で捕まえて、exit() してるとcore吐かないかも。
----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+
 関西沖縄の集い がじまるの会 手伝い 一人だけの勝手に神奈川支部
 仲村 武 <[EMAIL PROTECTED]>

メールによる返信