<AWT Dev> <Awt Dev> [9] Review Request for 8130895: Test javax/swing/system/6799345/TestShutdown.java fails on Solaris11 Sparcv9

Sergey Bylokhov Sergey.Bylokhov at oracle.com
Mon Oct 19 17:12:25 UTC 2015


On 18.09.15 18:50, Semyon Sadetsky wrote:
>> Why do you think so? Each app context KFM has own keystrokes if it is
>> initialized from the thread that belongs to its ThreadGroup.
> Sorry. I see what you mean. That is corrected as well:
> http://cr.openjdk.java.net/~ssadetsky/8130895/webrev.02/

After the changes in KeyboardFocusManager.java it seems it is 
unnecessary to add the KfmAccessor holder in KeyboardFocusManagerPeerImpl?


>>>
>>>>>
>>>>>>
>>>>>> --Semyon
>>>>>>
>>>>>> On 7/23/2015 7:38 AM, Semyon Sadetsky wrote:
>>>>>>> Hi Sergey,
>>>>>>>
>>>>>>> As you said there are 2 issues here. The first is about
>>>>>>> KeyboardFocusManager initialization in the main event loop.
>>>>>>> And the second about initialization of the KeyboardManagerManager
>>>>>>> itself where keystrokes are shared between contexts.
>>>>>>> Or do you mean if I remove the keystrokes sharing then the
>>>>>>> KeyboardFocusManager can be initialized in the toolkit thread? Is
>>>>>>> that what you mean?
>>>>>>>
>>>>>>> --Semyon
>>>>>>>
>>>>>>> On 7/22/2015 8:20 PM, Sergey Bylokhov wrote:
>>>>>>>> It is unclear why it is unrelated, the stack trace from the bug:
>>>>>>>>
>>>>>>>> java.lang.ExceptionInInitializerError
>>>>>>>> at sun.misc.Unsafe.ensureClassInitialized(Native Method)
>>>>>>>> at
>>>>>>>> sun.awt.AWTAccessor.getKeyboardFocusManagerAccessor(AWTAccessor.java:966)
>>>>>>>>
>>>>>>>> at
>>>>>>>> sun.awt.KeyboardFocusManagerPeerImpl.<clinit>(KeyboardFocusManagerPeerImpl.java:46)
>>>>>>>>
>>>>>>>> at sun.awt.X11.XToolkit.run(XToolkit.java:611)
>>>>>>>> at sun.awt.X11.XToolkit.run(XToolkit.java:550)
>>>>>>>> at java.lang.Thread.run(Thread.java:745)
>>>>>>>> Caused by: java.lang.NullPointerException
>>>>>>>> at java.awt.AWTKeyStroke.getCachedStroke(AWTKeyStroke.java:255)
>>>>>>>> at java.awt.AWTKeyStroke.getAWTKeyStroke(AWTKeyStroke.java:394)
>>>>>>>> at
>>>>>>>> java.awt.KeyboardFocusManager.<clinit>(KeyboardFocusManager.java:332)
>>>>>>>>
>>>>>>>> ... 6 more
>>>>>>>>
>>>>>>>>
>>>>>>>> On 22.07.15 17:09, Semyon Sadetsky wrote:
>>>>>>>>> Hi Sergey,
>>>>>>>>>
>>>>>>>>> From the process point of view it's better to fix the issue you've
>>>>>>>>> found in another ticket. The failed test is not related to the
>>>>>>>>> keystrokes caching.
>>>>>>>>> So I suggest to push this fix as it is and file another JIRA for
>>>>>>>>> the keystrokes.
>>>>>>>>>
>>>>>>>>> --Semyon
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On 7/22/2015 3:58 PM, Sergey Bylokhov wrote:
>>>>>>>>>> Hi, Semyon.
>>>>>>>>>> NPE occurs when we initialize KFM on the Toolkit thread, but this
>>>>>>>>>> is only a part of the bug, another issue is that we will use
>>>>>>>>>> cached keystrokes on the toolkit thread. But this keystrokes is
>>>>>>>>>> bound to the appcontext so we should not use objects which
>>>>>>>>>> connect to the application on the toolkit thread. This code
>>>>>>>>>> should be carefully checked to remove appcontext related stuff
>>>>>>>>>> from the toolkit thread.
>>>>>>>>>>
>>>>>>>>>> On 21.07.15 12:40, Semyon Sadetsky wrote:
>>>>>>>>>>> Hello,
>>>>>>>>>>>
>>>>>>>>>>> Please review fix for JDK9:
>>>>>>>>>>> bug: https://bugs.openjdk.java.net/browse/JDK-8130895
>>>>>>>>>>> webrev: http://cr.openjdk.java.net/~ssadetsky/8130895/webrev.00/
>>>>>>>>>>>
>>>>>>>>>>> realSync() used in the test's TestRunnable class causes events
>>>>>>>>>>> come to the XAWT event loop but there are no any windows created
>>>>>>>>>>> at the moment and the system application context is not
>>>>>>>>>>> initialized. This results in attempt to create the
>>>>>>>>>>> KeyboardFocusManager instance on the XAWT's thread group during
>>>>>>>>>>> the XEvent dispatching. That in its turn causes NPE.
>>>>>>>>>>> The solution: since KeyboardFocusManager should never be
>>>>>>>>>>> instantiated in the toolkit event loop, the corresponding check
>>>>>>>>>>> was added.
>>>>>>>>>>>
>>>>>>>>>>> --Semyon
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Best regards, Sergey.
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Best regards, Sergey.
>>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Best regards, Sergey.
>>>>
>>>
>>>
>>
>


-- 
Best regards, Sergey.


More information about the awt-dev mailing list