libdbus对debian挤压引起的玻璃鱼崩溃

时间:2012-02-14 09:49:17

标签: glassfish dbus

我在linux debian squeez(6.0.4)上使用java build 1.6.0_29-b11运行glassfish v3.1.1 build 12。 我正在运行一个调用外部soap webservice的webapp。

偶尔jvm会崩溃。我可以通过同时执行20个线程来重现此崩溃。

hs_err_pid崩溃转储文件显示libdbus是有问题的库。这是崩溃转储的有趣部分

 Stack: [0x00007f3fef0ff000,0x00007f3fef200000],  sp=0x00007f3fef1f7058,  free space=992k
 Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
 C  [libdbus-1.so.3+0x28de0]

 Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
 j  sun.net.spi.DefaultProxySelector.getSystemProxy(Ljava/lang/String;Ljava/lang/String;)Ljava/net/Proxy;+0
 j  sun.net.spi.DefaultProxySelector.access$100(Lsun/net/spi/DefaultProxySelector;Ljava/lang/String;Ljava/lang/String;)Ljava/net/Proxy;+3
 j  sun.net.spi.DefaultProxySelector$2.run()Ljava/lang/Object;+151
 v  ~StubRoutines::call_stub
 J  java.security.AccessController.doPrivileged(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
 j  sun.net.spi.DefaultProxySelector.select(Ljava/net/URI;)Ljava/util/List;+273
 j  sun.net.www.protocol.http.HttpURLConnection.plainConnect()V+187
 j  sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect()V+9
 j  sun.net.www.protocol.http.HttpURLConnection.getOutputStream()Ljava/io/OutputStream;+134
 j  sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream()Ljava/io/OutputStream;+4
 j  com.sun.xml.ws.mex.client.HttpPoster.post(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/io/InputStream;+60

正如您所看到的那样,实际的HttpPoster.post被调用,然后发生崩溃。 sun.net.spi.DefaultProxySelector是rt.jar的一部分,所以这是默认的jvm安装的一部分。

我尝试了jdk7,但也发生了崩溃。

然后我安装了openjdk,它也崩溃了。

然后我安装了dbus-java,这是dbus的java实现(使用apt-get)。通常,此库仅在某些jar文件显式放在路径中时使用。但安装此库后,崩溃不再发生。所以看起来openjdk正在使用这个库(假设)

我和dbus-java的维护者交谈过,他也不知道sun jdk或openjdk正在使用dbus。所以我们都很困惑。

崩溃不再发生,但现在glassfish的管理界面停止工作。谷歌搜索显示这是一个已知的问题,解决方案是开始使用sun jdk。 Aaargh。

你以前见过这个问题吗?有解决方案吗?

更新:

DefaultProxySelector.getSystemProperty方法是在调用本机方法之前调用的最后一个方法。查看DefaultProxySelector的代码,我发现只有在java.net.useSystemProxies = true时才应该调用此方法。但是没有设置此属性(在jvm设置中没有-D设置),在$ JAVA_HOME / jre / lib / net.properties文件中也是如此。但是在调试之后它显示了这个布尔值是真的。

所以现在最大的问题是:为什么这个布尔值是真的?

更新2:

问题是由updatetool配置引起的。有关详细信息,请参阅bug report GLASSFISH-18360

0 个答案:

没有答案