2009-05-07 15 views
0

ソリューションファイルをビルドするためにdevenv.exeを起動するnightly build DOSバッチスクリプトがあります。断続的に私はdevenv.comのクラッシュを観察する。私はDW20.exe "あなたの痛みを共有"ダイアログを取得します。断続的にdevenv.comをクラッシュさせるコールスタックを取得するにはどうすればよいですか?

1)[デバッグ]ボタンを押すと、通常の「デバッガを選択」ウィンドウは表示されません。むしろ、それは何もしません。

2)Visual Studioを起動してdevenv.comに接続しようとすると、アプリケーションがデッドロックしているか、操作が完了するのを待っているようです。 (私はDW20.exeによってデバッグされていると思うので)

まともなコールスタックを取得するにはどうすればよいですか?私は添付するWinDBGのを得ることに成功した

EDIT

。 kコマンドを実行しました。以下は、コンパイラチームに渡すことができる意味のあるもののようですか?現在の例外を見る方法はありますか?

(e90.fb8): Break instruction exception - code 80000003 (!!! second chance !!!) 
eax=0012ccb8 ebx=04ed2750 ecx=0111bdc4 edx=5a57f004 esi=00000000 edi=14ed1000 
eip=77e4bef7 esp=0012ccb4 ebp=0012cd08 iopl=0   nv up ei pl zr na pe nc 
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000    efl=00000246 
*** ERROR: Symbol file could not be found. Defaulted to export symbols for C:\WINDOWS\system32\kernel32.dll - 
kernel32!RaiseException+0x3c: 
77e4bef7 5e    pop  esi 
Missing image name, possible paged-out or corrupt data. 
Missing image name, possible paged-out or corrupt data. 
Missing image name, possible paged-out or corrupt data. 
Missing image name, possible paged-out or corrupt data. 
0:000> k 
ChildEBP RetAddr 
WARNING: Stack unwind information not available. Following frames may be wrong. 
0012cd08 5a760cf1 kernel32!RaiseException+0x3c 
0012cd58 5a766105 cslangsvc!InMemoryCompile+0x4c6c1 
0012cd7c 5a767375 cslangsvc!InMemoryCompile+0x51ad5 
0012cd84 5a767637 cslangsvc!InMemoryCompile+0x52d45 
00000000 00000000 cslangsvc!InMemoryCompile+0x53007 

私は!analyze -vを動作させようとしています。

0:000> !analyze -v 
******************************************************************************* 
*                    * 
*      Exception Analysis         * 
*                    * 
******************************************************************************* 

***** OS symbols are WRONG. Please fix symbols to do analysis. 

************************************************************************* 
***                 *** 
***                 *** 
*** Your debugger is not using the correct symbols     *** 
***                 *** 
*** In order for this command to work properly, your symbol path *** 
*** must point to .pdb files that have full type information.  *** 
***                 *** 
*** Certain .pdb files (such as the public OS symbols) do not  *** 
*** contain the required information. Contact the group that  *** 
*** provided you with these symbols if you need this command to *** 
*** work.               *** 
***                 *** 
*** Type referenced: ntdll!_PEB         *** 
***                 *** 
************************************************************************* 
c0000005 Exception in ext.analyze debugger extension. 
PC: 014d7875 VA: 00000000 R/W: 0 Parameter: 0001003f 

EDIT 2

私はWinDBGのにこれらの素晴らしいSOSの拡張があることが分かりました。どうやら私はC#コンパイラをデバッグするためにそれらを使用することができます...

0:000> !PrintException 
There is no current managed exception on this thread 
0:000> !clrstack 
OS Thread Id: 0x9fc (0) 
ESP  EIP  
0012ee08 77e4bef7 [ComPlusMethodFrameGeneric: 0012ee08] Microsoft.Build.Tasks.Hosting.ICscHostObject.Compile() 
0012ee18 6be671ab Microsoft.Build.Tasks.Csc.CallHostObjectToExecute() 
0012ee48 6c0aed17 Microsoft.Build.Utilities.ToolTask.Execute() 
0012ee7c 6bcbb348 Microsoft.Build.BuildEngine.TaskEngine.ExecuteTask(ExecutionMode, System.Collections.Hashtable, Microsoft.Build.BuildEngine.BuildPropertyGroup, Boolean ByRef) 
0012ef24 6bcadf87 Microsoft.Build.BuildEngine.Target.ExecuteAllTasks(Microsoft.Build.BuildEngine.DependencyAnalysisResult, System.Collections.Hashtable, System.Collections.Hashtable, Microsoft.Build.BuildEngine.ItemBucket, System.Collections.ArrayList, Microsoft.Build.BuildEngine.BuildPropertyGroup) 
0012efa0 6bcac7c0 Microsoft.Build.BuildEngine.Target.ExecuteAllTasks() 
0012efec 6bcad05b Microsoft.Build.BuildEngine.Target.Build(System.Collections.IDictionary) 
0012f070 6bcacfa6 Microsoft.Build.BuildEngine.Target.Build(System.Collections.IDictionary) 
0012f0f4 6bcacfa6 Microsoft.Build.BuildEngine.Target.Build(System.Collections.IDictionary) 
0012f178 6bcacfa6 Microsoft.Build.BuildEngine.Target.Build(System.Collections.IDictionary) 
0012f1fc 6bc9b20d Microsoft.Build.BuildEngine.Project.DoBuild(System.String[], System.Collections.IDictionary, Boolean) 
0012f250 6bca2134 Microsoft.Build.BuildEngine.Engine.BuildProject(Microsoft.Build.BuildEngine.Project, System.String[], System.Collections.IDictionary, Microsoft.Build.BuildEngine.BuildSettings, Boolean) 
0012f2ac 6bc9af03 Microsoft.Build.BuildEngine.Project.Build(System.String[], System.Collections.IDictionary) 
0012f2c0 04711a36 Microsoft.VisualStudio.Build.ComInteropWrapper.ProjectShim.BuildTarget(System.String, System.Collections.IDictionary) 
0012f4f4 79f68cde [GCFrame: 0012f4f4] 
0012f650 79f68cde [ComMethodFrame: 0012f650] 

私はまだ例外の内容を調べる方法を探しています。 !PrintExceptionは例外を検出しませんでした。

答えて

0

これは少しあります私はそれを返信として投稿します。これは、私の問題に応じて、Microsoft Connectのサイトから取得したものです。 Readerは、それが関連するかもしれません:

日:マイクロソフト接続からの木、2009年5月7日午後7時14分52秒-0700

が挨拶を!

この通知はフィードバック項目に対して生成されました:Microsoft Connectサイトで投稿したNightly build problems(バケット365749762)。

Visual Studio 2005でこの問題を報告していただきありがとうございます。ご提供いただいたダンプに感謝します。

問題は、DevEnvがあなたのビルドを実行するために呼び出しているcslangsvc.dll(インプロセスのC#コンパイラ)にあります。

この問題を回避するには、 夜間ビルドを行う代わりにMSBuildを使用することをお勧めします。DevEnv/buildを自動化するよりも堅牢である必要があります。具体的には、MSBuildはcslangsvc.dllではなくコンパイルにcsc.exeを使用するため、この特定の問題を避けることができます。

cslangsvcの問題を修正するためにVS 2005のリリースが追加される可能性は低いので、このバグは修正されませんが、使用しても問題が解決しない場合は再起動してくださいMSBuild。

この問題に関するすべての情報をお返事ありがとうございます。

アレックス・ターナー プログラムマネージャ のVisual C#コンパイラ

+1

うわー - それはMSからかなり素早く回っています。そして、PMによっても、フロントラインのサポートが嫌になるわけではありません。私はそれがVS2005上であることを考えれば、彼らが問題を解決しないことに驚くことではない。回避策があなたのためのトリックを望むことを願っています。 –

+0

msbuildを使用すると、ビルドプロセスの安定性が大幅に向上しました。 – GregC

1

あなたは(NTSD/CDBのために)-iaeオプションまたはJIT /のAeDebugデバッガもそのパッケージからのデバッガのいずれかを持っている(WinDBGのための)-Iオプションを使用し、その後Debugging Tools for Windowsをインストールしてみてください。

+0

ありがとうございます。私はちょうどそれをやった。再現:コンパイラがクラッシュするのを待っています。 – GregC

+0

質問が更新されました。そこに別の質問を作成したいのであれば教えてください。 – GregC

+0

ネイティブコードで例外が発生しているように見えます。「.symfix」コマンドを使用して、Microsoftのサーバーからシンボルを取得すると、より良い「!それ以外に、私はcslangsvcの詳細や、C#コンパイルで起こることに関連する何かについては何も知らない。しかし、マイクロソフトはクラッシュダンプに興味があるかもしれません( ".dump"コマンドを使用してください)。 –

0

最後に、エラーの発生したコンパイラの例外タイプと呼び出しスタックに着いた。私は完全なダンプファイル(.dump/ma c:\ myCSCdump.dmp)を保存し、VS2005の他のプロジェクトファイルを開くときと同じようにダンプファイルを開くことでこれを行いました。 cslangsvc.dll

[email protected]() + 0x3c bytes 

ALLOCHOST :: ThrowOutOfMemoryException()+ 0x10をバイト
cslangsvc.dllページヒープ:: AllocPages()+ 0xc1fd8バイト:コールスタックウィンドウに次のように作成、実行ボタンを押します!
cslangsvc.dll SYMTBL :: GrowTable()+ 0x5bバイト cslangsvc.dll BSYMMGR :: AddChildは()+ 0x3bバイト cslangsvc.dll BSYMMGR :: CreateGlobalSym()+ 0x2baバイト cslangsvc.dll BSYMMGR!!!!: :CreateMethod()+ 0xc bytes
cslangsvc.dll!IMPORTER :: ImportMethod()+ 0x1d9 cslangsvc.dll!コンパイラ:: ForceAggStates()+ 0x8Eがバイト
cslangsvc.dllバイト0x8dバイト
cslangsvc.dll!IMPORTER :: DefineImportedType()+ 0x3b2バイト cslangsvc.dll!CLSDREC :: prepareAggregate()+! COMPILER :: ForceAggStates()+ 0x127 bytes cslangsvc.dll!COMPILER :: EnsureState()+ 0x2e bytes cslangsvc.dll!CLSDREC :: CheckForTypeErrors()+ 0x23バイト
cslangsvc.dll!CLSDREC :: CheckForTypeErrors()+ 0x2baバイト
cslangsvc.dll!CLSDREC :: CheckForTypeErrors()+ 0x80のバイト
cslangsvc.dll!CLSDREC :: CheckForTypeErrors( )+ 0x8a
cslangsvc.dllバイト!CLSDREC :: CheckForTypeErrors()+ 0x8aバイト
cslangsvc.dll!CLSDREC :: CheckForTypeErrors()+ 0x8aバイト
cslangsvc.dll!コンパイラ:: CheckForTypeErrors()+ 0x100のバイト cslangsvc.dll!COMPILER :: CompileAll()+ 0x546 bytes cslangsvc.dll!COMPILER :: Compile()+ 0x7c bytes cslangsvc.dll!CController :: RunCompiler()+ 0x177バイト cslangsvc.dll!CController ::コンパイル()+ 0x16バイト
cslangsvc.dll!CCSharpProjectSite :: BuildProjectCore()+ 0x5aバイト
cslangsvc.dll!CProjectSite :: BuildProject()+ 0x11をバイト
csproj。 DLL!CCSharpBuildCompiler :: DoMainBuild()+ 0x88バイト
csproj.dll!CCscMSBuildHostObject ::コンパイル()+の0x4Eバイト
[email protected]()+ 0x171バイト