/ optimizeを使用したRyuJITC#の誤った合計結果

rmbq

私はこのコードを持っています:

private void AnswerToCe(int currentBlock, int totalBlock = 0)
{
    byte[] bufferToSend;
    byte[] macDst = mac;
    byte[] macSrc = ConnectionManager.SInstance.GetMyMAC();
    byte[] ethType;
    byte[] header;

    if (Function == FlashFunction.UPLOAD_APPL || Function == FlashFunction.UPLOAD_BITSTREAM)
    {
        ethType = BitConverter.GetBytes((ushort)EthType.ETH_TYPE_UPLOAD);
        ethType = new byte[] { ethType[1], ethType[0] };
        header = Header.GetBytes((ushort)binaryBlocks.Count, (ushort)(currentBlock + 1), (ushort)binaryBlocks[currentBlock].Length);
        int index = 0;
        bufferToSend = new byte[macDst.Length + macSrc.Length + ethType.Length + header.Length + binaryBlocks[currentBlock].Length];
        Array.Copy(macDst, 0, bufferToSend, index, macDst.Length);
        index += macDst.Length;
        Array.Copy(macSrc, 0, bufferToSend, index, macSrc.Length);
        index += macSrc.Length;
        Logger.SInstance.Write(index.ToString(), "test index pre");
        Array.Copy(ethType, 0, bufferToSend, index, ethType.Length);
        index += ethType.Length;
        Logger.SInstance.Write(index.ToString(), "test index post");
        Array.Copy(header, 0, bufferToSend, index, header.Length);
        index += header.Length;
        Array.Copy(binaryBlocks[currentBlock], 0, bufferToSend, index, binaryBlocks[currentBlock].Length);
    }

アプリケーションをデバッグモードでビルドすると、すべて問題なく、test index pre12をtest index post出力し、14出力します。リリースモードでも、Optimize codeチェック外しても同じです。14ではなく18のOptimize codeチェックtest index postプリントでテストした
場合に置き換えindex += ethType.Length;も同じ結果になりindex += 2;ます。動作しているだけのようindex++;index++;です。
空のアプリケーションでこのコードを試しましたが、合計は問題ありません。
アプリはマルチスレッドですが、ここでは同時実行性はありません。
DLLから逆コンパイルされたコードは問題ないようです。
なぜこれが起こるのか考えはありますか?

編集:アプリがx64用にコンパイルされている場合にのみ発生します。x86は大丈夫です。
編集3:ビルド
環境のいくつかの情報:ビジュアルスタジオ15.0.0-RTW + 26228.4
フレームワーク4.7.02053
は、フレームワーク4.6.2および4.7でこの問題を引き起こす可能性があります。他のフレームワークはテストされていません。
編集5:新しい小さなサンプルプロジェクト依存関係は必要ありません。
編集6:ここでテストプロジェクトの逆アセンブル(ここに投稿するには長すぎます)

rmbq

これはRyuJITですでに報告されているバグでし詳細については、こちらをご覧くださいすぐに修正プログラムで修正される予定です。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

誤った結果を与えるSQL2の合計

分類Dev

複数の結合を使用すると、Mysql合計クエリが誤った結果を返す

分類Dev

マルチスレッドの合計は誤った結果をもたらします

分類Dev

groupbyと内部結合を使用したmysqlの誤った動作

分類Dev

Pyspark-sqlを使用してUNIX時刻を日時に変換した場合の誤った結果

分類Dev

自己結合は誤った/反対の結果を返しますか?

分類Dev

(numpyの)floatを使用する場合のSympyの誤った結果

分類Dev

3つのテーブルMYSQLを使用したJOINの誤った結果

分類Dev

誤った結果を生成する配列を使用した行列の乗算

分類Dev

PHPでsscanfを使用した場合の間違った結果

分類Dev

BoostPolygonを使用した誤った減算結果

分類Dev

誤ったDate()の結果

分類Dev

誤ったfprintfの結果

分類Dev

「a」から「b」の範囲の整数の合計は、大きな入力に対して誤った結果をもたらします

分類Dev

自己結合を使用した誤ったカウント

分類Dev

T-SQLで誤った結果をもたらす集計

分類Dev

MetalPetalのMTIColorLookupFilterは誤った結果を出力します

分類Dev

メソッドを使用した3と5の倍数の合計:誤った合計が来る

分類Dev

実際のデータにソリューションを適用した場合の誤った結果

分類Dev

LINQの左結合、group by、およびCountが誤った結果を生成する

分類Dev

誤った結果を返す2つの集計を含むSQLJOIN

分類Dev

PHPを使用した単純な算術で得られた誤った結果

分類Dev

内部結合クエリの誤った結果

分類Dev

SUMを使用したIFは、MySQLで誤った結果を生成します

分類Dev

Luceneクエリ構文を使用したAzureSearchが誤った結果を返す

分類Dev

join()を使用するJavaマルチスレッドプログラムは、隣接する数値の合計を計算するときに誤った結果を返します

分類Dev

sharedpreferencesを使用した後の誤った計算

分類Dev

ShowSolution関数を使用したMapleの誤った計算

分類Dev

カスタムリストビューアダプタと異なるレイアウトを使用した場合の誤った結果

Related 関連記事

  1. 1

    誤った結果を与えるSQL2の合計

  2. 2

    複数の結合を使用すると、Mysql合計クエリが誤った結果を返す

  3. 3

    マルチスレッドの合計は誤った結果をもたらします

  4. 4

    groupbyと内部結合を使用したmysqlの誤った動作

  5. 5

    Pyspark-sqlを使用してUNIX時刻を日時に変換した場合の誤った結果

  6. 6

    自己結合は誤った/反対の結果を返しますか?

  7. 7

    (numpyの)floatを使用する場合のSympyの誤った結果

  8. 8

    3つのテーブルMYSQLを使用したJOINの誤った結果

  9. 9

    誤った結果を生成する配列を使用した行列の乗算

  10. 10

    PHPでsscanfを使用した場合の間違った結果

  11. 11

    BoostPolygonを使用した誤った減算結果

  12. 12

    誤ったDate()の結果

  13. 13

    誤ったfprintfの結果

  14. 14

    「a」から「b」の範囲の整数の合計は、大きな入力に対して誤った結果をもたらします

  15. 15

    自己結合を使用した誤ったカウント

  16. 16

    T-SQLで誤った結果をもたらす集計

  17. 17

    MetalPetalのMTIColorLookupFilterは誤った結果を出力します

  18. 18

    メソッドを使用した3と5の倍数の合計:誤った合計が来る

  19. 19

    実際のデータにソリューションを適用した場合の誤った結果

  20. 20

    LINQの左結合、group by、およびCountが誤った結果を生成する

  21. 21

    誤った結果を返す2つの集計を含むSQLJOIN

  22. 22

    PHPを使用した単純な算術で得られた誤った結果

  23. 23

    内部結合クエリの誤った結果

  24. 24

    SUMを使用したIFは、MySQLで誤った結果を生成します

  25. 25

    Luceneクエリ構文を使用したAzureSearchが誤った結果を返す

  26. 26

    join()を使用するJavaマルチスレッドプログラムは、隣接する数値の合計を計算するときに誤った結果を返します

  27. 27

    sharedpreferencesを使用した後の誤った計算

  28. 28

    ShowSolution関数を使用したMapleの誤った計算

  29. 29

    カスタムリストビューアダプタと異なるレイアウトを使用した場合の誤った結果

ホットタグ

アーカイブ