debian挤压上的libdbus导致glassfish崩溃

debian挤压上的libdbus导致glassfish崩溃,glassfish,dbus,Glassfish,Dbus,我正在linux debian squeez(6.0.4)上使用java build 1.6.0_29-b11运行glassfish v3.1.1 build 12。 我正在运行一个webapp,它正在调用一个外部soap web服务 jvm偶尔会崩溃。我可以通过同时执行20个线程来重现这种崩溃 hs_err_pid崩溃转储文件显示libdbus是有问题的库。下面是崩溃转储的有趣部分 Stack: [0x00007f3fef0ff000,0x00007f3fef200000], sp=0x0

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

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,它也崩溃了

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

我和dbusjava的维护人员谈过,他也不知道sunjdk或openjdk正在使用dbus。所以我们都很困惑

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

你以前见过这个问题吗?有解决办法吗

更新:

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

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

更新2:

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