de-vraag
  • 質問
  • タグ
  • ユーザー
通知:
報酬:
登録
登録すると、質問に対する返答やコメントが通知されます。
ログイン
すでにアカウントをお持ちの方は、ログインして新しい通知を確認してください。
追加された質問、回答、コメントには報酬があります。
さらに
ソース
編集
 Ludwo
Ludwo
質問

エラーMSB4166:子ノードが時期尚早に終了しました。シャットダウン

時には私のビルドがこのエラーで失敗することがあります。

 0>MSBUILD : error MSB4166: Child node "3" exited prematurely. Shutting down.

それは完全にランダムであるように思われ、私は自由にそれを再現することができませんでした。私はVS2010 Win7 x64 MSBuild 4.0を実行していますが、この問題はプラットフォームやOSに依存しないようです。私は並列にソリューションを構築しています(/ mスイッチ+ BuildInParallel = True)。私は800以上のプロジェクトを含むアプリケーションをコンパイルしているので、この機能を無効にしたくありません。どのようにそれを解決するための任意のアイデア?

編集:.NET 4.5の開発者のプレビューをインストールすると、MSBuild 4.5でエラーログが改善され、エラー文字列は次のようになります。

error MSB4166: Child node "3" exited prematurely. Shutting down. Diagnostic information may be found in files in the temporary files directory named MSBuild_*.failure.txt

Tempフォルダにエラーログファイルがあります。これはMSBuild _ *。failure.txtファイルの内容です:

System.InvalidOperationException: BuildEventArgs has formatted message while serializing!
   at Microsoft.Build.Framework.LazyFormattedBuildEventArgs.WriteToStream(BinaryWriter writer)
   at Microsoft.Build.Framework.BuildMessageEventArgs.WriteToStream(BinaryWriter writer)
   at Microsoft.Build.Shared.LogMessagePacketBase.WriteToStream(INodePacketTranslator translator)
   at Microsoft.Build.BackEnd.NodeEndpointOutOfProcBase.PacketPumpProc()
27 2011-10-27T13:37:44+00:00 4
 Ludwo
Ludwo
編集された質問 14日 11月 2011 в 1:58
プログラミング
msbuild
multithreading
msbuild-4.0
Kevin Vermeer
2日 11月 2011 в 2:56
2011-11-02T14:56:53+00:00
さらに
ソース
編集
#56789377

質問へのコメントの交換で議論されているように:

奇妙なことは、私が64bit Win7ノートパソコンに64bit MSBuildを使用していて、物理的で無制限の仮想RAMを4GB搭載していることです。 MSBuildプロセスは約1GBのRAM(最大1,5GB)を使用しています。 - Ludwo 4時間前に

32ビットMSBuildを32ビットWinXPデスクトップで使用しています.2GBの物理メモリと同様に無制限の仮想RAMがあります。奇妙なことは、物理RAMが完全に使い果たされたときにクラッシュが発生することです。それは私の仮想メモリがゼロのようなものです! - Kevin Vermeer 3時間前

はい、MSBuildが仮想メモリを使用していないようです:) - Ludwo 2時間前

MSbuildが仮想メモリを使用していなかったようです。私はいくつかのテストを行い(プログラムの束を始めた)、仮想メモリを使用していない何かのように思えました。私はチェックするためにいくつかの検索を行った

Control Panel -> System -> Advanced -> Performance -> Advanced -> Virtual Memory

仮想メモリのサイズをシステム全体に制限する設定が存在することがわかりました。私は、仮想メモリが事実上無限であること、あるいはより正確には32ビットXP上の各プロセスで4 GBと想像していました。私はこの限界に近づいていませんでした。しかし、私の仮想メモリ空​​間は... 0MBに制限されていました。誰もが何をしてもクールではない。

これを変更して最小限の1024 MBと最大4096 MBの仮想メモリを割り当てました。 プロセスエクスプローラに「仮想サイズ」の列を追加しました。 「System Commit」グラフは、物理RAMスティックで使用できる量より多くのメモリを使用していることを示しています。

これは私の問題を解決しました。残念なことに、私のシステムは、メモリをページングしようとするたびに、ほぼ停止するようになりますが、クラッシュよりも優れています。私は並列ビルドを再び有効にしました。私はRAMを残している間に並列化して多くのCPUを使用します(これはほとんどのファイルに当てはまります)。そして、RAMがなくなったらCPU使用量の1%に落ちます。これらのファイルが完了すると、速度が復元されます。

2
0
David Q Hogan
31日 10月 2011 в 7:22
2011-10-31T07:22:35+00:00
さらに
ソース
編集
#56789376

メモリが足りなくなり、ビルドサブプロセスの1つが失敗することがあります。/ m:2を使用して2つの同時ビルドに制限すると、失敗は少なくなりますか? (2つ以上のコアがあると仮定して)

あるいは、別のマシンからいくつかのRAMを借りたり、スワップサイズを増やすことができれば、ビルドマシンにもっと多くのメモリがインストールされていることはあまりありませんか?

1
0
MikeBMcL
5日 11月 2011 в 4:47
2011-11-05T04:47:41+00:00
さらに
ソース
編集
#56789378

おそらくそれは競合状態のビルド相当品でしょうか?

http://blogs.msdn.com/b/msbuild/archive/2007/04/26/building-projects-in-parallel.aspx

ビルドの一部である別のプロジェクト(ProjectReferenceタグではない)の出力に依存するために通常のReferenceタグを使用している場合、プロジェクトXの前に通常プロジェクトXが完了する状況が発生する可能性があります出力)、時には並行して構築されることもあります。その場合、Yが検索するとXの出力が存在せず、Yが失敗します。 MSBuildがそのような状況でどのようなエラー出力を出すかについては何も知ることができません(そして今すぐテストする方法はまだありません)。そうでないかもしれません。

まだ成果の矛盾(しばしば成功する、時には失敗する)は、私のようなものが原因である可能性が高いと思うようになります。

1
0
William Jockusch
30日 7月 2017 в 2:18
2017-07-30T02:18:01+00:00
さらに
ソース
編集
#56789379

私の場合、答えはAntlrを更新することでした。明らかに、これはAntlrをプロジェクトで使用している場合のみ適用されます。

1
0
質問の追加
カテゴリ
すべて
技術情報
文化・レクリエーション
生活・芸術
科学
プロフェッショナル
事業内容
ユーザー
すべて
新しい
人気
1
Roxana Elizabeth CASTILLO Avalos
登録済み 6日前
2
Hideo Nakagawa
登録済み 1週間前
3
Sergiy Tytarenko
登録済み 1週間前
4
shoxrux azadov
登録済み 1週間前
5
Koreets Koreytsev
登録済み 1週間前
RU
© de-vraag :年
ソース
stackoverflow.com
ライセンス cc by-sa 3.0 帰属