- ベストアンサー
fopenとfcloseの繰り返しでpanic (FREEBSD)
以下のプログラムをコンパイルして実行すると panicが発生して強制リブートしてしまいました。 これは何が原因なのでしょうか? 頻繁にfopenとfcloseを繰り返したら駄目なのでしょうか・・。 #include <stdio.h> main(){ FILE *fp; while(1){ fp=fopen("test.txt","wt"); fprintf(fp,"aaaaaaaaaa\n"); fclose(fp); } }
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
#1です。 (以下、実験が自己責任であることは認識した上で、行っています。) もう一度、VirtualPC上の6.1-RELEASE-p10で1時間ほど実行してみましたが、 Panicは起こりませんでした。 すでに行っているものもあるかもしれませんが、 実験出来そうなことを何点かあげてみます。 (1)コンパイルオプションを変えてみる(-O2だったら、-O0,とか-O1とかにしてみる)。 (2)設定ファイル「GENERIC」でコンパイルしたカーネルで試す。 (3)6.1-RELEASEをインストールして、その直後に試す。 (4)「memtest86」等でメモリをチェックする。 VMWaveでもPanicしているのだとしたら(3)のメモリエラーは考えにくいですね。
その他の回答 (1)
- shuyamakawa
- ベストアンサー率67% (111/164)
ちょっとドキドキしながら実験してみましたが(笑)、 普通に何事もなく実行出来て、[CTRL]+Cで終了出来ました。 ちなみに環境はVirtualPC上のFreeBSD 6.1-RELEASE(-p10)です。 >uname -a FreeBSD XX-SERVER.quake 6.1-RELEASE-p10 FreeBSD 6.1-RELEASE-p10 #0: Thu Nov 2 17:06:11 JST 2006 yamakawa@XX-SERVER.quake:/usr/obj/usr/src/sys/XX-SERVER i386 >which cc /usr/bin/cc >cc hoge.c >./a.out ^C FreeBSDのバージョンは何ですか? コンパイラはFreeBSD標準のものですか? make worldでカーネル/バイナリの再構築はしていますか? 起動後、どのぐらいの時間でパニックしますか?
補足
ご回答ありがとうございます。 実験までしてもらえるなんて感謝感激です! でも相当危ないのでもう試さないでくださいね(^^; (当方のPCでは実際ファイルが消失しましたので・・) >FreeBSDのバージョンは何ですか? 6.1RELEASE p10です。 >コンパイラはFreeBSD標準のものですか? gccを使ってます。ccとgccっていっしょですよね? >make worldでカーネル/バイナリの再構築はしていますか? しています。 >起動後、どのぐらいの時間でパニックしますか? 大体2~3分でしょうか。 VMWAREにインストールしたものと、PC上に インストールしたものとで試しましたがどちらでも PANICになりました(>_<)。 ちなみにWINDOWS+VISUALC++では起こらないようです。 まあ、こういう変なコードを書かなければすむ話なんですが・・ これだけのことで簡単にシステムが落ちるなんて思ってなかったので 気になって聞いてみました。(FREEBSDは安定なOSと聞いてましたので)
補足
ありがとうございます。 メモリエラーってことは多分ないと思います。 このプログラムを動かさない限り他のソフトはずっと正常に動い てますので・・・。 あとカーネルの再構築もGENERICを使ってます。 いろいろ起動しているデーモンを停止してから試してみたのですがやっぱり同じようにパニくってしまうみたいです。 ちなみに落ちる直前に以下のメッセージが常に出ます。 panic: kmem_malloc(4096): kmem_map too small: 62849024 total allocated Uptime: *h*m*s Cannnot dump. No dump device defined. Automatic reboot in 15 seconds - press a key on the console to abort kmem_mallocとかをキーにしてちょっとググって見たのですがやっぱりわかりませんでした。