Ticket #39735

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

Date d'ouverture: 2019-11-09 13:45 Dernière mise à jour: 2019-11-09 17:43

Rapporteur:
Propriétaire:
Type:
État:
Atteints
Priorité:
5 - moyen
Sévérité:
5 - moyen
Résolution:
Fixed
Fichier:
Aucun

Détails

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)

Ticket History (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
Commentaire

原因

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

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

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

対策

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

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

2019-11-09 17:43 Updated by: yknk
  • État Update from Ouvert to Atteints
  • Résolution Update from Aucun to Fixed

Attachment File List

No attachments

Modifier

Please login to add comment to this ticket » Connexion