[前][次][番号順一覧][スレッド一覧]

ruby-reference-manual:3336

From: "pypypy567 (py _)" <redmine@r...>
Date: Thu, 27 Sep 2012 23:17:30 +0900
Subject: [ruby-reference-manual:3336] [るりまプロジェクト - Bug #7034] 一部環境で bitclust setup の実行中に例外が起きることがある


Issue #7034 has been updated by pypypy567 (py _).


説明の最後のあたりにも書きましたが bitclust で対処する必要はないと思います。
再現する人が沢山居るようなら別かもしれませんが。
簡単な対策もあることですしなんかそんなことが有ったということだけ頭の片隅に置いてもらえれば。

> ウィルス対策ソフトのような別プロセスがファイルをロックしていると

ノートンが入ってるのでそのせいなのかもしれません。よく知らないですが。

> FileUtils.#rm_rf -> FileUtils.#rm_r に書き換え
最初に添付したスクリプトの rm_rf を rm_r にして何度かやってみたらこんなエラーが出ました。
エラー後に a/b 内を見てみたらファイルは残っていませんでした。
エラー文を鵜呑みにするなら b を消そうとした瞬間にはまだ b の中にファイルが残ってるけどその後ちゃんと消えてるって感じに見えますね。

....................
C:/ruby193/lib/ruby/1.9.1/fileutils.rb:1400:in `rmdir': Directory not empty - a/
b (Errno::ENOTEMPTY)
        from C:/ruby193/lib/ruby/1.9.1/fileutils.rb:1400:in `block in remove_dir
1'
        from C:/ruby193/lib/ruby/1.9.1/fileutils.rb:1414:in `platform_support'
        from C:/ruby193/lib/ruby/1.9.1/fileutils.rb:1399:in `remove_dir1'
        from C:/ruby193/lib/ruby/1.9.1/fileutils.rb:1392:in `remove'
        from C:/ruby193/lib/ruby/1.9.1/fileutils.rb:770:in `block in remove_entr
y'
        from C:/ruby193/lib/ruby/1.9.1/fileutils.rb:1444:in `block (2 levels) in
 postorder_traverse'
        from C:/ruby193/lib/ruby/1.9.1/fileutils.rb:1448:in `postorder_traverse'

        from C:/ruby193/lib/ruby/1.9.1/fileutils.rb:1443:in `block in postorder_
traverse'
        from C:/ruby193/lib/ruby/1.9.1/fileutils.rb:1442:in `each'
        from C:/ruby193/lib/ruby/1.9.1/fileutils.rb:1442:in `postorder_traverse'

        from C:/ruby193/lib/ruby/1.9.1/fileutils.rb:768:in `remove_entry'
        from C:/ruby193/lib/ruby/1.9.1/fileutils.rb:626:in `block in rm_r'
        from C:/ruby193/lib/ruby/1.9.1/fileutils.rb:622:in `each'
        from C:/ruby193/lib/ruby/1.9.1/fileutils.rb:622:in `rm_r'
        from rm_r_test.rb:8:in `<main>'

----------------------------------------
Bug #7034: 一部環境で bitclust setup の実行中に例外が起きることがある
https://bugs.ruby-lang.org/issues/7034#change-29762

Author: pypypy567 (py _)
Status: Assigned
Priority: Low
Assignee: okkez (okkez _)
Category: bitclust
Target version: 
reporter: 
ruby_version: 


#7020 でミスってた件です。
Bitclust の問題じゃなさそうに思えますが一応現象の報告だけしておきます。


OS: Windows XP ServicePack3 32bit
ruby: 1.9.3p125 (2012-02-16) [i386-mswin32_100]
bitclust: 0.5.2 相当(書きかえてた所を確実に元に戻すため svn の working copy からコピペしました)
現象: bitclust setup を実行すると時々途中で例外が起きる
例外の種類:
2種類有ります。
1) atomic_write_open (database.rb) の処理中に Errno::ENOMEM
2) MethodDatabase#init (methoddatabase.rb) 内の mkdir でErrno::EEXIST
1はさらに2通りに分かれます。
1a) fopen (compat.rb) 内の open の処理中にエラー

1b) File.rename でエラー


$ bitclust setup 2> 00.txt
などとやって取ったログを添付します。(log.zip)


ログの内容説明:
まず10回やってみたら全部失敗しました。(00.txt-09.txt)
内訳は一つだけ 2 で後は 1a か 1b。
ほぼ全部 ENOMEM ということでとりあえずPCを再起動してみたら 1 は起こらなくなりました。(10.txt-20.txt)
ファイルが空なのは正常終了したということです。
11_method_dir.txt とかは終了直後に db 内に残っていたディレクトリのリストです。method と付いてるのは method ディレクトリ内だけ。ディレクトリ以外は残っていませんでした。

2 は FileUtils.rm_rf した直後に mkdir で失敗してるわけですが、この rm_rf でなぜか時々ファイルを消し切れていないということのように思えます。

エラーに関係有りそうな部分を模倣するスクリプトを書いて実験してみたら時々再現しました。
僕が観測した範囲では消し損ねることが有るのはディレクトリだけのようです。
使ったスクリプトも添付します。 (rm_rf_test.rb) 
これのエラー表示はこんな感じです:
C:/ruby193/lib/ruby/1.9.1/fileutils.rb:247:in `mkdir': File exists - a (Errno::EEXIST)
        from C:/ruby193/lib/ruby/1.9.1/fileutils.rb:247:in `fu_mkdir'
        from C:/ruby193/lib/ruby/1.9.1/fileutils.rb:176:in `block in mkdir'
        from C:/ruby193/lib/ruby/1.9.1/fileutils.rb:175:in `each'
        from C:/ruby193/lib/ruby/1.9.1/fileutils.rb:175:in `mkdir'
        from rm_rf_test.rb:9:in `<main>'
失敗したときは a/b が残っているようです。a だけ残るパターンは確認出来ませんでした。

対処法:
1 の方はよく分かりませんがPC再起動で消えてなくなりました。
2 は簡単で、setup しなおしたい時は bitclust に任せず手動で古いのを削除しておけばよいと思います。
どちらも bitclust 側で出来ること/すべきことは特になさそうな気がします。

他の環境:
いちいち時間がかかるのであまり試してませんが、
・上記の環境で ruby 1.8.7 (2012-06-29 patchlevel 370) [i386-mingw32] でも再現する模様。
・Win7 64bit の環境で数回 bitclust setup してみたがエラーは出ず。



-- 
http://bugs.ruby-lang.org/

--
ML: ruby-reference-manual@m...
Info: http://QuickML.com/

[前][次][番号順一覧][スレッド一覧]

      3304 2012-09-17 11:27 [redmine@r...        ] [るりまプロジェクト - Bug #7034][Open] 一部環境で bitclust setup の実行中に例外が起きることがある
      3306 2012-09-17 18:32 ┣[redmine@r...        ] [るりまプロジェクト - Bug #7034] 一部環境で bitclust setup の実行中に例外が起きることがある
      3322 2012-09-24 16:38 ┣[redmine@r...        ] [るりまプロジェクト - Bug #7034][Assigned] 一部環境で bitclust setup の実行中に例外が起きることがある
->    3336 2012-09-27 16:17 ┣[redmine@r...        ] [るりまプロジェクト - Bug #7034] 一部環境で bitclust setup の実行中に例外が起きることがある
      3343 2012-09-30 10:44 ┗[redmine@r...        ] [るりまプロジェクト - Bug #7034][Rejected] 一部環境で bitclust setup の実行中に例外が起きることがある