▼スレッド
│
└◇889:touch でハングアップ [sugi3] 01/04 23:00
├◇890:Re:touch でハングアップ [MSだす。] 01/05
│└◇891:touch でハングアップ [sugi3] 01/05
│ └◇892:Re: touch でハングアップ [sugi3] 01/05
└◇914:Re: touch でハングアップ [sugi3] 01/19 <
始めまして、sugi3 と申します。スレッド一覧
cygwin1.dll 1.3.11 以降、touch 等ファイルのアクセスタイムをアクセスする操作を多数実行するとシステムコールが返らなくなる問題に悩んでいます。
具体的には
n=1; while [ "$n" -le "100" ]; do touch zzz; done
等を実行すると数十回目の touch の実行でハングアップします。
strace の結果では mtime/atime の設定でとまっているようです。不思議なことに touch -a または touch -m では発生しません。また、ハングアップすると ls -l も固まります。
ちなみに 1.3.10 以前に戻すと問題ありません。
現在のシステムは
CYGWIN_NT-5.1 xxxxxxxx 1.3.19s(0.69/3/2) 20030103 01:22:06 i686 unknown
CPU: PentiumIII-S 1.13GHz x 2
M/B: MSI Pro266TD Master-LR
OS: Windows XP Pro SP1
です。
他の Windows XP マシンでは発生しないのですが、Dual CPU のマシンが一台だけのため、Dual CPU の問題なのか他のマシン固有の問題なのかの切り分けができずにいます。
関連しそうな情報をお持ちの方がいましたら、教えてください。
よろしくお願いします。
> n=1; while [ "$n" -le "100" ]; do touch zzz; doneスレッド一覧
nがインクリメントされてないのは書き間違い?
失礼しました。スレッド一覧
done の前の i=$[i+1]; が copy&paste する際に抜けてました。
> > n=1; while [ "$n" -le "100" ]; do touch zzz; done
> > nがインクリメントされてないのは書き間違い?
> >
ちなみに touch は kill しても、ゾンビ状態で残ってしまいます。
タスクマネージャからは終了できますが、一度この状態になるとリブートしない限り touch は固まります。
度々すみません。風邪でぼけてますね。スレッド一覧
i=$[i+1]; ではなく n=$[n+1]; です。
> 失礼しました。
> > done の前の i=$[i+1]; が copy&paste する際に抜けてました。
この件は結局 Windows XP の Dual プロセッサにおけるマルチメディアタイマの問題のようです。スレッド一覧
gettimeofday で使用されているタイマ API が timeGetTime に変更された以降の cygwin1.dll だと固まります。
とりあえず、GetTickCount に戻して回避できました。
問題になっている方はいないのかもしれませんが、参考になればと思います。