JDK-5085747 : Java level deadlock in java.util.Vector.writeObject
  • Type: Bug
  • Component: core-libs
  • Sub-Component: java.util:collections
  • Affected Version: 1.4.2_05
  • Priority: P3
  • Status: Closed
  • Resolution: Not an Issue
  • OS: solaris_8
  • CPU: generic
  • Submitted: 2004-08-11
  • Updated: 2021-03-03
  • Resolved: 2005-02-28
Related Reports
Relates :  
Relates :  
Relates :  
Description
running 1.4.2_05 a java level deadlock is detected in java.util.Vector.writeObject
The alternate Libthread library was used in this run as well.

The full thread dump log and pstack is located at 
/net/cores.ebay/cores/64193065

Here is a snippet of the threads

Found one Java-level deadlock:
=============================
"ExecuteThread: '125' for queue: 'default'":
  waiting to lock monitor 0x00e2bd38 (object 0x981a6070, a java.util.Vector),
  which is held by "ExecuteThread: '115' for queue: 'default'"
"ExecuteThread: '115' for queue: 'default'":
  waiting to lock monitor 0x00e2bd70 (object 0x9819f178, a java.util.Vector),
  which is held by "ExecuteThread: '125' for queue: 'default'"

Java stack information for the threads listed above:
===================================================
"ExecuteThread: '125' for queue: 'default'":
        at java.util.Vector.writeObject(Vector.java:1017)
        - waiting to lock <0x981a6070> (a java.util.Vector)
        at sun.reflect.GeneratedMethodAccessor118.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:324)
        at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:809)
        at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1296)
        at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1247)
        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052)
        at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1332)
        at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1304)
        at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1247)
        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052)
        at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1332)
        at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1304)
        at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1247)
        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052)
        at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1332)
        at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1304)
        at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1247)
        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052)
        at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1224)
        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1050)
        at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1332)
        at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:367)
        at java.util.Vector.writeObject(Vector.java:1017)
        - locked <0x9819f178> (a java.util.Vector)
        at sun.reflect.GeneratedMethodAccessor118.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:324)
        at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:809)
        at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1296)



"ExecuteThread: '115' for queue: 'default'":
        at java.util.Vector.writeObject(Vector.java:1017)
        - waiting to lock <0x9819f178> (a java.util.Vector)
        at sun.reflect.GeneratedMethodAccessor118.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:324)
        at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:809)
        at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1296)
        at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1247)
        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052)
        at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1332)
        at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1304)
        at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1247)
        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052)
        at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1332)
        at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1304)
        at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1247)
        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052)
        at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1332)
        at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1304)
        at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1247)
        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052)
        at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1224)
        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1050)
        at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1332)
        at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:367)
        at java.util.Vector.writeObject(Vector.java:1017)
        - locked <0x981a6070> (a java.util.Vector)
        at sun.reflect.GeneratedMethodAccessor118.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:324)
        at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:809)
        at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1296)
        at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1247)
        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052)
        at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1332)
        at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1304)
        at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1247)


-----------------  lwp# 115 / thread# 115  --------------------
 ff31f440 lwp_cond_wait (9c80c8, 9c80b0, 0)
 ff316984 _lwp_cond_wait (9c80c8, 9c80b0, 9c7638, 0, 0, 0) + c
 fee4d680 __1cNObjectMonitorEwait6MxipnGThread__v_ (5000, 5280, 5000, 5100, 9c7638, 0) + 5ac
 fee4cbc0 JVM_MonitorWait (9c76cc, 5d07fa04, 0, 0, 0, 0) + 158
 fa00b96c ???????? (5d07fa04, b6, 0, 77689df0, 0, 0)
 fa005804 ???????? (5d07fa7c, b6, 0, fa015e84, c, 5d07f9a0)
 fa005804 ???????? (5d07fb0c, b7, 0, fa015e50, 4, 5d07fa20)
 fa005804 ???????? (5d07fb9c, 0, 0, fa0160d0, 4, 5d07faa8)
 fa00010c ???????? (5d07fc28, 5d07fe90, a, ea6d0bb0, 4, 5d07fb40)
 fed5bcf8 __1cJJavaCallsLcall_helper6FpnJJavaValue_pnMmethodHandle_pnRJavaCallArguments_pnGThread__v_ (5d07fe88, 5d07fcf0
, 5d07fda8, 9c7638, 9c7638, 5d07fd00) + 27c
 fee4a3e4 __1cJJavaCallsMcall_virtual6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4pnRJavaCallArguments_pnGThread__v_ (ff1
82000, 9c7be0, 5d07fd9c, 5d07fd98, 5d07fda8, 9c7638) + 164
 fee5d5a8 __1cJJavaCallsMcall_virtual6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_5pnGThread__v_ (5d07fe88, 5d07f
e84, 5d07fe7c, 5d07fe74, 5d07fe6c, 9c7638) + 6c
 fee6e8f8 __1cMthread_entry6FpnKJavaThread_pnGThread__v_ (9c7638, 9c7638, 1701a88, 9c7be0, 31a08c, fee67ed8) + 128
 fee67f00 __1cKJavaThreadDrun6M_v_ (9c7638, 73, 40, 0, 40, 0) + 284
 fee643e0 _start   (9c7638, 64942400, 0, 0, 0, 0) + 134
 ff374b90 _lwp_start (0, 0, 0, 0, 0, 0)

-----------------  lwp# 125 / thread# 125  --------------------
 ff31f440 lwp_cond_wait (561470, 561458, 0)
 ff316984 _lwp_cond_wait (561470, 561458, 5609e0, 0, 0, 0) + c
 fee4d680 __1cNObjectMonitorEwait6MxipnGThread__v_ (5000, 5280, 5000, 5100, 5609e0, 0) + 5ac
 fee4cbc0 JVM_MonitorWait (560a74, 5c67fa04, 0, 0, 0, 0) + 158
 fa00b96c ???????? (5c67fa04, b6, 0, 77689df0, 0, 0)
 fa005804 ???????? (5c67fa7c, b6, 0, fa015e84, c, 5c67f9a0)
 fa005804 ???????? (5c67fb0c, b7, 0, fa015e50, 4, 5c67fa20)
 fa005804 ???????? (5c67fb9c, 0, 0, fa0160d0, 4, 5c67faa8)
 fa00010c ???????? (5c67fc28, 5c67fe90, a, ea6d0bb0, 4, 5c67fb40)
 fed5bcf8 __1cJJavaCallsLcall_helper6FpnJJavaValue_pnMmethodHandle_pnRJavaCallArguments_pnGThread__v_ (5c67fe88, 5c67fcf0
, 5c67fda8, 5609e0, 5609e0, 5c67fd00) + 27c
 fee4a3e4 __1cJJavaCallsMcall_virtual6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4pnRJavaCallArguments_pnGThread__v_ (ff1
82000, 560f88, 5c67fd9c, 5c67fd98, 5c67fda8, 5609e0) + 164
 fee5d5a8 __1cJJavaCallsMcall_virtual6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_5pnGThread__v_ (5c67fe88, 5c67f
e84, 5c67fe7c, 5c67fe74, 5c67fe6c, 5609e0) + 6c
 fee6e8f8 __1cMthread_entry6FpnKJavaThread_pnGThread__v_ (5609e0, 5609e0, 1701d08, 560f88, 31a08c, fee67ed8) + 128
 fee67f00 __1cKJavaThreadDrun6M_v_ (5609e0, 7d, 40, 0, 40, 0) + 284
 fee643e0 _start   (5609e0, 64943800, 0, 0, 0, 0) + 134
 ff374b90 _lwp_start (0, 0, 0, 0, 0, 0)


Comments
EVALUATION It's likely that this problem occurs when two Vectors reference each other but that's unclear from the bug report. Does this problem also occur using jdk1.5? How about jdk1.4.2_04? Please provide a reproducible test case so that the problem can be tracked down. -- iag@sfbay 2004-08-16 No further information has been provided. As the suspected cause of this problem is not something that can readily be changed, this report is being closed. ###@###.### 2005-2-28 18:48:08 GMT
28-02-2005