Hi,
when starting JBoss Messaging in standalone mode, I found out that the JVM is not exited
cleanly when we shutdown the server.
After some investigation, I narrow the problem down to the JNDI server:
| public static void main(String[] args) throws Exception
| {
|
| System.setProperty("java.naming.factory.initial",
"org.jnp.interfaces.NamingContextFactory");
| System.setProperty("java.naming.factory.url.pkgs",
"org.jboss.naming:org.jnp.interfaces, value");
|
| NamingBeanImpl namingInfo = new NamingBeanImpl();
| namingInfo.start();
| org.jnp.server.Main jndiServer = new org.jnp.server.Main();
| jndiServer.setNamingInfo(namingInfo);
| jndiServer.setPort(1099);
| jndiServer.setBindAddress("localhost");
| jndiServer.setRmiPort(1098);
| jndiServer.setRmiBindAddress("localhost");
| jndiServer.start();
|
| System.out.println("STARTED");
|
| jndiServer.stop();
| namingInfo.stop();
| }
|
When I run the code (using both jnpserver 5.0.0.Beta3 and 5.0.0.Beta4), the VM hangs and
I get the thread dump:
| Full thread dump Java HotSpot(TM) Client VM (1.5.0_16-133 mixed mode, sharing):
|
| "DestroyJavaVM" prio=5 tid=0x010014b0 nid=0xb0801000 waiting on condition
[0x00000000..0xb0800060]
|
| "NamingBootstrap Pool(1)-1" daemon prio=5 tid=0x01013480 nid=0x82be00
waiting on condition [0xb0e8e000..0xb0e8ed90]
| at sun.misc.Unsafe.park(Native Method)
| at java.util.concurrent.locks.LockSupport.park(LockSupport.java:118)
| at
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1841)
| at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:359)
| at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:470)
| at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:674)
| at java.lang.Thread.run(Thread.java:613)
|
| "GC Daemon" daemon prio=2 tid=0x010128e0 nid=0x914a00 in Object.wait()
[0xb0e0d000..0xb0e0dd90]
| at java.lang.Object.wait(Native Method)
| - waiting on <0x25b02af8> (a sun.misc.GC$LatencyLock)
| at sun.misc.GC$Daemon.run(GC.java:100)
| - locked <0x25b02af8> (a sun.misc.GC$LatencyLock)
|
| "RMI Reaper" prio=5 tid=0x010124c0 nid=0x913c00 in Object.wait()
[0xb0d8c000..0xb0d8cd90]
| at java.lang.Object.wait(Native Method)
| - waiting on <0x25b01b00> (a java.lang.ref.ReferenceQueue$Lock)
| at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:120)
| - locked <0x25b01b00> (a java.lang.ref.ReferenceQueue$Lock)
| at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:136)
| at sun.rmi.transport.ObjectTable$Reaper.run(ObjectTable.java:336)
| at java.lang.Thread.run(Thread.java:613)
|
| "Timer-0" daemon prio=5 tid=0x010120c0 nid=0x84d200 in Object.wait()
[0xb0d0b000..0xb0d0bd90]
| at java.lang.Object.wait(Native Method)
| - waiting on <0x25b01fa0> (a java.util.TaskQueue)
| at java.lang.Object.wait(Object.java:474)
| at java.util.TimerThread.mainLoop(Timer.java:483)
| - locked <0x25b01fa0> (a java.util.TaskQueue)
| at java.util.TimerThread.run(Timer.java:462)
|
| "RMI TCP Accept-1098" daemon prio=5 tid=0x01011d30 nid=0x84c400 runnable
[0xb0c8a000..0xb0c8ad90]
| at java.net.PlainSocketImpl.socketAccept(Native Method)
| at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)
| - locked <0x25b01b58> (a java.net.SocksSocketImpl)
| at java.net.ServerSocket.implAccept(ServerSocket.java:450)
| at java.net.ServerSocket.accept(ServerSocket.java:421)
| at sun.rmi.transport.tcp.TCPTransport.run(TCPTransport.java:340)
| at java.lang.Thread.run(Thread.java:613)
|
| "Low Memory Detector" daemon prio=5 tid=0x01009110 nid=0x81ba00 runnable
[0x00000000..0x00000000]
|
| "CompilerThread0" daemon prio=9 tid=0x01008660 nid=0x81ac00 waiting on
condition [0x00000000..0xb0b077d8]
|
| "Signal Dispatcher" daemon prio=9 tid=0x01008130 nid=0x819e00 waiting on
condition [0x00000000..0x00000000]
|
| "Finalizer" daemon prio=8 tid=0x01007a70 nid=0x818200 in Object.wait()
[0xb0a05000..0xb0a05d90]
| at java.lang.Object.wait(Native Method)
| - waiting on <0x25a82180> (a java.lang.ref.ReferenceQueue$Lock)
| at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:120)
| - locked <0x25a82180> (a java.lang.ref.ReferenceQueue$Lock)
| at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:136)
| at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)
|
| "Reference Handler" daemon prio=10 tid=0x010076b0 nid=0x816a00 in
Object.wait() [0xb0984000..0xb0984d90]
| at java.lang.Object.wait(Native Method)
| - waiting on <0x25a82208> (a java.lang.ref.Reference$Lock)
| at java.lang.Object.wait(Object.java:474)
| at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116)
| - locked <0x25a82208> (a java.lang.ref.Reference$Lock)
|
| "VM Thread" prio=9 tid=0x01006e00 nid=0x815c00 runnable
|
| "VM Periodic Task Thread" prio=9 tid=0x01009c50 nid=0x806e00 waiting on
condition
|
| "Exception Catcher Thread" prio=10 tid=0x010017b0 nid=0x80d800 runnable
|
Is it a known issue?
Should I set some attributes on the JNDI server to ensure that it won't prevent the VM
to exit?
thanks!
View the original post :
http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4222409#...
Reply to the post :
http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&a...