任务单 #39735

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

开放日期: 2019-11-09 13:45 最后更新: 2019-11-09 17:43

报告人:
属主:
类型:
状态:
关闭
优先:
5 - Medium
严重性:
5 - Medium
处理结果:
Fixed
文件:

Details

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)

任务单历史 (3/4 Histories)

2019-11-09 13:45 Updated by: yknk
  • New Ticket "Win版 x64デバッグ構成のとき_controlfp_sでアサーション発生" created
2019-11-09 13:47 Updated by: yknk
评论

原因

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

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

  • #23347 ピアノロールレインでキー押下タイミングとピアノロールがずれる
2019-11-09 13:47 Updated by: yknk
评论

対策

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

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

2019-11-09 17:43 Updated by: yknk
  • 处理结果 Update from to Fixed
  • 状态 Update from 开启 to 关闭

Attachment File List

No attachments

编辑

Please login to add comment to this ticket » 登录名