ブルースクリーンになりうるゲーム

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
アバター
namari
記事: 111
登録日時: 12年前

ブルースクリーンになりうるゲーム

#1

投稿記事 by namari » 11年前

ゲームを公開したところ、PCが落ちてしまったという報告が何件も入りました。
困ったことに自分のPCで再現性がないのです。

まったく原因に検討が付かないせいで見せるべきコードも具体的な聞き方もわかりませんので、一般論として答えをいただければいいのですが、
プログラミングで特に危険な(ブルスクを引き起こしうる)ミスとは例えばどういうものなんでしょうか。
とりあえず、ポインタは危険そうなのでアドレスを審判してないか総洗いしてみますが、
他の可能性がありましたら教えていただけると嬉しいです。

Rittai_3D
記事: 525
登録日時: 12年前

Re: ブルースクリーンになりうるゲーム

#2

投稿記事 by Rittai_3D » 11年前

イベントビューアで調べてみてはいかがでしょうか?

再現性が無いなら、PCが落ちたという人にイベントビューアのコピペを送ってもらうようにするしかないと思います。

変数の初期化忘れや配列の要素外にアクセスしているのかもしれません。
あとはメモリリークですかね。

関係のないこと書いていたらもうしわけないです。
オフトピック
因みに、何のゲームでしょうか?
初心者です

アバター
へにっくす
記事: 634
登録日時: 13年前
住所: 東京都

Re: ブルースクリーンになりうるゲーム

#3

投稿記事 by へにっくす » 11年前

あなたの危惧する通り、ポインタは使い方を誤ると簡単に落ちますが、ブルースクリーンになるケースってのは最近のOSではあまり見かけませんね。
Win9x/2k/NTがメインだったころにはよく聞きましたが。。
XP/Vista/7がメインの今では、ブルースクリーンになるのを見たことがないですな~
あるとすればBIOSレベル、つまりドライバ開発で落ちるぐらい?

まあ動かしたPCのシステム環境を知ることが第一ですね。
あなたのPCの環境と、その落ちたPCでの環境の情報をそろえてください。
written by へにっくす

ISLe
記事: 2650
登録日時: 14年前
連絡を取る:

Re: ブルースクリーンになりうるゲーム

#4

投稿記事 by ISLe » 11年前

ブルースクリーンを発生させるとなると、ビデオドライバ関連を疑いますね。
プログラムではデバイス操作の周辺で曖昧な点がないかチェックしてみてください。

渡すパラメータは正しいか
エラーも含めて戻り値は調べているか
デバイスの状態変化を考慮しているか
といったところでしょうか。

アバター
namari
記事: 111
登録日時: 12年前

Re: ブルースクリーンになりうるゲーム

#5

投稿記事 by namari » 11年前

>>3D_3Dさん
イベントビューアですか。
落ちたのなら『管理イベント』にエラーが表示されるといったものでいいんでしょうか。

やはりアドレス関連が問題になりがちですかね。

ちなみに、ゲームは2Dのシレン系のローグライクです。
DXLIBとC言語を使いVC++で作成してます。

>>へにっくすさん
Processor: Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz (8 CPUs), ~2.8GHz
Memory: 4096MB RAM
Card name: NVIDIA GeForce GTS 250
メモリ合計:2031MB

こういうスペックをお願いすればいいんですかね。

アバター
namari
記事: 111
登録日時: 12年前

Re: ブルースクリーンになりうるゲーム

#6

投稿記事 by namari » 11年前

>>ISLeさん

>渡すパラメータは正しいか
関数に渡す定数のことですよね。実はいくつか
「'float' から 'int' への変換です。データが失われる可能性があります。」のような警告は受けてますが、
問題ではないと思い全て放置してきました。これってバグになるものなんでしょうか。


――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――

アドレス侵犯に関して質問です。
この件に関して、僕のコードはほとんどポインタを使わず、(少数ありましたが全てバグがないことを確認済み)
動的配列は一切使っていないので、
もしアドレス侵犯に原因があるとしたら間違いなく配列の要素数を超えた数字を入れてしまっていることが原因となるでしょう。

あまりに多く、中々発見しにくいのですが、
VC++にこの検出を自動で行わせることはできないのでしょうか。

ISLe
記事: 2650
登録日時: 14年前
連絡を取る:

Re: ブルースクリーンになりうるゲーム

#7

投稿記事 by ISLe » 11年前

namari さんが書きました:>渡すパラメータは正しいか
関数に渡す定数のことですよね。
いいえ、違います。
デバイスを操作する関数に渡すパラメータです。
DXライブラリを使用しているならデバイスを直接操作する場面は少ないでしょうがまったくないわけではありません。
namari さんが書きました:あまりに多く、中々発見しにくいのですが、
VC++にこの検出を自動で行わせることはできないのでしょうか。
ヒープのバッファオーバーランを動的に検出するツールは、企業向け製品としていくつか存在します。
低価格なものでも数十万円からですが。

フリーの検出ツールもありますが、本件のような症状に対しては役に立たないと思います。
症状が出ないようにコードの書き方をアドバイスしてくれる類のものなので。

アバター
へにっくす
記事: 634
登録日時: 13年前
住所: 東京都

Re: ブルースクリーンになりうるゲーム

#8

投稿記事 by へにっくす » 11年前

namari さんが書きました:Processor: Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz (8 CPUs), ~2.8GHz
Memory: 4096MB RAM
Card name: NVIDIA GeForce GTS 250
メモリ合計:2031MB

こういうスペックをお願いすればいいんですかね。
他にどのOSで動かしているのかも必須です。またVC++で作成してるなら
VC++のバージョンも必須ですね。
バージョンによってはライブラリインストールが要ります。(足りない場合プログラムの起動すらしません)
googleで「vc++ redistributable」で検索。

配列のインデックスがおかしい場合は、どのPCでも例外で落ちると思いますが、
開発環境では落ちないのでしょう? どうなのでしょうか?
written by へにっくす

アバター
namari
記事: 111
登録日時: 12年前

Re: ブルースクリーンになりうるゲーム

#9

投稿記事 by namari » 11年前

>>ISLeさん
デバイスを操作する関数というものがいまいちどういう関数なのか把握できません。

検出ツールは実質不可能なんですね。分かりました。

>>へにっくすさん
+
windows 7 Home Premium/service pack 1
vc++は2008 Express Edition SP1

とこんな感じでしょうか。

プレイヤーたちは起動はできていました。
全く落ちることなく快適にプレイしてる人や短期間に2連続で落ちる人などいました。

今思い出してみると、開発中に一度だけ落ちたことがありました。
かなり昔で、一回しか起こらなかったのですが、もしかしたら当時から致命的なミスがあったのかもしれません。

こうなると環境依存の可能性が高くなりそうなので、やはり環境を問うべきですかね。

アバター
namari
記事: 111
登録日時: 12年前

Re: ブルースクリーンになりうるゲーム

#10

投稿記事 by namari » 11年前

困ったことに関係ないだろうバグをいくつか修正したところ、
一緒に消えてなくなってしまいました。

・フォントハンドルを多重に読み込んでいたこと。
・プロセスが消しても消えずに残っていたこと。

ぐらいが修正点なんですが、
そもそもどちらも初回起動時には問題にならない部分なので
初回起動時に落ちた人もいることを考えると怪しいものです。
しかし報告が一切なくなったのでここで一応解決ということにしておきます。

閉鎖

“C言語何でも質問掲示板” へ戻る