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

Re: hang with fMSX



筒井です。

<199901091719.CAA26036@ruri.iri.co.jp>の記事において
tsubai@iri.co.jpさんは書きました。

> で、いろいろ試してみたところ、まだ調査中ですが、
 :
> ということがわかりました。プロセスの切替え時に問題があるみたい。
> どこかで spl を上げ忘れているような感じですね。

これと関係あるかどうかわかりませんが、 top-3.5beta7 に
pkgsrc の patch をあてて手動で Configure をかけると
結構な確率で kernel がだんまりになってしまいます。

kernel は死ななくても
/usr/bin/tr: No child processes.
/usr/bin/awk: No child processes.
/usr/bin/sed: No child processes.
Illegal instruction (core dumped)
とかいろいろ変なことを言われます。mfs が locking against myself で
panic したこともありますし、割り込みが生きたまま帰ってこなくなる
ときもあります。

最初に発生した時期からして signal まわりかなあと思ってたんですが、
ふと今思い立って ktrace ./Configure してみると
---
[前略]
   377 csh      CALL  __sigprocmask14(0x3,0x7fffe7b8,0)
   377 csh      RET   __sigprocmask14 0
   377 csh      CALL  __sigprocmask14(0x1,0x7fffe778,0x7fffe788)
   377 csh      RET   __sigprocmask14 0
   377 csh      CALL  __sigprocmask14(0x3,0x7fffe788,0)
   377 csh      RET   __sigprocmask14 0
   377 csh      CALL  __sigprocmask14(0x1,0x7fffe718,0x7fffe728)
   377 csh      RET   __sigprocmask14 0
   377 csh      CALL  __sigprocmask14(0x1,0x7fffe718,0)
   377 csh      RET   __sigprocmask14 0
   377 csh      CALL  __sigsuspend14(0x7fffe718)
   377 csh      RET   __sigsuspend14 -1 errno 4 Interrupted system call
   377 csh      PSIG  SIGCHLD caught handler=0x1815868 mask=(2,20) code=0x0
   377 csh      CALL  wait4(0xffffffff,0x7fffe5f8,0x1,0x7fffe5a8)
   377 csh      RET   wait4 378/0x17a
   377 csh      CALL  wait4(0xffffffff,0x7fffe5f8,0x1,0x7fffe5a8)
   377 csh      RET   wait4 -1 errno 10 No child processes
   377 csh      CALL  __sigreturn14(0x7fffe648)
   377 csh      RET   __sigreturn14 JUSTRETURN
[中略]
   377 csh      CALL  __sigprocmask14(0x3,0x7fffe7b8,0)
   377 csh      RET   __sigprocmask14 0
   377 csh      CALL  __sigprocmask14(0x1,0x7fffe778,0x7fffe788)
   377 csh      RET   __sigprocmask14 0
   377 csh      CALL  __sigprocmask14(0x3,0x7fffe788,0)
   377 csh      RET   __sigprocmask14 0
   377 csh      CALL  __sigprocmask14(0x1,0x7fffe718,0x7fffe728)
   377 csh      RET   __sigprocmask14 0
   377 csh      CALL  __sigprocmask14(0x1,0x7fffe718,0)
   377 csh      RET   __sigprocmask14 0
   377 csh      CALL  __sigsuspend14(0x7fffe718)
[ここで終わってるのでここで hang してる?]
---
というわけで __sigsuspend14() が変?

tsutsui@ceres.dti.ne.jp