Firefoxは32ビットアドレス空間に適合しません

Mozilla開発者が問題に遭遇しました: mozilla-inbound for Windowsのコンパイル中にエラーが発生します(バグ709193を参照)。



nswindowmediator.cpp(821):致命的なエラーC1001:コンパイラで内部エラーが発生しました。 リンク:致命的なエラーLNK1000:IMAGE :: BuildImage中の内部エラー


調査の結果、最適化中にリンカが仮想アドレス空間を超えることが判明しました。 アプリケーションが32ビットWindowsを割り当てるための3 GBのメモリが不足しています。



同様の問題は、リンカが2 GBを超えた2010年初頭に開発者の前に発生しましたが、3 GBの制限に切り替えることで問題は解決しました(バグ543034を参照)。



一時的な解決策として、開発者はmozilla-inboundに機能を追加することを凍結し、ビルドからいくつかの新しいモジュール:Graphite、libreg、およびSPDYを除外しました。 今、彼らは次に何をすべきかを考えます。 この状況では、いくつかのオプションがあります。1)libxulコードの一部を個別のライブラリに分割します。 2)MSVC 2010への切り替えを試みます。 3)64ビットOSで32ビットビルドをコンパイルします。 この問題はmozilla.dev.platformで議論されています。



Firefoxの高度なバージョン(Windowsの32ビットバージョンで、対象者の90%が使用)では、2段階の最適化手順がプロファイルで使用されます(Profile-Guided Optimization、PGO)。 コンパイラーの最初のパスの後、ブラウザープロファイルが実際の環境でコンパイルされ、その後、最適化されたプログラムの最終的なコンパイルが実行されます。 Mozillaは4年前にPGOに切り替えました。新しい方法によりパフォーマンスが約10%向上しました。



All Articles