none
unsigned long long でVSが落ちる

    質問

  • Visual Studio Community 2017 の Visual C++ 2017 にて

        unsigned long long int a = 1ULL;
        unsigned long long int b = 2ULL;
        unsigned long long int d = a - b;

    を実行するとVidual Studio が落ちて再起動になります。同様に

    int c = 0;

       if ((a > b)) {

           c = 1;
       }

    でもVSが落ちます。unsigned long long int をuint_fast64_t に変えると回避できるみたい

    だけど、これってコンパイラのバグだよね???ULLが負数になったらVSが対応できなくなる?

    2018年1月4日 22:01

すべての返信

  • 停止したのはプログラムでなくVisual Studio本体ということですよね? プログラムを実行することとVisual Studioが停止することとの関連がわかりません。操作手順を詳細に記述してください。また再現率も提示してください。とりあえず今開示されている範囲の操作であれば、私の手元のPCでは問題なく動作します。質問者さんのPC不良の可能性が考えられます。
    • 回答の候補に設定 佐祐理 2018年1月6日 1:01
    2018年1月4日 22:55
  • おっしゃる通り、停止するのはVidual Studio本体です。

    ですから、手順は、

    プログラムを入力

    Viual Studioのデバッカーでプログラムを実行

    VSが例外で停止、再起動する

    という流れです。再現率は100%です。

    プログラムはexeファイルでは実行とりあえずできるみたいですが。

    2018年1月4日 23:23
  • unsigned long longを使わない場合はVisual Studioは落ちないのですか?
    2018年1月5日 3:20
  • 私も試しましたが再現しませんでした。オプションとかはどうなってますか。あ、プロジェクトを作るところからお願いします。私は「Windows デスクトップ」の「Windows コンソール アプリケーション」で作り、オプションはデフォルトのままです。

    Jitta@わんくま同盟

    2018年1月5日 3:59
  • 私の環境(Windows 10 x64 バージョン 1709 ビルド 16299.125、Visual Studio Enterprise 2017 バージョン 15.4.0、CPU=Intel® Core™2 Duo Processor E7600)でも再現しませんでした。試したコードは下記です。

    #include "stdafx.h"
    
    int main()
    {
    	unsigned long long int a = 1ULL;
    	unsigned long long int b = 2ULL;
    	unsigned long long int d = a - b;
    	printf("%llu", d);
    	return 0;
    }

    環境依存の問題かもしれませんね。再現環境の OS とその詳細バージョン、CPU などハードウエアの情報を提示することは可能でしょうか?

    2018年1月5日 4:08
  • 私の環境でも試してみました。

    結果は、問題なく成功しています。

    環境は Visual Studio 2017 15.5.2(現行最新環境)。OSは、Windows 10 Pro IP(17063) です(2018/01/04 22:00時点で適用可能なすべてのWindowsUpdateが適用済み)。

    デバッグ実行、ステップ実行、デバッグなし実行いずれも問題なく動作しました。

    x86/x64, Debug/Release 一通りの組み合わせでも試していますが特にエラーなどが出ることなく動作しています。

    環境依存の問題か、マイナーバージョンのどこかで問題のある出力のものが出てしまっていたかのいずれかではないかと思います。

    VSのマイナーバージョン(ヘルプで確認可能)も確認し、古いようであれば最新のものを適用してみてはいかがでしょうか。


    とっちゃん@わんくま同盟, Visual Studio and Development Technologies http://blogs.wankuma.com/tocchann/default.aspx

    2018年1月5日 4:57
  • 佐祐理さんへ、ありがとうございます。。確認してみました。

    unsigned long でも落ちました。

    他のPCでも試してみたら、unsigned long long も、unsigned long も落ちません。つまり再現しません。

    どうやらメインPCでVisual Studioのメモリの調子がおかしいようです。

    一日1000回を超えるビルドをやるとVSの調子がおかしくなり、ちょっとしたことで

    エラーを出すようになるので、どうやら私のメインPCのVSの調子がおかしくなる?使いすぎで

    エラーや例外処理ができなくなる、、ということみたいです。。。

    2018年1月5日 14:59
  • 最初に言及したように質問者さんのPC不良の可能性が高そうですね。例えば管理ツールのメモリ診断を実行してみるとか? そうしたハードウェア障害でなくても、不具合を持つソフトウェアが常駐していて長時間起動しているとエラーが蓄積云々があるかもしれません。
    2018年1月6日 1:05
  • メモリの物理的な動作不良なら、フツーは BSOD だと思います。

    (物理メモリ不良で、特定のオペレーションで特定のプロセスだけを落とす。。。なんて器用なことは不可能かと。)

    ソフトウェア的な問題だと思います。

    該当 PC の VS プロセスにアタッチしている 3rd ベンダ製 DLL モジュールを、きちんと確認した方が良いと思います。


    • 編集済み お馬鹿 2018年1月6日 8:23 誤記訂正
    2018年1月6日 8:22