OSDN Ticket Archive


Ticket #39735

Win版 x64デバッグ構成のとき_controlfp_sでアサーション発生

登録: 2019-11-09 13:45 最終更新: 2019-11-09 17:43

報告者:
yknk
担当者:
yknk
チケットの種類:
バグ
状況:
完了
コンポーネント:
MIDITrail Ver.1.3.x for Windows
マイルストーン:
Version 1.3.1 for Windows (完了済み)
優先度:
5 - 中
重要度:
5 - 中
解決法:
修正済み
ファイル:
なし

詳細

x64デバッグ構成でMIDITrailをビルドして起動し、MIDIファイルをロードすると、 SMFPUCtrl::Startの_controlfp_sで以下のアサーションが発生する。 リリース版モジュールで実行した場合は例外は発生しない。

---------------------------
Microsoft Visual C++ Runtime Library
---------------------------
Debug Assertion Failed!

Program: C:\Users\wada\source\repos\MIDITrail\x64\Debug\MIDITrail.exe
File: minkernel\crts\ucrt\src\appcrt\tran\amd64\ieee.c
Line: 106

Expression: (mask&~(_MCW_DN|_MCW_EM|_MCW_RC))==0

For information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts.

(Press Retry to debug the application)

チケットの履歴

2019-11-09 13:45 更新者: yknk
  • 新しいチケット "Win版 x64デバッグ構成のとき_controlfp_sでアサーション発生" が作成されました
2019-11-09 13:47 更新者: yknk
コメント

原因

SMFPUCtrl::Startで浮動小数点の精度制御を行うため、_controlfp_sを呼び出していた。 しかし_controlfp_sは、x64プラットフォームにおいて浮動小数点の精度制御(_MCW_PC)を サポートしておらず、アサーションが発生した。

浮動小数点の精度制御は、以下のチケットで処理を追加している。

  • #23347 ピアノロールレインでキー押下タイミングとピアノロールがずれる
2019-11-09 13:47 更新者: yknk
コメント

対策

テストした結果、x64環境では浮動小数点の精度制御を実施しなくても、 演算精度が保たれていることを確認した。

SMFPUCtrl::StartとSMFPUCtrl::Endにて、x64向けビルド時に浮動小数点の 精度制御(_MCW_PC)を実行しないように修正する。

2019-11-09 17:43 更新者: yknk
  • 解決法なし から 修正済み に更新されました
  • 状況オープン から 完了 に更新されました

添付ファイルリスト

添付ファイルはありません