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

ruby-reference-manual:3343

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


Issue #7034 has been updated by okkez (okkez _).

Status changed from Assigned to Rejected


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

Author: pypypy567 (py _)
Status: Rejected
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 の実行中に例外が起きることがある