为啥Holding lock会导致weblogic挂掉?

haoweishow01 2011-05-14 11:21:28
weblogic发生异常的挂掉,打印的堆栈信息如下,有几个不明白的地方,望各位好心人帮忙看看。
dump文件里有好几种信息,不明白是什么含义

1. 下面这个是不是表示这个线程是正常的?

"Finalizer" id=7 idx=0x3c tid=28893 prio=8 alive, in native, native_waiting, daemon
at jrockit/memory/Finalizer.waitForFinalizees([Ljava/lang/Object;)I(Native Method)
at jrockit/memory/Finalizer.access$500(Finalizer.java:12)
at jrockit/memory/Finalizer$4.run(Finalizer.java:152)
at java/lang/Thread.run(Thread.java:595)
at jrockit/vm/RNI.c2java(IIIII)V(Native Method)
-- end of trace


2. 这个也是正常的吧,看到有Lock released

"Timer-0" id=12 idx=0x48 tid=28920 prio=5 alive, in native, waiting, daemon
-- Waiting for notification on: java/util/TaskQueue@0x1e38b098[fat lock]
at jrockit/vm/Threads.waitForNotifySignal(JLjava/lang/Object;)Z(Native Method)
at java/lang/Object.wait(J)V(Native Method)
at java/util/TimerThread.mainLoop(Timer.java:509)
^-- Lock released while waiting: java/util/TaskQueue@0x1e38b098[fat lock]
at java/util/TimerThread.run(Timer.java:462)
at jrockit/vm/RNI.c2java(IIIII)V(Native Method)
-- end of trace


3. 下面这个是不是发生问题的地方呢?这里有Holding lock,有weblogic的,也有我们自己程序的(这里修改了包名),就想知道会不会是因为这里的lock导致weblogic挂掉呢?

"ExecuteThread: '3' for queue: 'weblogic.socket.Muxer'" id=25 idx=0x74 tid=28931 prio=5 alive, in native, daemon
at jrockit/ext/epoll/EPoll.epollWait0(IIII)I(Native Method)
at jrockit/ext/epoll/EPoll.epollWait(EPoll.java:103)
at weblogic/socket/EPollSocketMuxer.processSockets(EPollSocketMuxer.java:156)
^-- Holding lock: java/lang/String@0x1e3923a8[fat lock]
at weblogic/socket/SocketReaderRequest.run(SocketReaderRequest.java:29)
at weblogic/socket/SocketReaderRequest.execute(SocketReaderRequest.java:42)
at weblogic/kernel/ExecuteThread.execute(ExecuteThread.java:145)
at weblogic/kernel/ExecuteThread.run(ExecuteThread.java:117)
at jrockit/vm/RNI.c2java(IIIII)V(Native Method)
-- end of trace

"Timer-3" id=48 idx=0xac tid=28970 prio=5 alive, in native, daemon
at jrockit/net/SocketNativeIO.readBytesPinned(Ljava/io/FileDescriptor;[BIII)I(Native Method)
at jrockit/net/SocketNativeIO.socketRead(SocketNativeIO.java:31)
at java/net/SocketInputStream.socketRead0(Ljava/io/FileDescriptor;[BIII)I(SocketInputStream.java)
at java/net/SocketInputStream.read(SocketInputStream.java:129)
at oracle/net/ns/Packet.receive()V(Unknown Source)
at oracle/net/ns/DataPacket.receive()V(Unknown Source)
at oracle/net/ns/NetInputStream.getNextPacket()V(Unknown Source)
at oracle/net/ns/NetInputStream.read([BII)I(Unknown Source)
at oracle/net/ns/NetInputStream.read([B)I(Unknown Source)
at oracle/net/ns/NetInputStream.read()I(Unknown Source)
at oracle/jdbc/driver/T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1099)
at oracle/jdbc/driver/T4CMAREngine.unmarshalSB1(T4CMAREngine.java:1070)
at oracle/jdbc/driver/T4C8Oall.receive(T4C8Oall.java:478)
at oracle/jdbc/driver/T4CPreparedStatement.doOall8(T4CPreparedStatement.java:216)
at oracle/jdbc/driver/T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:955)
at oracle/jdbc/driver/OracleStatement.executeMaybeDescribe(OracleStatement.java:1060)
at oracle/jdbc/driver/T4CPreparedStatement.executeMaybeDescribe(T4CPreparedStatement.java:839)
at oracle/jdbc/driver/OracleStatement.doExecuteWithTimeout(OracleStatement.java:1132)
at oracle/jdbc/driver/OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3316)
at oracle/jdbc/driver/OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3361)
^-- Holding lock: oracle/jdbc/driver/T4CConnection@0x15156610[thin lock]
^-- Holding lock: oracle/jdbc/driver/T4CPreparedStatement@0x3c5ec1a0[thin lock]
at weblogic/jdbc/wrapper/PreparedStatement.executeQuery(PreparedStatement.java:97)
at com/xx/db/DBSql.queryRecordsStatic(DBSql.java:681)
at com/xx/db/DBSql.queryRecords(DBSql.java:221)
at com/xx/xx/xx/dao/EsbMsgDao.queryRecords(EsbMsgDao.java:101)
at com/xx/xx/xx/dao/EsbMsgLog.queryMsgCallBack(EsbMsgLog.java:80)
at com/xx/xx/xx/task/MainProcessor.callbackProcessor(MainProcessor.java:120)
at com/xx/xx/xx/task/MainProcessor.doProcessor(MainProcessor.java:29)
at com/xx/xx/xx/task/EsbMsgRunTask.runTask(EsbMsgRunTask.java:41)
at com/xx/frame/task/TaskManager$1MyTimerTask.run(TaskManager.java:301)
at java/util/TimerThread.mainLoop(Timer.java:512)
at java/util/TimerThread.run(Timer.java:462)
at jrockit/vm/RNI.c2java(IIIII)V(Native Method)
-- end of trace


"Thread-18" id=54 idx=0xc4 tid=28976 prio=5 alive, in native, daemon
at java/net/PlainSocketImpl.socketAccept(Ljava/net/SocketImpl;)V(Native Method)
at java/net/PlainSocketImpl.accept(PlainSocketImpl.java:384)
^-- Holding lock: java/net/SocksSocketImpl@0x2ac27060[fat lock]
at java/net/ServerSocket.implAccept(ServerSocket.java:450)
at java/net/ServerSocket.accept(ServerSocket.java:421)
at com/xx/xx/xx/xx/xx/FlowCtrlListenThread.run(FlowCtrlListenThread.java:25)
at jrockit/vm/RNI.c2java(IIIII)V(Native Method)
-- end of trace



dump文件里的异常就上面三种,我想问题肯定是出在holding lock上。 这种holding lock能否这么理解,就比如说一个线程A写文件,写的同时对文件加锁,不允许其他线程写。但是现在又有线程B,C,D。。。要写这个文件,但是A又一直不释放锁。时间久了会不会导致weblogic挂掉呢?
这个holding lock到底是什么含义呢?
...全文
538 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zx120829040 2013-06-05
  • 打赏
  • 举报
回复
我也遇到了相同的情况,有没有人知道?求解。
wl_ldy 2011-05-14
  • 打赏
  • 举报
回复
还没弄过WebLogic,帮顶了。。。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧