Do not let internal JDK zlib symbols leak out of fastdebug libzip.so
Alan Bateman
Alan.Bateman at oracle.com
Sat Feb 23 11:51:31 UTC 2013
On 22/02/2013 22:03, Martin Buchholz wrote:
> Hi Alan, Xueming, build-ers,
>
> I'd like you to do a code review.
>
> I've finally figured out why fastdebug jdk occasionally gives
> InternalError in the zip code.
>
> Exception in thread "main" java.lang.InternalError
> at java.util.zip.Inflater.init(Native Method)
> at java.util.zip.Inflater.<init>(Inflater.java:101)
> at java.util.zip.ZipFile.getInflater(ZipFile.java:448)
>
> It's because:
> - jdk changed structure size of z_stream struct
> - making jdk zlib incompatible with stock zlib
> - as a result of which, it is imperative to keep jdk zlib sequestered
> from system zlib
> - so need to not export zlib symbols from libzip.so
> - so need to tell makefiles to use linker script unconditionally
>
> http://cr.openjdk.java.net/~martin/webrevs/openjdk8/hide-zlib/
> <http://cr.openjdk.java.net/%7Emartin/webrevs/openjdk8/hide-zlib/>
>
I see Sherman has created a bug for this but it turns out that someone
else running with fastdebug ran into issues too:
8006319: fastdebug libzip.so is linked with global symbols, allowing
symbols to be overridden
I see you are proposing to update make/java/zip/Makefile so that is the
old build. Looking at makefiles/CompileNativeLibraries.gmk (new build)
then it looks to me that it is using the map file. I haven't checking
the symbols in a fast debug build to double check so I'm curious if
you've seen this with a recent (new) build.
-Alan.
More information about the build-dev
mailing list