Cygwin なんでも掲示板

一覧最新記事過去一覧 | 検索FAQアンテナHOME
(新規投稿・発言はできません)


スレッド

└◇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 <


889● touch でハングアップ[ sugi3 ] 2003 01/04 23:00
始めまして、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 の問題なのか他のマシン固有の問題なのかの切り分けができずにいます。

関連しそうな情報をお持ちの方がいましたら、教えてください。

よろしくお願いします。
スレッド一覧


890● Re:touch でハングアップ[ MSだす。 ] 2003 01/05 09:48
> n=1; while [ "$n" -le "100" ]; do touch zzz; done

 nがインクリメントされてないのは書き間違い?
スレッド一覧


891● touch でハングアップ[ sugi3 ] 2003 01/05 10:24
失礼しました。

done の前の i=$[i+1]; が copy&paste する際に抜けてました。

> > n=1; while [ "$n" -le "100" ]; do touch zzz; done
> >  nがインクリメントされてないのは書き間違い?
> >

ちなみに touch は kill しても、ゾンビ状態で残ってしまいます。
タスクマネージャからは終了できますが、一度この状態になるとリブートしない限り touch は固まります。
スレッド一覧


892● Re: touch でハングアップ[ sugi3 ] 2003 01/05 10:25
度々すみません。風邪でぼけてますね。
i=$[i+1]; ではなく n=$[n+1]; です。

> 失礼しました。
> > done の前の i=$[i+1]; が copy&paste する際に抜けてました。
スレッド一覧


914● Re: touch でハングアップ[ sugi3 ] 2003 01/19 22:14
この件は結局 Windows XP の Dual プロセッサにおけるマルチメディアタイマの問題のようです。
gettimeofday で使用されているタイマ API が timeGetTime に変更された以降の cygwin1.dll だと固まります。
とりあえず、GetTickCount に戻して回避できました。

問題になっている方はいないのかもしれませんが、参考になればと思います。
スレッド一覧

早田のホームページへ
CGIROOM