きどたかのブログ

いつか誰かがこのブログからトラブルを解決しますように。

お手上げなIOExceptionと出会った

わかんないことがあると悔しいです!


IOException : デバイス上に十分な領域がありません
IOException : ファイル番号が間違ってます


こいつらの原因が分からない。
ディスクはあるらしいのに出たらしい。


英語だと確かこんなメッセージ。
not enough disk space
bad fie number


Solarisのメッセージのページがhitするけど、
たいして役にたたない。


InputStreamのcloseで、なんで領域がいるのだね。アンビリーバブルや。


試しにwin環境にて、ファイル記述子がらみで、
頑張って怪しげな操作をするも、
「無効なハンドルです」くらいしか出せなかった。
これはProcessExplorerでFileのハンドルを見つけて、そいつをぶっつり切れば出来る。


Solaris10で、NAS上のI/Oで起きてるみたいだ。
ハードの詳細などは知らない。
native methodで起きることについて、
僕がやれることは少ないと痛感した。


/var/adm/messages に多少ログが出る。
いや、本当にディスクフルなら出る。
今回のは出てない。
誰がJVMに戻す情報をねじ曲げた?
たとえば、普通とは違う結果をJVMに戻したんだが、JVMが情報を丸めたとか?


どうもベンダさんもお手上げらしい。
オイラもお手上げ。
もし解決出来るんだったら、彼らに払ってる費用を僕の口座に振り込んでおくれw


nfs version3で会話してることがうかがわれた。
nfsってどんなもんをやりとりしてんだろう?
またプロトコル仕様を調べるのかよ。
調べたところで解決しないだろうけど、
なんか糸口が見えるかもしれない。


以下は特異点だと感じたこと。
NASの領域が関係する。
特定のAPサーバで起きる。
ストリームのcloseで発生する。
InputStreamのcloseで領域不足と言われる。


頭の中でリフレインする。
システムコールであるとか、
nfsであるとか、native methodであるとか。


/var/adm/messageに出ない領域不足の件は、
きっとJavaのバグを疑わないといけないかも。
.javaソースで分からないとこのバグとか。
ずっとsunのbug databaseを漁ってるけど厳しいぜ。


再現環境を下さい。。。