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

David Holmes david.holmes at oracle.com
Tue Jan 6 12:08:40 UTC 2015


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.

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