tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re: Com Surrogate
投稿日: 2020/05/09(Sat) 21:03
投稿者魔界の仮面弁士
> (1)ComSurrogateがどういうときに発生(終了)するものなのしょうか

"C:\Windows\System32\dllhost.exe"
"C:\Windows\SysWOW64\dllhost.exe"
のプロパティを開いてみると、詳細タブに "COM Surrogate" の文字が見えますね。

dllhost は、ActiveX (COM) コンポーネントを専用プロセスで実行させるための実行ホストとして動作し、
親プロセスから呼び出された後、呼び出し元のかわり(surrogate)に COM ライブラリをロードします。

……という認識なのですが、詳しく書かれた情報があまり見当たらない。orz
https://docs.microsoft.com/en-us/windows/win32/cossdk/debugging-compiled-visual-basic-components
https://j.mp/2YPSiP0


> CPUリソースは0%メモリは0.5MB
> それで、調べたところ
> ほぼこのプログラムAが原因というところまで突き止めました。

dllhost 自体は中継役なので、それによって何が呼び出されているのかが重要ですね。

タスクマネージャーのプロセス タブで、COM Surrogate を右クリックして、
[詳細の表示]を選択すると、[詳細]タブ内の該当プロセスが選択されます。
その中の "コマンドライン" 列を確認してみてください。
(コマンドライン列が無い場合は、ListView の列ヘッダーを右クリックして「列の選択」を選びます)

もしもコマンドラインの内容が
DllHost.exe /Processid:{guid値}
で示されているのなら、その guid から追加の情報が得られるかもしれません。例えば…

{02D4B3F1-FD88-11D1-960D-00805FC79235} なら COM+ System Application サービス (COMSysApp)
{133EAC4F-5891-4D04-BADA-D84870380A80} なら Shell Create Object Task Server
{3EB3C877-1F16-487C-9050-104DBCD66683} なら WinInetCacheServer
{973D20D7-562D-44B9-B70B-5A0F49CCDF3F} なら WebPlatformStorageServer
{AB8902B4-09CA-4BB6-B78D-A8F59079A8D5} なら Thumbnail Cache Class Factory for Out of Proc Server


※手元に VB6 環境が無いため、WOW64 で同じようなコマンドラインになるのかどうかは未確認。


> プログラムA----
> Dim WSH As New WshShell
> WSH.Run hogehoge.exe, , True
> Set WSH = Nothing
> ---まで
> hogehoge.exeもvb6で作成したプログラムで、
> xml関係の送受信をやっています。本来はdllでまとめるべき物ですが
> 頻繁に変更があるので、exeで作成してます

プログラムA から起動した場合のみに発生するのか、
それとも hogehoge.exe を単体実行した場合にも発生するのか、
問題の切り分けは済んでいますか?

もし hogehoge.exe 側だとしたら、そのアプリのどの時点で再現するのかを調べてみてください。
スタートアップ(Sub Main)の一行目などで既に発生するなら、依存ファイル(参照設定など)を
減らした実験用 exe を用意して、再現性をテストしてみるとか。

また、親プロセスをタスク スケジューラーから自動起動しているような場合は、
デスクトップからのダブルクリック等からの通常起動の場合にも同じ結果になるのかを
比較してみてください。管理者モードで起動しているかどうか、互換モードの有無で変わるのかも確認。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。