<AWT Dev> [9] Review Request: 8165717 Various memory leaks in jdk9

Sergey Bylokhov Sergey.Bylokhov at oracle.com
Wed Sep 14 15:35:28 UTC 2016


Hello.

Please review the small fix for jdk9. Note that I plan to backport it to 
jdk8:

NSApplicationAWT class have a special method which posts event to the 
native queue. This event is used to execute the block of code which 
contains CFRelease for some native resource. It was implemented in this 
way (instead of simple "performOnmMainThread") because we should filter 
this event when the nested native loop is active. The problem is that 
this method overretain the block. [block copy] copy the block from the 
stack and retain it(or just retain if the block is in memory already), 
and since we retain it again we get a memory leak, because we release it 
only once in NSApplicationAWT.sendEvent(). The leak is quite small but 
the code can be executed lots of time which cause allocation of 
unreasonable amount of memory. There is no test since the leak is 
native, and it will be necessary to spend lots of time to fill the whole 
native memory and swap.

The bug was found when I worked on 'other fix', and some other memory 
leaks will be fixed separately in 'other fix'.

Bug: https://bugs.openjdk.java.net/browse/JDK-8165717
Patch can be found at: http://cr.openjdk.java.net/~serb/8165717/webrev.00

-- 
Best regards, Sergey.


More information about the awt-dev mailing list