一括表示KbMedia Player Version 3.14beta5.2024.0603
記事No 335
投稿日 2024/06/02(Sun) 22:41:38
投稿者 Kobarin
参照先 https://kobarin.sakura.ne.jp/
https://kobarin.sakura.ne.jp/test/kbmed314_beta5.exe
https://kobarin.sakura.ne.jp/test/kbmed314_beta5.7z

.exe と .7z はどちらも中身は同じです。
.7z の展開の仕方が分からない方は .exe をダウンロードして下さい。

.exe だと Microsoft Edge でブロックされる方は .7z をダウンロードして下さい。
Microsoft Edge にブロックされる方は安全だと報告してくれると助かります。

起動時にエラーメッセージが表示されてプラグインが認識されない場合は
Microsoft Visual C++ 2022 再頒布可能パッケージが必要です。
https://visualstudio.microsoft.com/ja/downloads/#other-ja-family
x64 版ランタイムファイル直リンク
https://aka.ms/vs/17/release/VC_redist.x64.exe
x86 版ランタイムファイル直リンク
https://aka.ms/vs/17/release/VC_redist.x86.exe
(x64 版の動作には vc_redist.x64.exe と vc_redist.x86.exe の両方が必要です)

VS2019 のランタイムでも動作はするようですが、念のため VS2022 のランタイムを
入れて下さい。

β版は Windows XP のサポートを打ち切りました。XP 環境だと一部のプラグインが
動作しません。Windows XP で使いたい方は正式版をお使い下さい。


v3.14beta5 での変更点

・各種プラグイン/DLL の開発環境を VS2022 17.10.1 に更新
・kbmdx.kpi に関する以下の修正
 ・64bit 版が落ちるのを修正
 ・v3.14beta3 同梱の版(VS2022 17.10.0 でビルド)から発生
  (std::mutex::lock() で落ちる。kbmod.kpi が落ちるのと同じ原因?)
 ・プリプロセッサの定義に _DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR を追加で回避
・kbpsf2.kpi に関する以下の修正
 ・プリプロセッサの定義に _DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR を追加
 ・VS2022 17.10.0 以降でビルドすると 64bit 版が std::mutex::lock() で落ちるこ
  との対策
 ・本プラグインで実際に落ちるのを確認出来た訳ではないが std::mutex を使用して
  いる箇所があるようなので念の為


ちょっと納得行かないのですが kbmdx.kpi の 64bit 版が落ちるのを修正しました。
kbpsf2.kpi の方は念の為の修正です。
一週間ほど様子を見てから正式版にするつもりでしたが落ちる不具合はあまり
使われない形式でも早めに修正しておこうと思いました。

VS2022 17.10.0 以降の最新のプラットフォームツールセットでリリースビルドしたものは
64bit 版では

std::mutex::lock()

を呼ぶと落ちるみたいで改めて確認してみたら kbmod.kpi の64bit版が落ちるのもこれが
原因でした。

試してみると EXE 内で使う分には大丈夫だけど DLL 内だと NG っぽいですね。

https://github.com/microsoft/STL/wiki/Changelog

VS 2022 17.10

...

Fixed bugs:

Fixed mutex's constructor to be constexpr. #3824 #4000 #4339
Note: Programs that aren't following the documented restrictions on binary compatibility may encounter null dereferences in mutex machinery. You must follow this rule:
When you mix binaries built by different supported versions of the toolset, the Redistributable version must be at least as new as the latest toolset used by any app component.

You can define _DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR as an escape hatch.

escape hatch(緊急の際の避難手段?) として定義?

怖くて全てのプロジェクトで定義しておきたくなるんですけど。
EXE で OK で DLL で NG なのは修正し切れてないということ?
むしろ 17.10.0 から発生するようになったような?
記事編集 記事編集
関連一覧ツリー 一括表示 をクリックするとツリーを一括表示します)
一括表示 KbMedia Player Version 3.14beta5.2024.0603 - Kobarin 2024/06/02(Sun) 22:41 No.335
返信フォーム ( 記事に返信する場合はこのフォームから投稿して下さい )
おなまえ
Eメール
タイトル
メッセージ
参照先
添付
暗証キー (英数字で8文字以内)
投稿キー (下画像の数字を入力)

投稿キー

  


- Web Forum v8.0 -
++ Edited by Hamel ++