<AWT Dev> [9] Review Request: JDK-8042087 [macosx] LWCToolkit.inokeAndWait is calling EventQueue.invokeLater

Sergey Bylokhov Sergey.Bylokhov at oracle.com
Tue Apr 29 18:59:38 UTC 2014


On 4/29/14 9:57 PM, Anthony Petrov wrote:
> Sounds good. Thanks for the clarification. If our existing regression 
> tests don't fail with the fix, then I'm OK with it.
Looks fine to me too. Do not forget to file CR against 
EventQueue.invokeLater in systemColorsChanged.
>
> -- 
> best regards,
> Anthony
>
> On 4/29/2014 9:54 PM, Petr Pchelko wrote:
>> Hello, Anthony.
>>
>> Than you for the review.
>>
>>> While the bug description and the solution sound reasonable, I'm 
>>> still a bit concerned about the presence of the if(component==null) 
>>> branch in the old code. I see that the code has been updated 
>>> recently (with lambdas and friends), and is aware of the app 
>>> contexts thing. So someone who wrote it, added that branch 
>>> consciously. Or left it there from the former version of the code 
>>> that might not be aware of the app contexts problems. In either 
>>> case, w/o knowing why the branch is there in the first place, it 
>>> seems a bit scary to just chop it off.
>>> Could you please investigate a bit more and provide some details so 
>>> that we could be sure this change doesn't cause any regressions?
>> I’ve updated this code many times and the null branch was there from 
>> the very beginning. At first Appkit thread was in the main thread 
>> group, so this branch could work and it was scary to remove it. It 
>> was obviously wrong for security reasons, because it was posting an 
>> event to plugin event queue.
>> After we’ve moved Appkit to the root thread group which does not have 
>> any AppContext in plugin mode, this branch will always fail with NPE.
>>
>> This could lead to regressions, but these would be not “regressions”, 
>> but existing bugs that we didn’t find yet. If applets were tested 
>> more, all the regressions would have already been filed in JBS. So 
>> the idea of this fix is to remove the branch which will always fail 
>> in plugin mode so that we could find plugin bugs while running in 
>> desktop mode. I’m not going to back port this change, because it’s 
>> too risky for update releases, but I think it’s OK for JDK 9. It’s 
>> always better to catch bugs early.
>>
>> With best regards. Petr.
>>
>> On Apr 29, 2014, at 9:37 PM, Anthony Petrov 
>> <anthony.petrov at oracle.com> wrote:
>>
>>> Hi Petr,
>>>
>>> While the bug description and the solution sound reasonable, I'm 
>>> still a bit concerned about the presence of the if(component==null) 
>>> branch in the old code. I see that the code has been updated 
>>> recently (with lambdas and friends), and is aware of the app 
>>> contexts thing. So someone who wrote it, added that branch 
>>> consciously. Or left it there from the former version of the code 
>>> that might not be aware of the app contexts problems. In either 
>>> case, w/o knowing why the branch is there in the first place, it 
>>> seems a bit scary to just chop it off.
>>>
>>> Could you please investigate a bit more and provide some details so 
>>> that we could be sure this change doesn't cause any regressions?
>>>
>>> -- 
>>> best regards,
>>> Anthony
>>>
>>> On 4/29/2014 3:04 PM, Petr Pchelko wrote:
>>>> Hello, Sergey.
>>>>
>>>>>> Hello, AWT Team.
>>>>>>
>>>>>> Please review the fix for the issue:
>>>>>> https://bugs.openjdk.java.net/browse/JDK-8042087
>>>>>> The fix is available at:
>>>>>> http://cr.openjdk.java.net/~pchelko/9/8042087/webrev/
>>>>>>
>>>>>> The problem is that we are using EventQueue.invokeLater on the 
>>>>>> Toolkit thread.
>>>>> I guess the fix changes 
>>>>> getSystemEventQueueForInvokeAndWait().postEvent(), and 
>>>>> EventQueue.invokeLater is used in another place of LWCToolkit in 
>>>>> systemColorsChanged().
>>>>>> In applet mode this would fail with NPE. So I've removed the 
>>>>>> non-working code branch, made general cleanup and added a null 
>>>>>> check for the component provided to invokeAndWait and invokeLater 
>>>>>> methods.
>>>> Yes, I've called the bug incorrectly) It should be called "[macosx] 
>>>> LWCToolkit.inokeAndWait is relying on main AppContext".. Sorry 
>>>> for     inaccuracy. I've renamed the issue.
>>>>
>>>> With best regards. Petr.
>>>>
>>>> On 29.04.2014, at 14:38, Sergey Bylokhov 
>>>> <Sergey.Bylokhov at oracle.com> wrote:
>>>>
>>>>> On 4/29/14 12:32 PM, Petr Pchelko wrote:
>>>>>> Hello, AWT Team.
>>>>>>
>>>>>> Please review the fix for the issue:
>>>>>> https://bugs.openjdk.java.net/browse/JDK-8042087
>>>>>> The fix is available at:
>>>>>> http://cr.openjdk.java.net/~pchelko/9/8042087/webrev/
>>>>>>
>>>>>> The problem is that we are using EventQueue.invokeLater on the 
>>>>>> Toolkit thread.
>>>>> I guess the fix changes 
>>>>> getSystemEventQueueForInvokeAndWait().postEvent(), and 
>>>>> EventQueue.invokeLater is used in another place of LWCToolkit in 
>>>>> systemColorsChanged().
>>>>>> In applet mode this would fail with NPE. So I've removed the 
>>>>>> non-working code branch, made general cleanup and added a null 
>>>>>> check for the component provided to invokeAndWait and invokeLater 
>>>>>> methods.
>>>>>> We don't have open bugs on Mac about NPE in applet mode, so most 
>>>>>> likely the removed branch was never executed. But with this fix 
>>>>>> we would catch possible errors early.
>>>>>>
>>>>>> With best regards. Petr.
>>>>>
>>>>>
>>>>> -- 
>>>>> Best regards, Sergey.
>>>>>
>>>>
>>


-- 
Best regards, Sergey.



More information about the awt-dev mailing list