[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 (佐野 武俊)