RFR 6720349: NotificationBufferDeadlockTest.java throw exception: java.lang.Exception: TEST FAILED: Deadlock detected

shanliang shanliang.jiang at oracle.com
Tue Jan 6 12:56:05 UTC 2015


David Holmes wrote:
> On 6/01/2015 9:03 PM, shanliang wrote:
>> David,
>>
>> Here is the new version, I have added the comments as you suggested, and
>> I replaced the variable "sources" with a synchronized list.
>
> Why did you do that ?? Vector is synchronized so it was fine for the job.
You are right! I have changed back to Vector:
    http://cr.openjdk.java.net/~sjiang/JDK-8068418/02/

I forgot Vetor is synchronized, so long time not use it.

Thanks,
Shanliang
>
> David
>
>>     http://cr.openjdk.java.net/~sjiang/JDK-8068418/01/
>>
>> Thanks for the review.
>> Shanliang
>>
>> David Holmes wrote:
>>> Hi Shanliang,
>>>
>>> On 6/01/2015 3:47 AM, shanliang wrote:
>>>> Hi,
>>>>
>>>> Please review this fix:
>>>>
>>>> bug: https://bugs.openjdk.java.net/browse/JDK-8068418
>>>> webrev: http://cr.openjdk.java.net/~sjiang/JDK-8068418/00/
>>>>
>>>> This must be a timing issue in the test, the test called:
>>>>     t.join(5000L); to wait a thread's dying,  I reproduced the bug by
>>>> insert at line 202:
>>>>     try {
>>>>         Thread.sleep(5100);
>>>>     } catch (Exception ee) {}
>>>> to delay the t's dying.
>>>>
>>>> The fix is to replace:
>>>>     t.join(5000L);
>>>> by:
>>>>     t.join();
>>>>
>>>> and replace:
>>>>     Object.wait(timeout);
>>>> by
>>>>     CountDownLatch.countDown();
>>>
>>> Okay - you could have just done wait() but the switch to
>>> CountDownLatch is somewhat cleaner.
>>>
>>>> The test harness timeout will be used as the max waiting timeout.
>>>
>>> So the test will now never report that it thinks it has hit a
>>> deadlock, it will just timeout. But you added some extra printout so
>>> okay I guess - but I suggest adding a comment at the top (where @run
>>> etc are) saying that if test times out then deadlock is suspected.
>>>
>>> Minor nit:
>>>
>>>  System.out.println("DeadlockTest-addNotificationListener waiting the
>>> XXX thread to die.
>>>
>>> should say "waiting for the XXX thread ..."
>>>
>>> Thanks,
>>> David
>>>
>>>> Shanliang
>>



More information about the serviceability-dev mailing list