[concurrency-interest] Nested synchronized

Dr Heinz M. Kabutz heinz at javaspecialists.eu
Fri Jan 6 01:48:58 EST 2012


Oh just to add.  When this happens, the JVM freezes completely.  You
cannot get a stack dump or attach with any monitoring tools.  You can
only kill it with -9.

On 06/01/2012, Dr Heinz M. Kabutz <heinz at javaspecialists.eu> wrote:
> We found a similar problem, but it only occurs with the latest i7
> chipsets on the Mac.  We think it might be a Mac OS problem.  It would
> be interesting to try booting with Linux (bootcamp?) and then to
> verify that this is a problem with the JVM on Mac rather than the
> hardware.  Could you try that, Howard?
>
> Heinz
>
> On 06/01/2012, Gregg Wonderly <gergg at cox.net> wrote:
>> On my mac, it seems to complete successfully.  I've included a stack dump
>> just FYI.
>>
>> Gregg Wonderly
>>
>> gwmac:~ gregg$ javac -d . Prob.java
>> gwmac:~ gregg$ java my.Prob
>> ^\
>> 2012-01-05 22:48:09
>> Full thread dump Java HotSpot(TM) 64-Bit Server VM (20.4-b02-402 mixed
>> mode):
>>
>> "pool-1-thread-2" prio=5 tid=7ffd42969800 nid=0x10c132000 runnable
>> [10c131000]
>>    java.lang.Thread.State: RUNNABLE
>> 	at my.ParrallelSumMethod.conditionallySumArguments(Prob.java:87)
>> 	- locked <7f44e1400> (a my.ParrallelSumMethod)
>> 	at my.ParrallelSumMethod.isSetA2(Prob.java:80)
>> 	- locked <7f44e1400> (a my.ParrallelSumMethod)
>> 	at my.ParrallelSumMethod.setA2(Prob.java:57)
>> 	at my.Prob$2.call(Prob.java:28)
>> 	at my.Prob$2.call(Prob.java:26)
>> 	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
>> 	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
>> 	at
>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>> 	at
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>> 	at java.lang.Thread.run(Thread.java:680)
>>
>> "pool-1-thread-1" prio=5 tid=7ffd4287f000 nid=0x10c02f000 runnable
>> [10c02e000]
>>    java.lang.Thread.State: RUNNABLE
>> 	at java.lang.Thread.isInterrupted(Native Method)
>> 	at java.lang.Thread.interrupted(Thread.java:934)
>> 	at my.ParrallelSumMethod.checkForInterrupt(Prob.java:65)
>> 	at my.ParrallelSumMethod.setA1(Prob.java:51)
>> 	at my.Prob$1.call(Prob.java:22)
>> 	at my.Prob$1.call(Prob.java:20)
>> 	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
>> 	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
>> 	at
>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>> 	at
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>> 	at java.lang.Thread.run(Thread.java:680)
>>
>> "Low Memory Detector" daemon prio=5 tid=7ffd4409f000 nid=0x10bc3d000
>> runnable [00000000]
>>    java.lang.Thread.State: RUNNABLE
>>
>> "C2 CompilerThread1" daemon prio=9 tid=7ffd4409e800 nid=0x10bb3a000
>> waiting
>> on condition [00000000]
>>    java.lang.Thread.State: RUNNABLE
>>
>> "C2 CompilerThread0" daemon prio=9 tid=7ffd4409d800 nid=0x10ba37000
>> waiting
>> on condition [00000000]
>>    java.lang.Thread.State: RUNNABLE
>>
>> "Signal Dispatcher" daemon prio=9 tid=7ffd4409d000 nid=0x10b934000
>> waiting
>> on condition [00000000]
>>    java.lang.Thread.State: RUNNABLE
>>
>> "Surrogate Locker Thread (Concurrent GC)" daemon prio=5 tid=7ffd4409c000
>> nid=0x10b831000 waiting on condition [00000000]
>>    java.lang.Thread.State: RUNNABLE
>>
>> "Finalizer" daemon prio=8 tid=7ffd44095800 nid=0x10b54f000 in
>> Object.wait()
>> [10b54e000]
>>    java.lang.Thread.State: WAITING (on object monitor)
>> 	at java.lang.Object.wait(Native Method)
>> 	- waiting on <7f44e10c0> (a java.lang.ref.ReferenceQueue$Lock)
>> 	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)
>> 	- locked <7f44e10c0> (a java.lang.ref.ReferenceQueue$Lock)
>> 	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:134)
>> 	at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)
>>
>> "Reference Handler" daemon prio=10 tid=7ffd44094800 nid=0x10b44c000 in
>> Object.wait() [10b44b000]
>>    java.lang.Thread.State: WAITING (on object monitor)
>> 	at java.lang.Object.wait(Native Method)
>> 	- waiting on <7f44e1ff8> (a java.lang.ref.Reference$Lock)
>> 	at java.lang.Object.wait(Object.java:485)
>> 	at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116)
>> 	- locked <7f44e1ff8> (a java.lang.ref.Reference$Lock)
>>
>> "main" prio=5 tid=7ffd44000800 nid=0x104aee000 waiting on condition
>> [104aed000]
>>    java.lang.Thread.State: TIMED_WAITING (parking)
>> 	at sun.misc.Unsafe.park(Native Method)
>> 	- parking to wait for  <7f44e2070> (a
>> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
>> 	at
>> java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:196)
>> 	at
>> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2025)
>> 	at
>> java.util.concurrent.ThreadPoolExecutor.awaitTermination(ThreadPoolExecutor.java:1253)
>> 	at my.Prob.main(Prob.java:36)
>>
>> "VM Thread" prio=9 tid=7ffd42802800 nid=0x10b349000 runnable
>>
>> "Gang worker#0 (Parallel GC Threads)" prio=9 tid=7ffd44002000
>> nid=0x107e27000 runnable
>>
>> "Gang worker#1 (Parallel GC Threads)" prio=9 tid=7ffd44002800
>> nid=0x107f2a000 runnable
>>
>> "Concurrent Mark-Sweep GC Thread" prio=9 tid=7ffd4404d000 nid=0x10afef000
>> runnable
>> "VM Periodic Task Thread" prio=10 tid=7ffd440a1000 nid=0x10bd40000
>> waiting
>> on condition
>>
>> "Exception Catcher Thread" prio=10 tid=7ffd44001800 nid=0x104c50000
>> runnable
>> JNI global references: 914
>>
>> Heap
>>  par new generation   total 19136K, used 5150K [7f3000000, 7f44c0000,
>> 7f44c0000)
>>   eden space 17024K,  30% used [7f3000000, 7f35078b8, 7f40a0000)
>>   from space 2112K,   0% used [7f40a0000, 7f40a0000, 7f42b0000)
>>   to   space 2112K,   0% used [7f42b0000, 7f42b0000, 7f44c0000)
>>  concurrent mark-sweep generation total 63872K, used 379K [7f44c0000,
>> 7f8320000, 7fae00000)
>>  concurrent-mark-sweep perm gen total 21248K, used 4811K [7fae00000,
>> 7fc2c0000, 800000000)
>>
>> 99999990000000, terminated ok
>> gwmac:~ gregg$ java -version
>> java version "1.6.0_29"
>> Java(TM) SE Runtime Environment (build 1.6.0_29-b11-402-11M3527)
>> Java HotSpot(TM) 64-Bit Server VM (build 20.4-b02-402, mixed mode)
>> gwmac:~ gregg$
>> _______________________________________________
>> Concurrency-interest mailing list
>> Concurrency-interest at cs.oswego.edu
>> http://cs.oswego.edu/mailman/listinfo/concurrency-interest
>>
>
>
> --
> Dr Heinz M. Kabutz (PhD CompSci)
> Author of "The Java(tm) Specialists' Newsletter"
> Sun Java Champion
> IEEE Certified Software Development Professional
> http://www.javaspecialists.eu
> Tel: +30 69 72 850 460
> Skype: kabutz
>


-- 
Dr Heinz M. Kabutz (PhD CompSci)
Author of "The Java(tm) Specialists' Newsletter"
Sun Java Champion
IEEE Certified Software Development Professional
http://www.javaspecialists.eu
Tel: +30 69 72 850 460
Skype: kabutz


More information about the Concurrency-interest mailing list