Date: Sat, 28 Mar 2015 13:04:31 -0500 From: Bryan Drewery <bdrewery@FreeBSD.org> To: Alan Cox <alc@rice.edu>, Don Lewis <truckman@FreeBSD.org>, alc@FreeBSD.org Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org, clusteradm@FreeBSD.org, portmgr@FreeBSD.org Subject: Re: svn commit: r280327 - in head/sys: kern vm Message-ID: <5516ED2F.9050509@FreeBSD.org> In-Reply-To: <5516EB31.7000309@rice.edu> References: <201503280241.t2S2fWcQ078499@gw.catspoiler.org> <5516E4EA.60201@FreeBSD.org> <5516EB31.7000309@rice.edu>
next in thread | previous in thread | raw e-mail | index | archive | help
This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --iVFgCRVrGl86UTRFEXrakgUNsTsWDsE6P Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: quoted-printable 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. Pre= viously, >>>> the color setting was delayed until after the virtual address was >>>> selected. In rtld, this delay effectively prevented the mapping o= f 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 o= f code >>>> into memory. (With the page clustering that we perform on read fa= ults, >>>> this happens quickly.) >>>> =20 >>>> 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 insid= e >>> 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/u= sr/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/wrk= dirs/usr/ports/java/openjdk7/work/openjdk/hotspot/src/cpu/x86/vm -I/wrkdi= rs/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/wrk= dirs/usr/ports/java/openjdk7/work/openjdk/hotspot/src/os/posix/vm -I../ge= nerated -DHOTSPOT_RELEASE_VERSION=3D"\"24.76-b04\"" -DHOTSPOT_BUILD_TARGE= T=3D"\"product\"" -DHOTSPOT_BUILD_USER=3D"\"root\"" -DHOTSPOT_LIB_ARCH=3D= \"amd64\" -DHOTSPOT_VM_DISTRO=3D"\"OpenJDK\"" -O2 -pipe -fstack-protector= -fno-strict-aliasing -DTARGET_OS_FAMILY_bsd -DTARGET_ARCH_x86 -DTARGET_A= RCH_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_FA= MILY_bsd -DTARGET_ARCH_x86 -DTARGET_ARCH_MODEL_x86_64 -DTARGET_OS_ARCH_bs= d_x86 -DTARGET_OS_ARCH_MODEL_bsd_x86_64 -DTARGET_COMPILER_gcc -DCOMPILER2= -DCOMPILER1 -fPIC -fno-rtti -fno-exceptions -pthread -fcheck-new -m64 -p= ipe -O3 -fno-strict-aliasing -DVM_LITTLE_ENDIAN -D_LP64=3D1 -fno-omit-fra= me-pointer -DINCLUDE_TRACE=3D1 -Wpointer-arith -Wconversion -Wsign-compa= re -c -fpch-deps -MMD -MP -MF ../generated/dependencies/ad_x86_64_for= mat.o.d -o ad_x86_64_format.o ../generated/adfiles/ad_x86_64_format.cpp=20 >>> c++ -D_ALLBSD_SOURCE -D_GNU_SOURCE -DAMD64 -DPRODUCT -I. -I/wrkdirs/u= sr/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/wrk= dirs/usr/ports/java/openjdk7/work/openjdk/hotspot/src/cpu/x86/vm -I/wrkdi= rs/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/wrk= dirs/usr/ports/java/openjdk7/work/openjdk/hotspot/src/os/posix/vm -I../ge= nerated -DHOTSPOT_RELEASE_VERSION=3D"\"24.76-b04\"" -DHOTSPOT_BUILD_TARGE= T=3D"\"product\"" -DHOTSPOT_BUILD_USER=3D"\"root\"" -DHOTSPOT_LIB_ARCH=3D= \"amd64\" -DHOTSPOT_VM_DISTRO=3D"\"OpenJDK\"" -O2 -pipe -fstack-protector= -fno-strict-aliasing -DTARGET_OS_FAMILY_bsd -DTARGET_ARCH_x86 -DTARGET_A= RCH_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_FA= MILY_bsd -DTARGET_ARCH_x86 -DTARGET_ARCH_MODEL_x86_64 -DTARGET_OS_ARCH_bs= d_x86 -DTARGET_OS_ARCH_MODEL_bsd_x86_64 -DTARGET_COMPILER_gcc -DCOMPILER2= -DCOMPILER1 -fPIC -fno-rtti -fno-exceptions -pthread -fcheck-new -m64 -p= ipe -O3 -fno-strict-aliasing -DVM_LITTLE_ENDIAN -D_LP64=3D1 -fno-omit-fra= me-pointer -DINCLUDE_TRACE=3D1 -Wpointer-arith -Wconversion -Wsign-compa= re -c -fpch-deps -MMD -MP -MF ../generated/dependencies/ad_x86_64_gen= =2Eo.d -o ad_x86_64_gen.o ../generated/adfiles/ad_x86_64_gen.cpp=20 >>> 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/u= sr/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/wrk= dirs/usr/ports/java/openjdk7/work/openjdk/hotspot/src/cpu/x86/vm -I/wrkdi= rs/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/wrk= dirs/usr/ports/java/openjdk7/work/openjdk/hotspot/src/os/posix/vm -I../ge= nerated -DHOTSPOT_RELEASE_VERSION=3D"\"24.76-b04\"" -DHOTSPOT_BUILD_TARGE= T=3D"\"product\"" -DHOTSPOT_BUILD_USER=3D"\"root\"" -DHOTSPOT_LIB_ARCH=3D= \"amd64\" -DHOTSPOT_VM_DISTRO=3D"\"OpenJDK\"" -O2 -pipe -fstack-protector= -fno-strict-aliasing -DTARGET_OS_FAMILY_bsd -DTARGET_ARCH_x86 -DTARGET_A= RCH_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_FA= MILY_bsd -DTARGET_ARCH_x86 -DTARGET_ARCH_MODEL_x86_64 -DTARGET_OS_ARCH_bs= d_x86 -DTARGET_OS_ARCH_MODEL_bsd_x86_64 -DTARGET_COMPILER_gcc -DCOMPILER2= -DCOMPILER1 -fPIC -fno-rtti -fno-exceptions -pthread -fcheck-new -m64 -p= ipe -O3 -fno-strict-aliasing -DVM_LITTLE_ENDIAN -D_LP64=3D1 -fno-omit-fra= me-pointer -DINCLUDE_TRACE=3D1 -Wpointer-arith -Wconversion -Wsign-compa= re -c -fpch-deps -MMD -MP -MF ../generated/dependencies/ad_x86_64_mis= c.o.d -o ad_x86_64_misc.o ../generated/adfiles/ad_x86_64_misc.cpp=20 >>> /wrkdirs/usr/ports/java/openjdk7/work/openjdk/hotspot/src/share/vm/co= mpiler/abstractCompiler.cpp:1: fatal error: had to relocate PCH >>> compilation terminated. >>> /wrkdirs/usr/ports/java/openjdk7/work/openjdk/hotspot/src/share/vm/ut= ilities/accessFlags.cpp:1: fatal error: had to relocate PCH >>> compilation terminated. >>> /wrkdirs/usr/ports/java/openjdk7/work/openjdk/hotspot/make/bsd/makefi= les/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 PC= H >>> compilation terminated. >> Are you using ccache? >> >>> ../generated/adfiles/ad_x86_64_clone.cpp:1: fatal error: had to reloc= ate PCH >>> compilation terminated. >>> /wrkdirs/usr/ports/java/openjdk7/work/openjdk/hotspot/make/bsd/makefi= les/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/makefi= les/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/makefi= les/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 relo= cate PCH >>> compilation terminated. >>> /wrkdirs/usr/ports/java/openjdk7/work/openjdk/hotspot/make/bsd/makefi= les/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 relocat= e PCH >>> compilation terminated. >>> ../generated/adfiles/ad_x86_64_misc.cpp:1: fatal error: had to reloca= te PCH >>> compilation terminated. >>> /wrkdirs/usr/ports/java/openjdk7/work/openjdk/hotspot/make/bsd/makefi= les/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/makefi= les/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 relo= cate PCH >>> compilation terminated. >>> /wrkdirs/usr/ports/java/openjdk7/work/openjdk/hotspot/make/bsd/makefi= les/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/op= enjdk/build/bsd-amd64/hotspot/outputdir/bsd_amd64_compiler2/product' >>> /wrkdirs/usr/ports/java/openjdk7/work/openjdk/hotspot/make/bsd/makefi= les/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/op= enjdk/build/bsd-amd64/hotspot/outputdir/bsd_amd64_compiler2/product' >>> /wrkdirs/usr/ports/java/openjdk7/work/openjdk/hotspot/make/bsd/Makefi= le:292: recipe for target 'product' failed >>> gmake[4]: *** [product] Error 2 >>> gmake[4]: Leaving directory '/wrkdirs/usr/ports/java/openjdk7/work/op= enjdk/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/op= enjdk/hotspot/make' >>> Makefile:151: recipe for target 'product' failed >>> gmake[2]: *** [product] Error 2 >>> gmake[2]: Leaving directory '/wrkdirs/usr/ports/java/openjdk7/work/op= enjdk/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/op= enjdk' >>> Makefile:251: recipe for target 'build_product_image' failed >>> gmake: *** [build_product_image] Error 2 >>> =3D=3D=3D> 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 pack= age >>> 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=3D14940> led me to susp= ect >>> mmap(). >>> >>> The old gcc source file /usr/src/contrib/gcc/ggc-common.c does a coup= le >>> 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 stash= ed >>> 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. >=20 >=20 > Your intuition is correct. It is not. And, in fact, under Solaris and= > Linux, gcc does not make this assumption. >=20 > 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. --=20 Regards, Bryan Drewery --iVFgCRVrGl86UTRFEXrakgUNsTsWDsE6P Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQEcBAEBAgAGBQJVFu0vAAoJEDXXcbtuRpfPV+cH/0LUVdJIxb41IWo0G9fsNACD 08wHdor1zPvQofLrSxo/SQM2XBTsyQDwKf70TPyvk9gFRsHp9AATR9TU7Uufv/YD WOQCta1oA2Tdbn9w5L40WUDJOOIMI8X8hNvcPrxVqv6/fr6SB9JvCOxWCmAbtVsK bz8jwR/pCVk9EPCjeZQ3hVO0Y+strNrti7UjC03BTZxDSKBxvjZ87v52itblXuaD iclp+JgdZh8JJH6JgxANNEL3p9Ao6HYJB700OjrTjFYtmozrXRQrKNFYV5z2tTB9 SUw8oQLCMUt/UGOJcdcdietptGBjhmwDHsuhQkBHUR2vb5TOcvAD78/m+mmj3B4= =vEXc -----END PGP SIGNATURE----- --iVFgCRVrGl86UTRFEXrakgUNsTsWDsE6P--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?5516ED2F.9050509>