maintainer-feedback requested: [Bug 210191] java/openjdk8: Fix for OpenJDK Network Crash (regression of PR 175417)

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Fri Jun 10 13:57:16 UTC 2016


Andrew Smith <iamasmith.home at gmail.com> has reassigned Bugzilla Automation
<bugzilla at FreeBSD.org>'s request for maintainer-feedback to java at FreeBSD.org:
Bug 210191: java/openjdk8: Fix for OpenJDK Network Crash (regression of PR
175417)
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=210191



--- Description ---
PR 175417 observed that the change to select() 2 from poll() produced crashes
in java/openjdk7.

This was initially provided as a FreeBSD patch to the bsd-port of OpenJDK and
then was adopted upstream directly into bsd-port.

This change was never added to the jdk8 upstream bsd-port at the OpenJDK
mercurial repo and since the patch was previosuly available ustream from jdk7
it was never added to the jdk8 port either.

The result is that java/openjdk8 is susceptible to crashes on network timesouts
just as java/openjdk7 was.

I have personally observed this in a perormance test environment that could
produce the failure within 10 minutes using 6 Tomcat servers using a JMeter
test for one of our applications as the back end infrastructure started to
saturate and introduce network timeouts.

The source file effected is jdk/src/solaris/native/java/net/bsd_close.c which
requires the conditional switch back to using the poll mechanism if not on an
Apple platform.

This file in the upstream differs only in that it lacks this conditional
handling for NET_Timeout for non Apple platforms so this patch has been
effectively reassembled from that change between the bsd-port/jdk8 and
bsd-port/bsd-port for the java/openjdk8 port.

Ideally this should go upstream into bsd-port/jdk8 but for now it is needed in
the FreeBSD port to stabilise any high throughput network applications that may
suffer frequent NET_Timeout conditions.

Crashes in our environment without the patch under Apache Tomcat 8 result in a
wide variety of SIGBUS and SIGSEGV errors often in GCTaskThread or VMThread.

The patch provided can be applied by simply dropping it into
/usr/ports/java/openjdk8/files prior to a port build.


More information about the freebsd-java mailing list