[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openjdk-swing-dev
Subject:    Re: <Swing Dev> [11] RFR JDK-8197825: [Test] Intermiitent timeout with javax/swing JColorChooser Tes
From:       Sergey Bylokhov <Sergey.Bylokhov () oracle ! com>
Date:       2018-02-14 14:24:09
Message-ID: 4b9520da-0629-75b3-0c5a-ef3ab8847efd () oracle ! com
[Download RAW message or body]

On 14/02/2018 02:58, Prasanta Sadhukhan wrote:
> Maybe the robot mouse events are not getting enough time to be processed 
> which is why the toolkit shutdown is not able to happen as those are 
> still in the event queue. Adding waitForIdle() in the test allows those 
> robot events to be processed and then toolkit thread gets chance to get 
> disposed and system shutdown takes place ok.

Maybe this is the case, but robot just generates an events, it can be 
possible that the bug can be reproduced by the user and mouse(I guess 
the problem is in the timings). But even in this case the shutdown hook 
should not hang, because it block the whole jdk.

> 
> Regards
> Prasanta
> On 2/14/2018 12:51 PM, Sergey Bylokhov wrote:
>> Hi, Prasanta.
>> I think that the suspicious place in the stack is below, it tries to 
>> execute hooks during system shutdown and hangs.
>>
>> The hook which hangs is "ToolkitShutdown #18 daemon" from the WToolkit 
>> class. I guess   that the code which hangs is a loop in the:
>> Java_sun_awt_windows_WToolkit_shutdown:
>>        while (!tk.IsDisposed()) {
>>                Sleep(100);
>>        }
>>
>> So it does not look like a test bug.
>>
>> On 13/02/2018 22:38, Prasanta Sadhukhan wrote:
>>> "main" #1 prio=5 os_prio=0 tid=0x000001b83d8ad000 nid=0x3e84 in 
>>> Object.wait() [0x0000003e642fe000]
>>>        java.lang.Thread.State: WAITING (on object monitor)
>>>           at java.lang.Object.wait(java.base@10-ea/Native Method)
>>>           - waiting on <0x00000006d2880200> (a java.lang.Thread)
>>>           at java.lang.Thread.join(java.base@10-ea/Thread.java:1353)
>>>           - waiting to re-lock in wait() <0x00000006d2880200> (a 
>>> java.lang.Thread)
>>>           at java.lang.Thread.join(java.base@10-ea/Thread.java:1427)
>>>           at 
>>> java.lang.ApplicationShutdownHooks.runHooks(java.base@10-ea/ApplicationShutdownHooks.java:107) 
>>>
>>>           at 
>>> java.lang.ApplicationShutdownHooks$1.run(java.base@10-ea/ApplicationShutdownHooks.java:46) 
>>>
>>>           at java.lang.Shutdown.runHooks(java.base@10-ea/Shutdown.java:123)
>>>           at java.lang.Shutdown.sequence(java.base@10-ea/Shutdown.java:167)
>>>           at java.lang.Shutdown.exit(java.base@10-ea/Shutdown.java:212)
>>
>>
> 


-- 
Best regards, Sergey.
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic