ok --
Here is the thread dump.
Full thread dump Java HotSpot(TM) Client VM (1.4.2-54 mixed mode):
"WorkerThread15" prio=5 tid=0x0054dd30 nid=0x187b000 waiting for monitor entry [f1499000..f1499ac0] at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:351) - waiting to lock <0x6581b410> (a java.net.PlainSocketImpl) at java.net.ServerSocket.implAccept(ServerSocket.java:448) at java.net.ServerSocket.accept(ServerSocket.java:419) at com.webobjects.appserver._private.WOWorkerThread.run(WOWorkerThread.java:238) at java.lang.Thread.run(Thread.java:552)
"WorkerThread14" prio=5 tid=0x0054db10 nid=0x187ac00 waiting for monitor entry [f1418000..f1418ac0] at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:351) - waiting to lock <0x6581b410> (a java.net.PlainSocketImpl) at java.net.ServerSocket.implAccept(ServerSocket.java:448) at java.net.ServerSocket.accept(ServerSocket.java:419) at com.webobjects.appserver._private.WOWorkerThread.run(WOWorkerThread.java:238) at java.lang.Thread.run(Thread.java:552)
"WorkerThread13" prio=5 tid=0x0054d8f0 nid=0x187a800 waiting for monitor entry [f1397000..f1397ac0] at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:351) - waiting to lock <0x6581b410> (a java.net.PlainSocketImpl) at java.net.ServerSocket.implAccept(ServerSocket.java:448) at java.net.ServerSocket.accept(ServerSocket.java:419) at com.webobjects.appserver._private.WOWorkerThread.run(WOWorkerThread.java:238) at java.lang.Thread.run(Thread.java:552)
"WorkerThread12" prio=5 tid=0x0054d6e0 nid=0x18baa00 waiting for monitor entry [f1316000..f1316ac0] at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:351) - waiting to lock <0x6581b410> (a java.net.PlainSocketImpl) at java.net.ServerSocket.implAccept(ServerSocket.java:448) at java.net.ServerSocket.accept(ServerSocket.java:419) at com.webobjects.appserver._private.WOWorkerThread.run(WOWorkerThread.java:238) at java.lang.Thread.run(Thread.java:552)
"WorkerThread11" prio=5 tid=0x0054cd50 nid=0x18ba600 waiting for monitor entry [f1295000..f1295ac0] at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:351) - waiting to lock <0x6581b410> (a java.net.PlainSocketImpl) at java.net.ServerSocket.implAccept(ServerSocket.java:448) at java.net.ServerSocket.accept(ServerSocket.java:419) at com.webobjects.appserver._private.WOWorkerThread.run(WOWorkerThread.java:238) at java.lang.Thread.run(Thread.java:552)
"WorkerThread10" prio=5 tid=0x0054cb30 nid=0x18ba200 waiting for monitor entry [f1214000..f1214ac0] at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:351) - waiting to lock <0x6581b410> (a java.net.PlainSocketImpl) at java.net.ServerSocket.implAccept(ServerSocket.java:448) at java.net.ServerSocket.accept(ServerSocket.java:419) at com.webobjects.appserver._private.WOWorkerThread.run(WOWorkerThread.java:238) at java.lang.Thread.run(Thread.java:552)
"WorkerThread9" prio=5 tid=0x0054c920 nid=0x1b9e400 waiting for monitor entry [f1193000..f1193ac0] at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:351) - waiting to lock <0x6581b410> (a java.net.PlainSocketImpl) at java.net.ServerSocket.implAccept(ServerSocket.java:448) at java.net.ServerSocket.accept(ServerSocket.java:419) at com.webobjects.appserver._private.WOWorkerThread.run(WOWorkerThread.java:238) at java.lang.Thread.run(Thread.java:552)
"WorkerThread8" prio=5 tid=0x0054c280 nid=0x1b9e000 waiting for monitor entry [f1112000..f1112ac0] at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:351) - waiting to lock <0x6581b410> (a java.net.PlainSocketImpl) at java.net.ServerSocket.implAccept(ServerSocket.java:448) at java.net.ServerSocket.accept(ServerSocket.java:419) at com.webobjects.appserver._private.WOWorkerThread.run(WOWorkerThread.java:238) at java.lang.Thread.run(Thread.java:552)
"WorkerThread7" prio=5 tid=0x0054b690 nid=0x1b9dc00 waiting for monitor entry [f1091000..f1091ac0] at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:351) - waiting to lock <0x6581b410> (a java.net.PlainSocketImpl) at java.net.ServerSocket.implAccept(ServerSocket.java:448) at java.net.ServerSocket.accept(ServerSocket.java:419) at com.webobjects.appserver._private.WOWorkerThread.run(WOWorkerThread.java:238) at java.lang.Thread.run(Thread.java:552)
"WorkerThread6" prio=5 tid=0x0054b470 nid=0x1b8fc00 runnable [f1010000..f1010ac0] at java.net.PlainSocketImpl.socketAccept(Native Method) at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:353) - locked <0x6581b410> (a java.net.PlainSocketImpl) at java.net.ServerSocket.implAccept(ServerSocket.java:448) at java.net.ServerSocket.accept(ServerSocket.java:419) at com.webobjects.appserver._private.WOWorkerThread.run(WOWorkerThread.java:238) at java.lang.Thread.run(Thread.java:552)
"WorkerThread5" prio=5 tid=0x0054b250 nid=0x1b8f800 runnable [f0f8f000..f0f8fac0] at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(SocketInputStream.java:129) at com.webobjects.appserver._private.WOHttpIO.refillInputBuffer(WOHttpIO.java:131) at com.webobjects.appserver._private.WOHttpIO.readLine(WOHttpIO.java:187) at com.webobjects.appserver._private.WOHttpIO.readRequestFromSocket(WOHttpIO.java:279) at com.webobjects.appserver._private.WOWorkerThread.runOnce(WOWorkerThread.java:79) at com.webobjects.appserver._private.WOWorkerThread.run(WOWorkerThread.java:254) at java.lang.Thread.run(Thread.java:552)
"WorkerThread4" prio=5 tid=0x0054b060 nid=0x1a46e00 runnable [f0f0e000..f0f0eac0] at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(SocketInputStream.java:129) at com.webobjects.appserver._private.WOHttpIO.refillInputBuffer(WOHttpIO.java:131) at com.webobjects.appserver._private.WOHttpIO.readLine(WOHttpIO.java:187) at com.webobjects.appserver._private.WOHttpIO.readRequestFromSocket(WOHttpIO.java:279) at com.webobjects.appserver._private.WOWorkerThread.runOnce(WOWorkerThread.java:79) at com.webobjects.appserver._private.WOWorkerThread.run(WOWorkerThread.java:254) at java.lang.Thread.run(Thread.java:552)
"WorkerThread3" prio=5 tid=0x0054ac20 nid=0x1a46a00 waiting for monitor entry [f0e8d000..f0e8dac0] at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:351) - waiting to lock <0x6581b410> (a java.net.PlainSocketImpl) at java.net.ServerSocket.implAccept(ServerSocket.java:448) at java.net.ServerSocket.accept(ServerSocket.java:419) at com.webobjects.appserver._private.WOWorkerThread.run(WOWorkerThread.java:238) at java.lang.Thread.run(Thread.java:552)
"WorkerThread2" prio=5 tid=0x0054aa00 nid=0x189ea00 waiting for monitor entry [f0e0c000..f0e0cac0] at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:351) - waiting to lock <0x6581b410> (a java.net.PlainSocketImpl) at java.net.ServerSocket.implAccept(ServerSocket.java:448) at java.net.ServerSocket.accept(ServerSocket.java:419) at com.webobjects.appserver._private.WOWorkerThread.run(WOWorkerThread.java:238) at java.lang.Thread.run(Thread.java:552)
"WorkerThread1" prio=5 tid=0x0054a870 nid=0x189e600 waiting for monitor entry [f0d8b000..f0d8bac0] at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:351) - waiting to lock <0x6581b410> (a java.net.PlainSocketImpl) at java.net.ServerSocket.implAccept(ServerSocket.java:448) at java.net.ServerSocket.accept(ServerSocket.java:419) at com.webobjects.appserver._private.WOWorkerThread.run(WOWorkerThread.java:238) at java.lang.Thread.run(Thread.java:552)
"WorkerThread0" prio=5 tid=0x0054a710 nid=0x19ec200 waiting for monitor entry [f0d0a000..f0d0aac0] at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:351) - waiting to lock <0x6581b410> (a java.net.PlainSocketImpl) at java.net.ServerSocket.implAccept(ServerSocket.java:448) at java.net.ServerSocket.accept(ServerSocket.java:419) at com.webobjects.appserver._private.WOWorkerThread.run(WOWorkerThread.java:238) at java.lang.Thread.run(Thread.java:552)
"Thread-0" daemon prio=5 tid=0x005266e0 nid=0x1897400 waiting on condition [f0c89000..f0c89ac0] at java.lang.Thread.sleep(Native Method) at com.webobjects.appserver.WOApplication$_LifebeatThread.run(WOApplication.java:1233)
"Session Timeout Thread" daemon prio=5 tid=0x00525680 nid=0x1985800 waiting on condition [f0c08000..f0c08ac0] at java.lang.Thread.sleep(Native Method) at com.webobjects.appserver.WOSessionStore$_SessionTimeoutManager.run(WOSessionStore.java:110) at java.lang.Thread.run(Thread.java:552)
"Signal Dispatcher" daemon prio=10 tid=0x00508030 nid=0x1817800 waiting on condition [0..0]
"Finalizer" daemon prio=8 tid=0x00506ae0 nid=0x1811a00 in Object.wait() [f0a04000..f0a04ac0] at java.lang.Object.wait(Native Method) - waiting on <0x65723050> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:111) - locked <0x65723050> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:127) at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)
"Reference Handler" daemon prio=10 tid=0x005067b0 nid=0x1803e00 in Object.wait() [f0983000..f0983ac0] at java.lang.Object.wait(Native Method) - waiting on <0x657230b8> (a java.lang.ref.Reference$Lock) at java.lang.Object.wait(Object.java:429) at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:115) - locked <0x657230b8> (a java.lang.ref.Reference$Lock)
"main" prio=5 tid=0x00500c30 nid=0x1804c00 in Object.wait() [f07ff000..f08002c8] at java.lang.Object.wait(Native Method) - waiting on <0x65812088> (a com.webobjects.appserver._WORunLoop) at com.webobjects.appserver._WORunLoop._acceptInputBeforeDate(_WORunLoop.java:217) at com.webobjects.appserver._WORunLoop.runBeforeDate(_WORunLoop.java:71) - locked <0x65812088> (a com.webobjects.appserver._WORunLoop) at com.webobjects.appserver.WOApplication._runOnce(WOApplication.java:775) at com.webobjects.appserver.WOApplication.run(WOApplication.java:900) at com.webobjects.appserver.WOApplication.main(WOApplication.java:324) at Application.main(Application.java:38)
"VM Thread" prio=5 tid=0x00506030 nid=0x1806000 runnable
"VM Periodic Task Thread" prio=10 tid=0x00507f40 nid=0x1817400 waiting on condition "Exception Catcher Thread" prio=10 tid=0x00500dc0 nid=0x1805c00 runnable
thoughts?
On Jan 4, 2006, at 3:35 PM, Chuck Hill wrote:
On Jan 4, 2006, at 1:08 PM, James Cicenia wrote:
Hmmm... where is performAction?
WODirectAction, you might have to manually override it in DirectAction.
I have the following in Application:
public WOResponse handleActionRequestError(WORequest aRequest, Exception exception, String reason, WORequestHandler aHandler, String actionClassName, String actionName, Class actionClass, WOAction actionInstance) { if (actionInstance != null) { if(actionInstance.context().hasSession()) actionInstance.context().session().terminate(); com.hb.pages.Home home = (com.hb.pages.Home) pageWithName("Home", actionInstance.context()); return home.generateResponse(); } else { return handleException(exception, null); } }
this traps the error and sends them back to the homepage, however, it freezes the instance.
The first thing that I would do is to follow the advice that Gary Teter just posted and get a thread dump after it deadlocks. That should point to where the actual problem is.
Chuck
On Jan 4, 2006, at 2:20 PM, Chuck Hill wrote:
On Jan 4, 2006, at 12:14 PM, James Cicenia wrote:
Anyone have any obvious ideas why a bad directAction would freeze an instance?
I noticed this from a bad link going to a non-existent DirectAction.
It might vary by version :-(, but in at least some versions, if performAction throws and there is a session, the session will not get checked in which deadlocks that session. If the app is not dispatching requests concurrently, that will deadlock the entire app.
The solution to that one is to wrap performAction in a try..catch block and pass the exception off to Application.handleException.
--
--
|