📜 ⬆️ ⬇️

Firefox does not fit in 32-bit address space

Mozilla developers faced a problem: an error crashes during the mozilla-inbound compilation process under Windows (see bug 709193 ).

nswindowmediator.cpp (821): fatal error C1001: An internal error has occurred in the compiler. LINK: fatal error LNK1000: Internal error during IMAGE :: BuildImage

The investigation revealed that the linker went beyond the virtual address space during optimization. It lacks 3 GB of memory, which 32-bit Windows allocates to an application.

A similar problem arose before the developers in early 2010, when the linker went beyond 2 GB, but then the problem was solved by switching to the 3 GB limit (see bug 543034 ), now there is no such option.

As a temporary solution, the developers froze the addition of functionality to mozilla-inbound and excluded from the build several new modules: Graphite, libreg and SPDY . Now think what to do next. In this situation, there are several options: 1) to allocate part of the libxul code into separate libraries; 2) try to upgrade to MSVC 2010; 3) compile 32-bit builds on a 64-bit OS. The problem is now being discussed on mozilla.dev.platform.
')
For the advanced version of Firefox - the 32-bit version for Windows, which is used by 90% of the audience - a two-step optimization procedure is used on profiles (Profile-Guided Optimization, PGO). After the first pass of the compiler, the profile of the browser is compiled in a real environment, after which the final compilation of the optimized program is carried out. Mozilla switched to PGO four years ago, a new method improved performance by about 10%.

Source: https://habr.com/ru/post/134525/


All Articles