<AWT Dev> [8] Review request for CR 8020210 [macosx] JVM crashes in CWrapper$NSWindow.screen(long)

Petr Pchelko petr.pchelko at oracle.com
Wed Jul 10 10:52:08 PDT 2013


Oh. Sorry. I was looking to another fix and looks like I forgot to revert the changes. I won't push the changes from AWTView.m

With best regards. Petr.

On Jul 10, 2013, at 9:50 PM, Anthony Petrov <anthony.petrov at oracle.com> wrote:

> Hi Petr,
> 
> The fix looks fine now. Thank you.
> 
> However, you've added a change in AWTView.m. Is it intentional? I'm not sure if this has any relation to the crash we're fixing.
> 
> --
> best regards,
> Anthony
> 
> On 07/10/2013 07:29 PM, Petr Pchelko wrote:
>> Hello, Anthony.
>> 
>> I've updated the fix again. Now we always use GC.
>> The new version is available here: http://cr.openjdk.java.net/~pchelko/8020210/webrev.02/
>> 
>> With best regards. Petr.
>> 
>> On Jul 10, 2013, at 4:22 PM, Anthony Petrov wrote:
>> 
>>> Thanks for the update. One more suggestion:
>>> 
>>>> 481             Insets i =  ((CGraphicsDevice)getGraphicsDevice()).getScreenInsets();
>>>> 482             Rectangle toBounds = getPeer().getGraphicsConfiguration().getBounds();
>>> 
>>> Perhaps we should get the GC first, and then use gc.getDevice() instead of replying on a possibly default GD when requesting the screen insets?
>>> 
>>> The fix looks good otherwise.
>>> 
>>> --
>>> best regards,
>>> Anthony
>>> 
>>> On 07/10/2013 03:38 PM, Petr Pchelko wrote:
>>>> Hello, Anthony.
>>>>> Does getGraphicsDevice() always return a non-null value?
>>>> Yes. If there's no device it returns the default one.
>>>> 
>>>>> A specific GC is always associated with a window. Why do we use the default one then?
>>>> You are right. That's a bug.
>>>> 
>>>>> After removing CWrapper.NSWindow.screen(), do we still use any of the CWrapper.NSScreen methods?
>>>> No, this is not used any more. Removed.
>>>> 
>>>> Please see the updated version here:
>>>> http://cr.openjdk.java.net/~pchelko/8020210/webrev.01/
>>>> 
>>>> With best regards. Petr.
>>>> 
>>>> On Jul 10, 2013, at 3:00 PM, Anthony Petrov wrote:
>>>> 
>>>>> Hi Petr,
>>>>> 
>>>>> A few questions:
>>>>> 
>>>>> Does getGraphicsDevice() always return a non-null value?
>>>>> 
>>>>> A specific GC is always associated with a window. Why do we use the default one then?
>>>>> 
>>>>> After removing CWrapper.NSWindow.screen(), do we still use any of the CWrapper.NSScreen methods?
>>>>> 
>>>>> --
>>>>> best regards,
>>>>> Anthony
>>>>> 
>>>>> On 07/10/2013 02:31 PM, Petr Pchelko wrote:
>>>>>> Hello, AWT Team.
>>>>>> 
>>>>>> Please review the fix for the following issue:
>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8020210
>>>>>> The fix is available at:
>>>>>> http://cr.openjdk.java.net/~pchelko/8020210/webrev.00/
>>>>>> 
>>>>>> In case the window is offscreen the [NSWindow screen] method could return null, so we crashed in CFRetain(screen). So the CWrapper.Window.screen method is quite dangerous. I've replaced it with getting screen bounds/insets using a GraphicsDevice.
>>>>>> 
>>>>>> With best regards. Petr.
>>>>>> 
>>>> 
>> 



More information about the awt-dev mailing list