2017年8月1日火曜日

64bit Windows でサブクラスしたウィンドウが落ちる

メールソフト用のプラグインを作ってますが、なんかよく落ちるようになってしまったな、と感じてました。

VisualStudio でデバッグ中に例外が発生する場所が、サブクラス化したWindowプロシージャの部分で、ずいぶん前に書き上げたところだし、修正もかけてないから、さっぱりわかりませんでした。

で、ググってみたところ
https://stackoverflow.com/questions/41741448/random-crashes-on-windows-10-64bit-with-atl-subclassing
こんな情報がありました。

Windows のバグらしいです。
Windows 10 RS2 とかで修正されるらしいです。

じゃぁ、それまで待ちましょう・・・

と、思ってたのですが、プラグインをお使いいただいている方々もクラッシュしてしまってると申し訳ないし。

ということで、上記リンクに書いてある修正をやってみました。

atlstdthunk.h というファイルの25行目くらいにある
#define
USE_ATL_THUNK2 の行をコメントアウトして再コンパイルする
というものです。



実際にやってみようとすると、atlstdthunk.hは読み取り専用でエディタで変更できませんでした。
そこで。
E:\Common\VC14.0\
atlstdthunk.h にファイルをコピーして編集しました。

プラグインとライブラリのすべてのプロジェクト設定で、「プロパティ」を開き
「構成プロパティ」の「すべての構成」で「VC++ディレクトリ」の先頭に E:\Common\VC14.0を追加します。


これでライブラリとプロジェクトを再ビルドしましたところ、どうやら問題が解決したようです。

再現性がランダムのため、解決したかどうかは今後の経過を見なけりゃなりませんけどね。

0 件のコメント:

コメントを投稿