[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-devel:11526] Re: jfbterm



佐野@浜松です。

 at Tue, 1 Feb 2000 00:48:32 +0900,
  Akira YOSHIYAMA <yosshy@xxxxxxxxx> さん writes:

yosshy> From: Taketoshi Sano <kgh12351@xxxxxxxxxxx>

> kgh12351> 「終了時に凍る」問題と直接には関係無いみたいですが (一応やってみた)
> kgh12351>  jfbterm の term.c にある

> kgh12351>         ret = wait(&st);
> kgh12351>         if (ret == gChildProcessId || ret == ECHILD) {
> kgh12351>                 tvterm_unregister_signal();

> kgh12351> って正しいですか ?
> 
>   間違っていますね。

やっぱりそうですよね。

> kgh12351> となっているので、
> kgh12351>         if (ret == gChildProcessId || ret == ECHILD) {
> kgh12351> この行は
> kgh12351>         if (ret == gChildProcessId || (ret == -1 && errno == ECHILD)) {
> kgh12351> が正しいのかな、という気がするのですが。
> 
>   プログラマが期待したのは↑でしょう。

じゃあ bug report として upstream forward よろしく (hattas さま)

> kgh12351>         if (ret == gChildProcessId || ret == -1) {
> kgh12351> のほうがもっといいかも。
> 
>   結果に大差はありません。

 errno != ECHILD の場合があり得るかな、と思ったんですが。あんまり無いかな。

ところで「終了時に凍る」問題のほうなんですが、もしかして atexit() で
登録されている、元の仮想コンソールに戻る (activate する) ところ、

        cfd = open("/dev/console", O_WRONLY);
        if (cfd < 0 && (cfd = open("/dev/console", O_RDONLY)) < 0) {
                print_strerror("/dev/console");
        }
        if (ioctl(cfd, VT_ACTIVATE, n) != 0) {
                fprintf(stderr, "can't activate VC(%d)", n);
        }
        close(cfd);

が効いてない、とかいうことはありますか ?

objdump で libc を調べると

[yadon] $ objdump -T /lib/libc-2.1.2.so |grep atexit
00015484 l    d  .rel__libc_atexit      00000000              
000d76f8 l    d  __libc_atexit  00000000              
00020eb0 g    DF .text  00000048  GLIBC_2.1.3 __cxa_atexit
00020d80 g    DF .text  00000038  GLIBC_2.0   atexit
[yadon] $ objdump -T /mnt/loop0/lib/libc-2.1.2.so |grep atexit
0000c9c4 l    d  .rel__libc_atexit      00000000              
0006def0 l    d  __libc_atexit  00000000              
000145f0 g    DF .text  00000038  GLIBC_2.0   atexit
[yadon] $ objdump -T /lib/libc-2.1.2.so |grep getpwuid
0007c6a0  w   DF .text  00000181  GLIBC_2.0   getpwuid_r
0007bfd0 g    DF .text  0000012d  GLIBC_2.0   getpwuid
[yadon] $ objdump -T /mnt/loop0/lib/libc-2.1.2.so |grep getpwuid
00037270  w   DF .text  00000181  GLIBC_2.0   getpwuid_r
00036f80 g    DF .text  0000012d  GLIBC_2.0   getpwuid
[yadon] $ objdump -T /lib/libc-2.1.2.so |grep getuid       
0007d600  w   DF .text  0000002f  GLIBC_2.0   getuid
[yadon] $ objdump -T /mnt/loop0/lib/libc-2.1.2.so |grep getuid

とかなっていて、一応シンボルはあるんだけど。

--
     # (わたしのおうちは浜松市、「夜のお菓子」で有名さ。)
    <kgh12351@xxxxxxxxxxx> : Taketoshi Sano (佐野 武俊)