svn commit: r280327 - in head/sys: kern vm

Bryan Drewery bdrewery at FreeBSD.org
Sat Mar 28 18:04:27 UTC 2015


On 3/28/2015 12:56 PM, Alan Cox wrote:
> On 03/28/2015 12:29, Bryan Drewery wrote:
>> On 3/27/2015 9:41 PM, Don Lewis wrote:
>>> On 21 Mar, Alan Cox wrote:
>>>> Author: alc
>>>> Date: Sat Mar 21 17:56:55 2015
>>>> New Revision: 280327
>>>> URL: https://svnweb.freebsd.org/changeset/base/280327
>>>>
>>>> Log:
>>>>   Introduce vm_object_color() and use it in mmap(2) to set the color of
>>>>   named objects to zero before the virtual address is selected.  Previously,
>>>>   the color setting was delayed until after the virtual address was
>>>>   selected.  In rtld, this delay effectively prevented the mapping of a
>>>>   shared library's code section using superpages.  Now, for example, we see
>>>>   the first 1 MB of libc's code on armv6 mapped by a superpage after we've
>>>>   gotten through the initial cold misses that bring the first 1 MB of code
>>>>   into memory.  (With the page clustering that we perform on read faults,
>>>>   this happens quickly.)
>>>>   
>>>>   Differential Revision:	https://reviews.freebsd.org/D2013
>>>>   Reviewed by:	jhb, kib
>>>>   Tested by:	Svatopluk Kraus (armv6)
>>>>   MFC after:	6 weeks
>>>>
>>>> Modified:
>>>>   head/sys/kern/kern_exec.c
>>>>   head/sys/vm/vm_fault.c
>>>>   head/sys/vm/vm_mmap.c
>>>>   head/sys/vm/vm_object.h
>>>>   head/sys/vm/vnode_pager.c
>>> This change appears to have partially broken package building.
>>>
>>> I recently set up a package building machine running 11.0-CURRENT
>>> r280642 and found that it was unable to build openjdk7 packages inside
>>> FreeBSD 8.4 and 9.3 poudriere jails, for both i386 and amd64.
>>>
>>> [snip]
>>> Compiling ../generated/adfiles/ad_x86_64_gen.cpp
>>> rm -f ad_x86_64_gen.o
>>> c++ -D_ALLBSD_SOURCE -D_GNU_SOURCE -DAMD64 -DPRODUCT -I. -I/wrkdirs/usr/ports/java/openjdk7/work/openjdk/hotspot/src/share/vm/prims -I/wrkdirs/usr/ports/java/openjdk7/work/openjdk/hotspot/src/share/vm -I/wrkdirs/usr/ports/java/openjdk7/work/openjdk/hotspot/src/share/vm/precompiled -I/wrkdirs/usr/ports/java/openjdk7/work/openjdk/hotspot/src/cpu/x86/vm -I/wrkdirs/usr/ports/java/openjdk7/work/openjdk/hotspot/src/os_cpu/bsd_x86/vm -I/wrkdirs/usr/ports/java/openjdk7/work/openjdk/hotspot/src/os/bsd/vm -I/wrkdirs/usr/ports/java/openjdk7/work/openjdk/hotspot/src/os/posix/vm -I../generated -DHOTSPOT_RELEASE_VERSION="\"24.76-b04\"" -DHOTSPOT_BUILD_TARGET="\"product\"" -DHOTSPOT_BUILD_USER="\"root\"" -DHOTSPOT_LIB_ARCH=\"amd64\" -DHOTSPOT_VM_DISTRO="\"OpenJDK\"" -O2 -pipe -fstack-protector -fno-strict-aliasing -DTARGET_OS_FAMILY_bsd -DTARGET_ARCH_x86 -DTARGET_ARCH_MODEL_x86_64 -DTARGET_OS_ARCH_bsd_x86 -DTARGET_OS_ARCH_MODEL_bsd_x86_64 -DTARGET_COMPILER_gcc -DCOMPILER2 -DCOMPILER1  -fno!
>>>  -rtti -fno-exceptions -pthread -fcheck-new -m64 -pipe -DTARGET_OS_FAMILY_bsd -DTARGET_ARCH_x86 -DTARGET_ARCH_MODEL_x86_64 -DTARGET_OS_ARCH_bsd_x86 -DTARGET_OS_ARCH_MODEL_bsd_x86_64 -DTARGET_COMPILER_gcc -DCOMPILER2 -DCOMPILER1 -fPIC -fno-rtti -fno-exceptions -pthread -fcheck-new -m64 -pipe -O3 -fno-strict-aliasing -DVM_LITTLE_ENDIAN -D_LP64=1 -fno-omit-frame-pointer -DINCLUDE_TRACE=1  -Wpointer-arith -Wconversion -Wsign-compare    -c  -fpch-deps -MMD -MP -MF ../generated/dependencies/ad_x86_64_format.o.d -o ad_x86_64_format.o ../generated/adfiles/ad_x86_64_format.cpp 
>>> c++ -D_ALLBSD_SOURCE -D_GNU_SOURCE -DAMD64 -DPRODUCT -I. -I/wrkdirs/usr/ports/java/openjdk7/work/openjdk/hotspot/src/share/vm/prims -I/wrkdirs/usr/ports/java/openjdk7/work/openjdk/hotspot/src/share/vm -I/wrkdirs/usr/ports/java/openjdk7/work/openjdk/hotspot/src/share/vm/precompiled -I/wrkdirs/usr/ports/java/openjdk7/work/openjdk/hotspot/src/cpu/x86/vm -I/wrkdirs/usr/ports/java/openjdk7/work/openjdk/hotspot/src/os_cpu/bsd_x86/vm -I/wrkdirs/usr/ports/java/openjdk7/work/openjdk/hotspot/src/os/bsd/vm -I/wrkdirs/usr/ports/java/openjdk7/work/openjdk/hotspot/src/os/posix/vm -I../generated -DHOTSPOT_RELEASE_VERSION="\"24.76-b04\"" -DHOTSPOT_BUILD_TARGET="\"product\"" -DHOTSPOT_BUILD_USER="\"root\"" -DHOTSPOT_LIB_ARCH=\"amd64\" -DHOTSPOT_VM_DISTRO="\"OpenJDK\"" -O2 -pipe -fstack-protector -fno-strict-aliasing -DTARGET_OS_FAMILY_bsd -DTARGET_ARCH_x86 -DTARGET_ARCH_MODEL_x86_64 -DTARGET_OS_ARCH_bsd_x86 -DTARGET_OS_ARCH_MODEL_bsd_x86_64 -DTARGET_COMPILER_gcc -DCOMPILER2 -DCOMPILER1  -fno!
>>>  -rtti -fno-exceptions -pthread -fcheck-new -m64 -pipe -DTARGET_OS_FAMILY_bsd -DTARGET_ARCH_x86 -DTARGET_ARCH_MODEL_x86_64 -DTARGET_OS_ARCH_bsd_x86 -DTARGET_OS_ARCH_MODEL_bsd_x86_64 -DTARGET_COMPILER_gcc -DCOMPILER2 -DCOMPILER1 -fPIC -fno-rtti -fno-exceptions -pthread -fcheck-new -m64 -pipe -O3 -fno-strict-aliasing -DVM_LITTLE_ENDIAN -D_LP64=1 -fno-omit-frame-pointer -DINCLUDE_TRACE=1  -Wpointer-arith -Wconversion -Wsign-compare    -c  -fpch-deps -MMD -MP -MF ../generated/dependencies/ad_x86_64_gen.o.d -o ad_x86_64_gen.o ../generated/adfiles/ad_x86_64_gen.cpp 
>>> Compiling ../generated/adfiles/ad_x86_64_misc.cpp
>>> rm -f ad_x86_64_misc.o
>>> c++ -D_ALLBSD_SOURCE -D_GNU_SOURCE -DAMD64 -DPRODUCT -I. -I/wrkdirs/usr/ports/java/openjdk7/work/openjdk/hotspot/src/share/vm/prims -I/wrkdirs/usr/ports/java/openjdk7/work/openjdk/hotspot/src/share/vm -I/wrkdirs/usr/ports/java/openjdk7/work/openjdk/hotspot/src/share/vm/precompiled -I/wrkdirs/usr/ports/java/openjdk7/work/openjdk/hotspot/src/cpu/x86/vm -I/wrkdirs/usr/ports/java/openjdk7/work/openjdk/hotspot/src/os_cpu/bsd_x86/vm -I/wrkdirs/usr/ports/java/openjdk7/work/openjdk/hotspot/src/os/bsd/vm -I/wrkdirs/usr/ports/java/openjdk7/work/openjdk/hotspot/src/os/posix/vm -I../generated -DHOTSPOT_RELEASE_VERSION="\"24.76-b04\"" -DHOTSPOT_BUILD_TARGET="\"product\"" -DHOTSPOT_BUILD_USER="\"root\"" -DHOTSPOT_LIB_ARCH=\"amd64\" -DHOTSPOT_VM_DISTRO="\"OpenJDK\"" -O2 -pipe -fstack-protector -fno-strict-aliasing -DTARGET_OS_FAMILY_bsd -DTARGET_ARCH_x86 -DTARGET_ARCH_MODEL_x86_64 -DTARGET_OS_ARCH_bsd_x86 -DTARGET_OS_ARCH_MODEL_bsd_x86_64 -DTARGET_COMPILER_gcc -DCOMPILER2 -DCOMPILER1  -fno!
>>>  -rtti -fno-exceptions -pthread -fcheck-new -m64 -pipe -DTARGET_OS_FAMILY_bsd -DTARGET_ARCH_x86 -DTARGET_ARCH_MODEL_x86_64 -DTARGET_OS_ARCH_bsd_x86 -DTARGET_OS_ARCH_MODEL_bsd_x86_64 -DTARGET_COMPILER_gcc -DCOMPILER2 -DCOMPILER1 -fPIC -fno-rtti -fno-exceptions -pthread -fcheck-new -m64 -pipe -O3 -fno-strict-aliasing -DVM_LITTLE_ENDIAN -D_LP64=1 -fno-omit-frame-pointer -DINCLUDE_TRACE=1  -Wpointer-arith -Wconversion -Wsign-compare    -c  -fpch-deps -MMD -MP -MF ../generated/dependencies/ad_x86_64_misc.o.d -o ad_x86_64_misc.o ../generated/adfiles/ad_x86_64_misc.cpp 
>>> /wrkdirs/usr/ports/java/openjdk7/work/openjdk/hotspot/src/share/vm/compiler/abstractCompiler.cpp:1: fatal error: had to relocate PCH
>>> compilation terminated.
>>> /wrkdirs/usr/ports/java/openjdk7/work/openjdk/hotspot/src/share/vm/utilities/accessFlags.cpp:1: fatal error: had to relocate PCH
>>> compilation terminated.
>>> /wrkdirs/usr/ports/java/openjdk7/work/openjdk/hotspot/make/bsd/makefiles/rules.make:149: recipe for target 'abstractCompiler.o' failed
>>> gmake[6]: *** [abstractCompiler.o] Error 1
>>> gmake[6]: *** Waiting for unfinished jobs....
>>> ../generated/adfiles/ad_x86_64.cpp:1: fatal error: had to relocate PCH
>>> compilation terminated.
>> Are you using ccache?
>>
>>> ../generated/adfiles/ad_x86_64_clone.cpp:1: fatal error: had to relocate PCH
>>> compilation terminated.
>>> /wrkdirs/usr/ports/java/openjdk7/work/openjdk/hotspot/make/bsd/makefiles/rules.make:149: recipe for target 'accessFlags.o' failed
>>> gmake[6]: *** [accessFlags.o] Error 1
>>> /wrkdirs/usr/ports/java/openjdk7/work/openjdk/hotspot/make/bsd/makefiles/rules.make:149: recipe for target 'ad_x86_64_clone.o' failed
>>> gmake[6]: *** [ad_x86_64_clone.o] Error 1
>>> /wrkdirs/usr/ports/java/openjdk7/work/openjdk/hotspot/make/bsd/makefiles/rules.make:149: recipe for target 'ad_x86_64.o' failed
>>> gmake[6]: *** [ad_x86_64.o] Error 1
>>> ../generated/adfiles/ad_x86_64_expand.cpp:1: fatal error: had to relocate PCH
>>> compilation terminated.
>>> /wrkdirs/usr/ports/java/openjdk7/work/openjdk/hotspot/make/bsd/makefiles/rules.make:149: recipe for target 'ad_x86_64_expand.o' failed
>>> gmake[6]: *** [ad_x86_64_expand.o] Error 1
>>> ../generated/adfiles/ad_x86_64_gen.cpp:1: fatal error: had to relocate PCH
>>> compilation terminated.
>>> ../generated/adfiles/ad_x86_64_misc.cpp:1: fatal error: had to relocate PCH
>>> compilation terminated.
>>> /wrkdirs/usr/ports/java/openjdk7/work/openjdk/hotspot/make/bsd/makefiles/rules.make:149: recipe for target 'ad_x86_64_gen.o' failed
>>> gmake[6]: *** [ad_x86_64_gen.o] Error 1
>>> /wrkdirs/usr/ports/java/openjdk7/work/openjdk/hotspot/make/bsd/makefiles/rules.make:149: recipe for target 'ad_x86_64_misc.o' failed
>>> gmake[6]: *** [ad_x86_64_misc.o] Error 1
>>> ../generated/adfiles/ad_x86_64_format.cpp:1: fatal error: had to relocate PCH
>>> compilation terminated.
>>> /wrkdirs/usr/ports/java/openjdk7/work/openjdk/hotspot/make/bsd/makefiles/rules.make:149: recipe for target 'ad_x86_64_format.o' failed
>>> gmake[6]: *** [ad_x86_64_format.o] Error 1
>>> gmake[6]: Leaving directory '/wrkdirs/usr/ports/java/openjdk7/work/openjdk/build/bsd-amd64/hotspot/outputdir/bsd_amd64_compiler2/product'
>>> /wrkdirs/usr/ports/java/openjdk7/work/openjdk/hotspot/make/bsd/makefiles/top.make:128: recipe for target 'the_vm' failed
>>> gmake[5]: *** [the_vm] Error 2
>>> gmake[5]: Leaving directory '/wrkdirs/usr/ports/java/openjdk7/work/openjdk/build/bsd-amd64/hotspot/outputdir/bsd_amd64_compiler2/product'
>>> /wrkdirs/usr/ports/java/openjdk7/work/openjdk/hotspot/make/bsd/Makefile:292: recipe for target 'product' failed
>>> gmake[4]: *** [product] Error 2
>>> gmake[4]: Leaving directory '/wrkdirs/usr/ports/java/openjdk7/work/openjdk/build/bsd-amd64/hotspot/outputdir'
>>> Makefile:191: recipe for target 'generic_build2' failed
>>> gmake[3]: *** [generic_build2] Error 2
>>> gmake[3]: Leaving directory '/wrkdirs/usr/ports/java/openjdk7/work/openjdk/hotspot/make'
>>> Makefile:151: recipe for target 'product' failed
>>> gmake[2]: *** [product] Error 2
>>> gmake[2]: Leaving directory '/wrkdirs/usr/ports/java/openjdk7/work/openjdk/hotspot/make'
>>> make/hotspot-rules.gmk:111: recipe for target 'hotspot-build' failed
>>> gmake[1]: *** [hotspot-build] Error 2
>>> gmake[1]: Leaving directory '/wrkdirs/usr/ports/java/openjdk7/work/openjdk'
>>> Makefile:251: recipe for target 'build_product_image' failed
>>> gmake: *** [build_product_image] Error 2
>>> ===> Compilation failed unexpectedly.
>>>
>>> I was not seeing this problem on my older package builder running
>>> 10.1-STABLE.  Since this problem has not shown up on the FreeBSD package
>>> building cluster, I got suspicious that the change was quite recent.
>>>
>>> This old gcc bug report:
>>> <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=14940> led me to suspect
>>> mmap().
>>>
>>> The old gcc source file /usr/src/contrib/gcc/ggc-common.c does a couple
>>> of mmap() calls.   Tne first is in mmap_gt_pch_get_address() where a
>>> NULL first argument is used.  The address that gets returned is stashed
>>> away and the region is unmapped.  Then a later call in
>>> mmap_gt_pch_use_address() passes this saved  address to mmap() as a
>>> hint.  It expects the mapped region to get mapped to the same base
>>> address.  If this does not happen, the above error is the result.
>> I don't know what I'm talking about but that doesn't sound like a very
>> safe assumption for the gcc code to make.
> 
> 
> Your intuition is correct.  It is not.  And, in fact, under Solaris and
> Linux, gcc does not make this assumption.
> 
> I suspect that the solution used by gcc under Solaris would work for
> us.  However, that would entail modifying gcc in older branches.

We could probably just disable PCH usage in the build as well, at least
when using GCC.


-- 
Regards,
Bryan Drewery

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 473 bytes
Desc: OpenPGP digital signature
URL: <http://lists.freebsd.org/pipermail/svn-src-all/attachments/20150328/c02dfc63/attachment.sig>


More information about the svn-src-all mailing list