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 の実行中に例外が起きることがある