<AWT Dev> Review request for 8165829: Android Studio 2.x crashes with NPE at sun.lwawt.macosx.CAccessibility.getAccessibleIndexInParent

Sergey Bylokhov Sergey.Bylokhov at oracle.com
Fri Sep 16 10:32:26 UTC 2016


On 15.09.16 14:48, Anton Tarasov wrote:
>> Yes, and my suggestion was to use the new method and default values
>> everywhere instead of invokeAndWait(Callable,Component).
>
> But the default value for a reference would be null, there's no need to
> request something else, unlike for primitive wrappers.
>
> Or your idea is to force passing a def value anyway?

If the references like Point from getLocationOnScreen() can be null, 
then ok. looks fine.

>
> Anton.
>
>>>> On 15.09.16 12:45, Anton Tarasov wrote:
>>>>> Hello,
>>>>>
>>>>> Please review the fix:
>>>>>
>>>>> bug: https://bugs.openjdk.java.net/browse/JDK-8165829
>>>>> webrev: http://cr.openjdk.java.net/~ant/JDK-8165829/jdk9/webrev.0
>>>>>
>>>>> (The bug is currently closed as “not an issue”, which is not quite
>>>>> true.
>>>>> So once and if the fix is approved I can take the ownership of the
>>>>> bug).
>>>>>
>>>>> The problem is this. Sometimes when a frame is closed there may
>>>>> appear a
>>>>> race condition:
>>>>>
>>>>> - removeNotify() is called on the frame on EDT and it removes all the
>>>>> events associated with the frame from the event queue.
>>>>>
>>>>> - The frame is requested by accessibility via the CAccessibility
>>>>> static
>>>>> methods (like CAccessibility.getAccessibleIndexInParent). Those
>>>>> methods
>>>>> are called from native on AppKit thread and they perform via
>>>>> invokeAndWait. The latter is wrapped with an InvocationEvent whose
>>>>> source is set to the frame. But, once the event is put on the event
>>>>> queue, it's purged by the removeNotify() call. As the result,
>>>>> invokeAndWait returns null. Then, in some of the mentioned methods
>>>>> 'null' is unboxed to a primitive 'int' or 'boolean' which results
>>>>> in NPE
>>>>> propagated to native. On the native side, the NPE is not properly
>>>>> handled and is just re-thrown.
>>>>>
>>>>> I don't have a simple and safe solution for the race. So, I suggest to
>>>>> fix the NPE/crash at least.
>>>>>
>>>>> Thanks,
>>>>> Anton.
>>>>>
>>>>>
>>>>
>>>>
>>>
>>
>>
>


-- 
Best regards, Sergey.


More information about the awt-dev mailing list