ports/183389: [PATCH] java/openjdk7 fails using nio.ch.DefaultAsynchronousChannelProvider
Palle Girgensohn
girgen at FreeBSD.org
Mon Oct 28 10:20:00 UTC 2013
>Number: 183389
>Category: ports
>Synopsis: [PATCH] java/openjdk7 fails using nio.ch.DefaultAsynchronousChannelProvider
>Confidential: no
>Severity: critical
>Priority: high
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Mon Oct 28 10:20:00 UTC 2013
>Closed-Date:
>Last-Modified:
>Originator: Palle Girgensohn
>Release: FreeBSD 9.2-RELEASE amd64
>Organization:
>Environment:
System: FreeBSD ananas 9.2-RELEASE FreeBSD 9.2-RELEASE #0 r257156: Sat Oct 26 18:02:04 CEST 2013 girgen at ananas:/usr/obj/usr/src/sys/ANANAS amd64
openjdk-7.25.15_1
tomcat 7.0.47
>Description:
Tomcat's latest version, 7.0.47, seems to have changed to use
sun/nio/ch/DefaultAsynchronousChannelProvider.java
with FreeBSD's openjdk, this fails with a java.lang.InternalError: platform not recognized
tomcat 7.0.42 workes fine, but surely doesn't use the asynchronous channel stuff from nio.
>How-To-Repeat:
$ cat Foo.java
import java.nio.channels.AsynchronousServerSocketChannel;
class Foo {
public static void main(String[] args) throws Exception {
AsynchronousServerSocketChannel.open();
}
}
$ javac Foo.java
$ java Foo
Exception in thread "main" java.lang.InternalError: platform not recognized
at sun.nio.ch.DefaultAsynchronousChannelProvider.create(DefaultAsynchronousChannelProvider.java:55)
at java.nio.channels.spi.AsynchronousChannelProvider$ProviderHolder$1.run(AsynchronousChannelProvider.java:88)
at java.nio.channels.spi.AsynchronousChannelProvider$ProviderHolder$1.run(AsynchronousChannelProvider.java:79)
at java.security.AccessController.doPrivileged(Native Method)
at java.nio.channels.spi.AsynchronousChannelProvider$ProviderHolder.load(AsynchronousChannelProvider.java:78)
at java.nio.channels.spi.AsynchronousChannelProvider$ProviderHolder.<clinit>(AsynchronousChannelProvider.java:75)
at java.nio.channels.spi.AsynchronousChannelProvider.provider(AsynchronousChannelProvider.java:166)
at java.nio.channels.AsynchronousServerSocketChannel.open(AsynchronousServerSocketChannel.java:138)
at java.nio.channels.AsynchronousServerSocketChannel.open(AsynchronousServerSocketChannel.java:161)
at Foo.main(Foo.java:5)
$ java -version
openjdk version "1.7.0_25"
OpenJDK Runtime Environment (build 1.7.0_25-b15)
OpenJDK 64-Bit Server VM (build 23.21-b01, mixed mod
>Fix:
This is already fixed for MaxOS, using kqueue(2). Just changing to accept the
same lib for FreeBSD *seems* to help. The test case works. Tomcat works. But since this is
"Asynchrounous Channel", maybe some more tests would be appropriate?
diff -urN --exclude '*.svn*' /home/girgen/openjdk7/Makefile openjdk7/Makefile
--- /home/girgen/openjdk7/Makefile 2013-10-28 10:47:01.325767103 +0100
+++ openjdk7/Makefile 2013-10-28 10:41:10.484771486 +0100
@@ -1,9 +1,9 @@
# Created by: Greg Lewis <glewis at FreeBSD.org>
-# $FreeBSD: head/java/openjdk7/Makefile 327845 2013-09-22 00:39:22Z glewis $
+# $FreeBSD: java/openjdk7/Makefile 327845 2013-09-22 00:39:22Z glewis $
PORTNAME= openjdk
PORTVERSION= ${JDK_MAJOR_VERSION}.${PORT_MINOR_VERSION}.${PORT_BUILD_NUMBER}
-PORTREVISION= 1
+PORTREVISION= 2
CATEGORIES= java devel
MASTER_SITES= http://download.java.net/openjdk/jdk${JDK_MAJOR_VERSION}u${JDK_MINOR_VERSION}/promoted/b${JDK_BUILD_NUMBER}/ \
http://download.java.net/jaxp/1.4.5/:jaxp \
diff -urN --exclude '*.svn*' /home/girgen/openjdk7/files/patch-src-solaris-classes-sun-nio-ch-DefaultAsynchronousChanneldProvider.java openjdk7/files/patch-src-solaris-classes-sun-nio-ch-DefaultAsynchronousChanneldProvider.java
--- /home/girgen/openjdk7/files/patch-src-solaris-classes-sun-nio-ch-DefaultAsynchronousChanneldProvider.java 1970-01-01 01:00:00.000000000 +0100
+++ openjdk7/files/patch-src-solaris-classes-sun-nio-ch-DefaultAsynchronousChanneldProvider.java 2013-10-28 01:36:06.946770171 +0100
@@ -0,0 +1,11 @@
+--- jdk/src/solaris/classes/sun/nio/ch/DefaultAsynchronousChannelProvider.java.orig 2013-10-28 01:26:45.766774262 +0100
++++ jdk/src/solaris/classes/sun/nio/ch/DefaultAsynchronousChannelProvider.java 2013-10-28 01:27:24.043766301 +0100
+@@ -50,7 +50,7 @@
+ return new SolarisAsynchronousChannelProvider();
+ if (osname.equals("Linux"))
+ return new LinuxAsynchronousChannelProvider();
+- if (osname.contains("OS X"))
++ if (osname.contains("OS X") || osname.equals("FreeBSD"))
+ return new BsdAsynchronousChannelProvider();
+ throw new InternalError("platform not recognized");
+ }
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list