Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 11 Mar 2008 18:11:27 -0400 (EDT)
From:      Daniel Eischen <deischen@freebsd.org>
To:        Kurt Miller <kurt@intricatesoftware.com>
Cc:        Scott Mitchell <scott+lists.freebsd@fishballoon.org>, freebsd-java@freebsd.org
Subject:   Re: jdk16 build failure on 7.0R/i386
Message-ID:  <Pine.GSO.4.64.0803111804240.22836@sea.ntplx.net>
In-Reply-To: <47D5FAEF.3080900@intricatesoftware.com>
References:  <20080309220029.GB93340@llama.fishballoon.org> <200803100932.37017.lists@intricatesoftware.com> <20080310231803.GC22200@tuatara.fishballoon.org> <200803102130.02371.kurt@intricatesoftware.com> <Pine.GSO.4.64.0803102142200.18214@sea.ntplx.net> <47D5FAEF.3080900@intricatesoftware.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, 10 Mar 2008, Kurt Miller wrote:

> Daniel Eischen wrote:
>> On Mon, 10 Mar 2008, Kurt Miller wrote:
>>
>>> On Monday 10 March 2008 7:18:03 pm Scott Mitchell wrote:
>>>> On Mon, Mar 10, 2008 at 08:32:36AM -0500, Kurt Miller wrote:
>>>>> This look like another case of the jvm not being linked to a thread
>>>>> library.
>>>>> At least the 'Dynamic libraries:' section of the crash report
>>>>> doesn't list a
>>>>> thread library. What does ldd show?
>>>>>
>>>>> ldd /var/tmp/usr/ports/java/jdk16/work/control/build/bsd-i586/bin/java
>>>>>
>>>>> Can you extract the portion of the build log that shows the link
>>>>> command
>>>>> for the 'java' executable? It should look something like this:
>>>>
>>>> Hi Kurt,
>>>>
>>>> Here you go - I saved the entire log so just let me know if you need
>>>> to see
>>>> any more of it:
>>>>
>>>> Rebuilding
>>>> /var/tmp/usr/ports/java/jdk16/work/control/build/bsd-i586/bin/java
>>>> because of
>>>> /var/tmp/usr/ports/java/jdk16/work/control/build/bsd-i586/tmp/java/java/obj/java.o
>>>> /var/tmp/usr/ports/java/jdk16/work/control/build/bsd-i586/tmp/java/java/obj/java_md.o
>>>> /var/tmp/usr/ports/java/jdk16/work/control/build/bsd-i586/tmp/java/java/obj/splashscreen_stubs.o
>>>>
>>>> /usr/bin/gcc  -o
>>>> /var/tmp/usr/ports/java/jdk16/work/control/build/bsd-i586/bin/java
>>>> -L/var/tmp/usr/ports/java/jdk16/work/control/build/bsd-i586/lib/i386
>>>> -Wl,-soname=lib.so  -Wl,--whole-archive
>>>> /var/tmp/usr/ports/java/jdk16/work/control/build/bsd-i586/tmp/java/jli/obj/static/libjli.a
>>>> -Wl,--no-whole-archive \
>>>>
>>>> /var/tmp/usr/ports/java/jdk16/work/control/build/bsd-i586/tmp/java/java/obj/java.o
>>>> /var/tmp/usr/ports/java/jdk16/work/control/build/bsd-i586/tmp/java/java/obj/java_md.o
>>>> /var/tmp/usr/ports/java/jdk16/work/control/build/bsd-i586/tmp/java/java/obj/splashscreen_stubs.o
>>>> -pthread   -pthread
>>>> gmake[4]: Leaving directory
>>>> `/var/tmp/usr/ports/java/jdk16/work/j2se/make/java/main/java'
>>>>
>>>
>>> Hi,
>>>
>>> Weird. It seems like gcc(1)/ld(1) has changed the way -pthread is
>>> handled. In 6.X
>>> and below it will record a NEEDED entry for libpthread even if the
>>> executable
>>> doesn't reference any pthread symbols. I suspect that in 7.X if the
>>> executable
>>> doesn't reference any pthread symbols it wont record the NEEDED entry.
>>
>> No, for binaries it works the same way on 7.x as 6.x.
>>
>> $ gcc -o k k.c -pthread
>> $ ldd k
>> k:
>>         libthr.so.3 => /lib/libthr.so.3 (0x2807c000)
>>         libc.so.7 => /lib/libc.so.7 (0x2808f000)
>>
>> I believe that -pthread does now act differently in 7.0+ when used
>> to build shared libraries.  Prior to 7.0, using -pthread to build
>> shared libraries would not record a dependency on libpthread,
>> whereas in 7.0+ it will record a dependency.
>>
>> Other than that, the only change in 7.0 is that libthr is now the
>> default instead of libkse (nee libpthread).
>>
>
> Hi Daniel,
>
> Hmm, well I'm perplexed then. I can't see why
> work/control/build/bsd-i586/bin/java isn't recording the NEEDED on
> libthr.so. Perhaps the -Wl,-soname=lib.so argument or the double
> -pthread is the culprit. Can you experiment on 7.0 to see if they are
> involved at all?

I'm sorry, this (jdk16) doesn't even come close to building
on 7.0 using native jdk15.  It fails right at the get-go.
See http://people.freebsd.org/~deischen/jdk16.build.log.

The tail end of the log is this:

Creating test_gamma ...
( \
echo '#!/bin/sh'; \
         echo "# Generated by 
/opt/FreeBSD/src/ports/java/jdk16/work/hotspot/build/bsd/makefiles/buildtree.make"; 
\
echo '. ./env.sh'; \
         echo "if [ -z \$JAVA_HOME ]; then { echo "JAVA_HOME must be set 
to run this test."; exit 0; }; fi"; \
echo "if ! \${JAVA_HOME}/bin/java -d32 -fullversion 2>1 > /dev/null"; \
echo "then"; \
echo "  echo "JAVA_HOME must point to 32bit JDK."; exit 0;"; \
echo "fi"; \
         echo 
'CLASSPATH="/opt/FreeBSD/src/ports/java/jdk16/work/hotspot/build/linux:$CLASSPATH"'; 
\
echo '[ -f gamma_g ] && { gamma=gamma_g; }'; \
echo './${gamma:-gamma} -Xbatch Queens < /dev/null'; \
) > test_gamma
chmod +x test_gamma
gmake[5]: Leaving directory 
`/opt/FreeBSD/src/ports/java/jdk16/work/control/build/bsd-i586/hotspot/outputdir/bsd_i486_compiler2/profiled'
touch bsd_i486_compiler2/profiled
gmake[4]: Leaving directory 
`/opt/FreeBSD/src/ports/java/jdk16/work/control/build/bsd-i586/hotspot/outputdir'
cd bsd_i486_compiler2/product && gmake -w
gmake[4]: Entering directory 
`/opt/FreeBSD/src/ports/java/jdk16/work/control/build/bsd-i586/hotspot/outputdir/bsd_i486_compiler2/product'
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
Removing ../generated/includeDB.current to force regeneration.
cd ../generated;   cat 
/opt/FreeBSD/src/ports/java/jdk16/work/hotspot/src/share/vm/includeDB_core 
/opt/FreeBSD/src/ports/java/jdk16/work/hotspot/src/share/vm/includeDB_gc 
/opt/FreeBSD/src/ports/java/jdk16/work/hotspot/src/share/vm/gc_implementation/includeDB_gc_parallelScavenge 
/opt/FreeBSD/src/ports/java/jdk16/work/hotspot/src/share/vm/gc_implementation/includeDB_gc_concurrentMarkSweep 
/opt/FreeBSD/src/ports/java/jdk16/work/hotspot/src/share/vm/gc_implementation/includeDB_gc_shared 
/opt/FreeBSD/src/ports/java/jdk16/work/hotspot/src/share/vm/includeDB_ci 
/opt/FreeBSD/src/ports/java/jdk16/work/hotspot/src/share/vm/includeDB_compiler2 
> includeDB
cd ../generated;  if [ ! -r incls ] ; then \
         mkdir incls ; \
         fi
cd ../generated;   /usr/local/jdk1.5.0/bin/java -DUSE_PRECOMPILED_HEADER 
-classpath . MakeDeps diffs UnixPlatform platform.current 
includeDB.current 
/opt/FreeBSD/src/ports/java/jdk16/work/hotspot/build/bsd/platform_i486 
includeDB
Old database:
         computing closures

New database:
         reading database: includeDB
java.lang.NullPointerException
gmake[4]: *** [../generated/includeDB.current] Error 1
gmake[4]: Leaving directory 
`/opt/FreeBSD/src/ports/java/jdk16/work/control/build/bsd-i586/hotspot/outputdir/bsd_i486_compiler2/product'
gmake[3]: *** [product] Error 2
gmake[3]: Leaving directory 
`/opt/FreeBSD/src/ports/java/jdk16/work/control/build/bsd-i586/hotspot/outputdir'
gmake[2]: *** [generic_build2] Error 2
gmake[2]: Leaving directory 
`/opt/FreeBSD/src/ports/java/jdk16/work/hotspot/make'
gmake[1]: *** [product] Error 2
gmake[1]: Leaving directory 
`/opt/FreeBSD/src/ports/java/jdk16/work/hotspot/make'
gmake: *** [hotspot-build] Error 2
*** Error code 2


-- DE



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.GSO.4.64.0803111804240.22836>