トップ回答者
Visual C++でデバッグ時にFindActCtxSection絡みのメッセージが出るようになりました

質問
-
メッセージの内容は
SXS: Invalid parameter(s) passed to FindActCtxSection*()
dwFlags = 0x00000001
ReturnedData = 00000014A694BE10
->cbSize = 0
です。これが連続で出ます。 ReturnedData のところの値は起動するたびに変わりますが、複数のアンマネージドプログラムで出るようになりました。
昨日までは見たことがなかったので、めちゃめちゃ低い確率で偶然気づかなかったか、それよりはるかにあり得そうなのはここ数日でPCにいれたソフトのどれかが原因で出るようになったのではないかと思います(少し古めのソフトです)が、確定的ではありません。
そう思う理由としては、ググってみたら
https://social.msdn.microsoft.com/Forums/en-US/3f3cef82-9abd-4dc5-9579-81ef8edfe376/findactctxsection?forum=vcmfcatl
など
Microsoft Visual C++ 2005 または 2008 あたりの Redistributable Packageで問題が起きてる可能性が高いと感じられたからです。最近入れたソフトのインストール時に、何回かRedistributable Packageが自動でインストールされるウインドウを見た覚えがあります。
ただ、釈然としないのは、古いバージョンをアンインストールしていって2005と2008については
この4つだけ残る状態にしたうえで、なお発生するということです。
話を調べてみると、これらのバージョンは上記URLのページで紹介されている「MS11-025」の後のはずなので、これだけしか本当に残ってないならたぶん修正されてるはずではないかということです。
なので実際にはどこかに残骸が残っている可能性が浮かんでも来るので
上記URLのページを見るとWinSxSをいじる必要があるかもしれないという気もしなくもないのですが、本当のところはどうなのでしょうか?他にまず試してみるべきことをご存知の方はいらっしゃいませんか?
よろしくお願いいたします。
回答
-
mr.setupさん、こんにちは。フォーラムオペレーターのHarukaです。
MSDNフォーラムにご投稿くださいましてありがとうございます。詳細な状況をご提供いただきありがとうございます。その後のご状況いかがでしょうか。追加でご確認いただいたことなどあれば、追記いただくことで回答がつきやすくなります。また、英語とはなりますが米国のフォーラムに投稿いただくこともご検討ください。私共でもご案内できる情報がないか確認いたします。どうぞよろしくお願いします。
MSDN/ TechNet Community Support Haruka
~参考になった投稿には「回答としてマーク」をご設定ください。なかった場合は「回答としてマークされていない」も設定できます。同じ問題で後から参照した方が、情報を見つけやすくなりますので、 ご協力くださいますようお願いいたします。また、MSDNサポートに賛辞や苦情がある場合は、MSDNFSF@microsoft.comまでお気軽にお問い合わせください。~- 回答としてマーク mr.setup 2019年10月30日 8:31
-
FindActCtxSection* は kernel32.dll および kernelbase.dll に実装されているようですが、* 部分には色んなケースが考えられるようです。
0:126> x kernel32!*FindActCtxSection* 00007ffc`c0d70234 KERNEL32!BasepFindActCtxSection_CheckAndConvertParameters (void) 00007ffc`c0d70e50 KERNEL32!FindActCtxSectionGuidWorker (void) 00007ffc`c0d7100c KERNEL32!BasepFindActCtxSection_FillOutReturnData (void) 00007ffc`c0dd89f0 KERNEL32!_imp_FindActCtxSectionStringW = <no type information> 00007ffc`c0dbdf60 KERNEL32!FindActCtxSectionStringA (FindActCtxSectionStringA) 00007ffc`c0d7b2e0 KERNEL32!FindActCtxSectionGuidStub (FindActCtxSectionGuidStub) 00007ffc`c0d700f0 KERNEL32!FindActCtxSectionStringWWorker (FindActCtxSectionStringWWorker) 00007ffc`c0d7f030 KERNEL32!FindActCtxSectionStringWStub (FindActCtxSectionStringWStub) 00007ffc`c0d70168 KERNEL32!BasepFindActCtxSectionString (BasepFindActCtxSectionString) 00007ffc`c0dd89f8 KERNEL32!_imp_FindActCtxSectionGuid = <no type information> 0:126> x kernelbase!*FindActCtxSection* 00007ffc`bf4ccd70 KERNELBASE!FindActCtxSectionStringW (void) 00007ffc`bf4b50f0 KERNELBASE!FindActCtxSectionGuid (void) 00007ffc`bf4daabb KERNELBASE!_imp_load_FindActCtxSectionGuidWorker (__imp_load_FindActCtxSectionGuidWorker) 00007ffc`bf4da9dc KERNELBASE!IsFindActCtxSectionStringWWorkerPresent (IsFindActCtxSectionStringWWorkerPresent) 00007ffc`bf4db860 KERNELBASE!api_ms_win_core_sidebyside_ansi_l1_1_0_FindActCtxSectionStringA (api_ms_win_core_sidebyside_ansi_l1_1_0_FindActCtxSectionStringA) 00007ffc`bf4dab39 KERNELBASE!_imp_load_FindActCtxSectionStringWWorker (__imp_load_FindActCtxSectionStringWWorker) 00007ffc`bf6cc498 KERNELBASE!_imp_FindActCtxSectionStringWWorker = <no type information> 00007ffc`bf4db860 KERNELBASE!ext_ms_win_kernel32_sidebyside_l1_1_0_FindActCtxSectionGuidWorker (ext_ms_win_kernel32_sidebyside_l1_1_0_FindActCtxSectionGuidWorker) 00007ffc`bf4db860 KERNELBASE!ext_ms_win_kernel32_sidebyside_l1_1_0_FindActCtxSectionStringWWorker (ext_ms_win_kernel32_sidebyside_l1_1_0_FindActCtxSectionStringWWorker) 00007ffc`bf6cc4b8 KERNELBASE!_imp_FindActCtxSectionGuidWorker = <no type information> 00007ffc`bf4da9dc KERNELBASE!IsFindActCtxSectionGuidWorkerPresent (IsFindActCtxSectionGuidWorkerPresent)
なので、今回のケースがどの関数でそのエラーが出ているのかを特定してみては?
それを特定できれば、自分のプログラムのどこの処理がきっかけになっているのか、特定できると思います。ちなみに。。。。
添付した API リストは "WinDbg Preview" で explorer.exe プロセスにアタッチして採取しましたが、Visual Studio でも同様に確認できると思います。
(Visual Studio でデバッグしたことはありませんけど。)
- 回答としてマーク mr.setup 2019年10月30日 8:31
-
mr.setupさん、こんにちは。フォーラムオペレーターのHarukaです。
ご返信いただきありがとうございます。
ご説明によると、エラーメッセージは再配布可能なパッケージが原因である可能性があります。
次の提案を試してみてください。
コンピューターに既に存在するMicrosoft Visual C ++ 2005および2008の再配布可能なパッケージの場合、
Microsoft Visual C ++ 2005および2008の新しいサービスパッケージをダウンロードしてインストールできます。
ダウンロードリンクは次のとおりです。
Microsoft Visual C++ 2005 Service Pack 1 再頒布可能パッケージ MFC のセキュリティ更新プログラム
Microsoft Visual C++ 2008 Service Pack 1 再頒布可能パッケージ MFC のセキュリティ更新プログラム
インストールが完了したら、コンピュータを再起動し、管理者で VS を使用することをお勧めします。
どうぞよろしくお願いいたします。MSDN/ TechNet Community Support Haruka
~参考になった投稿には「回答としてマーク」をご設定ください。なかった場合は「回答としてマークされていない」も設定できます。同じ問題で後から参照した方が、情報を見つけやすくなりますので、 ご協力くださいますようお願いいたします。また、MSDNサポートに賛辞や苦情がある場合は、MSDNFSF@microsoft.comまでお気軽にお問い合わせください。~- 回答としてマーク mr.setup 2019年10月30日 8:31
-
やっと解消されました。
その前に
・お馬鹿さん
>今回のケースがどの関数でそのエラーが出ているのかを特定してみては?
はい、その点について質問前に試みてはいたのですが、少なくとも自分の方から明示的に呼んでいる関数がトリガーとなっているのかどうかすらあいまいな状態でした。
アプリケーション開始時、比較的最初の方で、だいたいのタイミングはあるのですが、正確なところは1行ずつステップ実行しても出るタイミングが起動するたびにかわり、一致しないのです。
直接的にはOS側のdllが原因なため、それ用の特殊な下準備をしなければ詳細を探ることも難しい印象だったため、不安要因が大きかったので躊躇していました。
・Haruka6002さん
はい、それらのことについてもすでに全部試していました。
しかし、管理者権限で起動はしなくていいならその方が変なプレッシャーがないため、その方向で行けないか調べていました。管理者権限でないケースではここまでの内容込みで解消できなかったためご質問させて頂いた次第です。
-------------------------------------------
実際に解消に至った行動ですが
古いバージョンのVisual Studioをアンインストールしたら直りました。
具体的にはVisual Studio 2012です。
なお記載していませんでしたが、一応書いておくとエラーメッセージが出ていたのは2015 Communityでした。
2015はこのPCでは最近はメインとして使っていました。
(※エラーが出ていた時に他のバージョンではどうだったかは調べていませんでした)
以下のページを参考にさせていただきました
Visual Studio 2012 のアンインストール手順
なぜ解消されたか、なぜ発生していたか、詳細の理由までは不明です。
最近までは入ってても大丈夫だったはずなので、Visual Studio 2012と2015だけでは起こらないはずで、正確にはやはり別の要因があるはずです。
なお、折角なのでこの機に使わなくなっていた2013もアンインストールしてみようかと思い、検索したページ
の手順を実行したのですが、完全に全体を読まずに早とちりしていたのですが、このVisual Studio Uninstallerというのは全部のバージョンに対して効果があるようで、消すつもりのなかった2015まで消してしまいました。
2015に留まっていた最大の要因はDirect 3D 11のCompute Shaderで検証するのが極めて面倒な、GPUでの処理の検証をしたかったので、CUDAを導入したことがあったのですが、その際の公式対応が2015までだったので……
という経緯だったのですが、先日チェックしたところ新しい方のバージョンでは2017は既に対応済みな感じになってるっぽかったので、この際ということで昨日2017をインストールしました。
結果としてまた別の課題が生じてる状況にはなったのですが、少なくともこの質問の件、FindActCtxSection絡みのメッセージに関しては、2017でも、何度かWindowsを再起動しても今の所全然出ていないことを確認しています。
原因の完全究明まではしきれませんでしたが、直った手順自体はかなり絞り込めてることと、直ったためこれ以上の調査は困難なこともあり今回の質問はこれで解決とさせていただきます。
お二方、どうもありがとうございました。
すべての返信
-
VC++ 再頒布可能パッケージをアンインストール・インストールを繰り返したり
Visual Strudioの修復インストールを行ったり
溜まってたWindows Updateをインストールしたり
色んなことやりながら何度もWindowsの再起動を挟んでても全然ダメだったのが、さっき出なくなりました。
色々やったのですが何がトリガーだったかは不明です。
ただ朝までは出てたと思うので帰って来てからやったことのうちついさっきの事を振り返ってみると全く別件で携帯端末がUSBで読めなくなってたので、当該携帯端末のドライバをそのサイトからダウンロードして再インストール、およびデバイスドライバーで色々やってみたけどもなかなか直らなくて念のため再起動→このときいつも止まらなかったところで止まってしばらく待っても動かなくなったので電源ボタンで強制シャットダウン
その後もう一度電源を押して再起動
デバイスマネージャで
ドライバーソフトウエアの更新
↓
コンピューター上のデバイスドライバーの一覧から選択します
↓
MTP USBデバイス
↓
次へ
これでUSBで認識する状態に戻りました。
それで気づいたら、全く関係ないかもしれないVisual C++のデバッガで、表題のメッセージが出なくなってました。
意味は不明です。
なお、Visual Studioを通常起動だと出てた時でも、管理者権限での起動だと出てませんでした。
これもまた、正確な意味は不明です。
一応メッセージが出るという事自体は直った(?)ようなのですが、全然すっきりしてない感じですし、全く関係ない内容である可能性も高いので、この自分の追加報告を「回答としてマーク」するとかは現状では保留またはパスさせてください。
あまりに長い事他に返信がつかないようであれば、だいぶ後で「解決済み」みたいな意味合いでやるかもしれないですが
もし有力情報がおありでしたら引き続きお待ちしております。
追記:
と思ったら、もう一度OSを再起動したらやっぱりまた出ました。
常に出なくなってた時はインジケーターの表示内容が明らかにいつもより少なかったという点を踏まえると、起動時に何かが実行失敗状態になったので通常のバグ動作が発生しない状態になってた可能性があります。バックグラウンドの何かがトリガーになってる可能性が上がったことはほんの少しだけ前進しましたが、まだ完全解決は出来てないことには変わりないようです。
Visual Studioを管理者権限で起動すればバグメッセージが出なくなることに変わりはありません。
- 編集済み mr.setup 2019年10月9日 21:57 再起動したら状況が変わったため
-
mr.setupさん、こんにちは。フォーラムオペレーターのHarukaです。
MSDNフォーラムにご投稿くださいましてありがとうございます。詳細な状況をご提供いただきありがとうございます。その後のご状況いかがでしょうか。追加でご確認いただいたことなどあれば、追記いただくことで回答がつきやすくなります。また、英語とはなりますが米国のフォーラムに投稿いただくこともご検討ください。私共でもご案内できる情報がないか確認いたします。どうぞよろしくお願いします。
MSDN/ TechNet Community Support Haruka
~参考になった投稿には「回答としてマーク」をご設定ください。なかった場合は「回答としてマークされていない」も設定できます。同じ問題で後から参照した方が、情報を見つけやすくなりますので、 ご協力くださいますようお願いいたします。また、MSDNサポートに賛辞や苦情がある場合は、MSDNFSF@microsoft.comまでお気軽にお問い合わせください。~- 回答としてマーク mr.setup 2019年10月30日 8:31
-
どうもありがとうございます。
今回の件に関してはその後の進展は現在ありません。そして他にやるべきことが色々出来ましてくそ忙しくなった(なりつつある)ため、しばらく最優先事項から順番に時間を割り振らないといけない状況です。予定ではあと1週間前後あると色々落ち着く「可能性」がありますが、時間に猶予が出来てそれまで未解決ならあっちでも聞いてみることにします。
※よくないマルチポスト扱いになる可能性を警戒していましたが、そういっていただけると助かります。
※もっとも、この場合解決できてない上にある程度の時間はすでに待っているので、質問するなら説明つきでリンク貼るなどで対処させて頂くことにします。いずれにせよ、しばらくお待ちください。
- 編集済み mr.setup 2019年10月16日 15:09
-
The message related to FindActCtxSection is now displayed when debugging in Visual C ++
いずれかで解決した場合はもう片方に情報を追記し、両方解決済みとさせていただきます。
-
FindActCtxSection* は kernel32.dll および kernelbase.dll に実装されているようですが、* 部分には色んなケースが考えられるようです。
0:126> x kernel32!*FindActCtxSection* 00007ffc`c0d70234 KERNEL32!BasepFindActCtxSection_CheckAndConvertParameters (void) 00007ffc`c0d70e50 KERNEL32!FindActCtxSectionGuidWorker (void) 00007ffc`c0d7100c KERNEL32!BasepFindActCtxSection_FillOutReturnData (void) 00007ffc`c0dd89f0 KERNEL32!_imp_FindActCtxSectionStringW = <no type information> 00007ffc`c0dbdf60 KERNEL32!FindActCtxSectionStringA (FindActCtxSectionStringA) 00007ffc`c0d7b2e0 KERNEL32!FindActCtxSectionGuidStub (FindActCtxSectionGuidStub) 00007ffc`c0d700f0 KERNEL32!FindActCtxSectionStringWWorker (FindActCtxSectionStringWWorker) 00007ffc`c0d7f030 KERNEL32!FindActCtxSectionStringWStub (FindActCtxSectionStringWStub) 00007ffc`c0d70168 KERNEL32!BasepFindActCtxSectionString (BasepFindActCtxSectionString) 00007ffc`c0dd89f8 KERNEL32!_imp_FindActCtxSectionGuid = <no type information> 0:126> x kernelbase!*FindActCtxSection* 00007ffc`bf4ccd70 KERNELBASE!FindActCtxSectionStringW (void) 00007ffc`bf4b50f0 KERNELBASE!FindActCtxSectionGuid (void) 00007ffc`bf4daabb KERNELBASE!_imp_load_FindActCtxSectionGuidWorker (__imp_load_FindActCtxSectionGuidWorker) 00007ffc`bf4da9dc KERNELBASE!IsFindActCtxSectionStringWWorkerPresent (IsFindActCtxSectionStringWWorkerPresent) 00007ffc`bf4db860 KERNELBASE!api_ms_win_core_sidebyside_ansi_l1_1_0_FindActCtxSectionStringA (api_ms_win_core_sidebyside_ansi_l1_1_0_FindActCtxSectionStringA) 00007ffc`bf4dab39 KERNELBASE!_imp_load_FindActCtxSectionStringWWorker (__imp_load_FindActCtxSectionStringWWorker) 00007ffc`bf6cc498 KERNELBASE!_imp_FindActCtxSectionStringWWorker = <no type information> 00007ffc`bf4db860 KERNELBASE!ext_ms_win_kernel32_sidebyside_l1_1_0_FindActCtxSectionGuidWorker (ext_ms_win_kernel32_sidebyside_l1_1_0_FindActCtxSectionGuidWorker) 00007ffc`bf4db860 KERNELBASE!ext_ms_win_kernel32_sidebyside_l1_1_0_FindActCtxSectionStringWWorker (ext_ms_win_kernel32_sidebyside_l1_1_0_FindActCtxSectionStringWWorker) 00007ffc`bf6cc4b8 KERNELBASE!_imp_FindActCtxSectionGuidWorker = <no type information> 00007ffc`bf4da9dc KERNELBASE!IsFindActCtxSectionGuidWorkerPresent (IsFindActCtxSectionGuidWorkerPresent)
なので、今回のケースがどの関数でそのエラーが出ているのかを特定してみては?
それを特定できれば、自分のプログラムのどこの処理がきっかけになっているのか、特定できると思います。ちなみに。。。。
添付した API リストは "WinDbg Preview" で explorer.exe プロセスにアタッチして採取しましたが、Visual Studio でも同様に確認できると思います。
(Visual Studio でデバッグしたことはありませんけど。)
- 回答としてマーク mr.setup 2019年10月30日 8:31
-
mr.setupさん、こんにちは。フォーラムオペレーターのHarukaです。
ご返信いただきありがとうございます。
ご説明によると、エラーメッセージは再配布可能なパッケージが原因である可能性があります。
次の提案を試してみてください。
コンピューターに既に存在するMicrosoft Visual C ++ 2005および2008の再配布可能なパッケージの場合、
Microsoft Visual C ++ 2005および2008の新しいサービスパッケージをダウンロードしてインストールできます。
ダウンロードリンクは次のとおりです。
Microsoft Visual C++ 2005 Service Pack 1 再頒布可能パッケージ MFC のセキュリティ更新プログラム
Microsoft Visual C++ 2008 Service Pack 1 再頒布可能パッケージ MFC のセキュリティ更新プログラム
インストールが完了したら、コンピュータを再起動し、管理者で VS を使用することをお勧めします。
どうぞよろしくお願いいたします。MSDN/ TechNet Community Support Haruka
~参考になった投稿には「回答としてマーク」をご設定ください。なかった場合は「回答としてマークされていない」も設定できます。同じ問題で後から参照した方が、情報を見つけやすくなりますので、 ご協力くださいますようお願いいたします。また、MSDNサポートに賛辞や苦情がある場合は、MSDNFSF@microsoft.comまでお気軽にお問い合わせください。~- 回答としてマーク mr.setup 2019年10月30日 8:31
-
やっと解消されました。
その前に
・お馬鹿さん
>今回のケースがどの関数でそのエラーが出ているのかを特定してみては?
はい、その点について質問前に試みてはいたのですが、少なくとも自分の方から明示的に呼んでいる関数がトリガーとなっているのかどうかすらあいまいな状態でした。
アプリケーション開始時、比較的最初の方で、だいたいのタイミングはあるのですが、正確なところは1行ずつステップ実行しても出るタイミングが起動するたびにかわり、一致しないのです。
直接的にはOS側のdllが原因なため、それ用の特殊な下準備をしなければ詳細を探ることも難しい印象だったため、不安要因が大きかったので躊躇していました。
・Haruka6002さん
はい、それらのことについてもすでに全部試していました。
しかし、管理者権限で起動はしなくていいならその方が変なプレッシャーがないため、その方向で行けないか調べていました。管理者権限でないケースではここまでの内容込みで解消できなかったためご質問させて頂いた次第です。
-------------------------------------------
実際に解消に至った行動ですが
古いバージョンのVisual Studioをアンインストールしたら直りました。
具体的にはVisual Studio 2012です。
なお記載していませんでしたが、一応書いておくとエラーメッセージが出ていたのは2015 Communityでした。
2015はこのPCでは最近はメインとして使っていました。
(※エラーが出ていた時に他のバージョンではどうだったかは調べていませんでした)
以下のページを参考にさせていただきました
Visual Studio 2012 のアンインストール手順
なぜ解消されたか、なぜ発生していたか、詳細の理由までは不明です。
最近までは入ってても大丈夫だったはずなので、Visual Studio 2012と2015だけでは起こらないはずで、正確にはやはり別の要因があるはずです。
なお、折角なのでこの機に使わなくなっていた2013もアンインストールしてみようかと思い、検索したページ
の手順を実行したのですが、完全に全体を読まずに早とちりしていたのですが、このVisual Studio Uninstallerというのは全部のバージョンに対して効果があるようで、消すつもりのなかった2015まで消してしまいました。
2015に留まっていた最大の要因はDirect 3D 11のCompute Shaderで検証するのが極めて面倒な、GPUでの処理の検証をしたかったので、CUDAを導入したことがあったのですが、その際の公式対応が2015までだったので……
という経緯だったのですが、先日チェックしたところ新しい方のバージョンでは2017は既に対応済みな感じになってるっぽかったので、この際ということで昨日2017をインストールしました。
結果としてまた別の課題が生じてる状況にはなったのですが、少なくともこの質問の件、FindActCtxSection絡みのメッセージに関しては、2017でも、何度かWindowsを再起動しても今の所全然出ていないことを確認しています。
原因の完全究明まではしきれませんでしたが、直った手順自体はかなり絞り込めてることと、直ったためこれ以上の調査は困難なこともあり今回の質問はこれで解決とさせていただきます。
お二方、どうもありがとうございました。