<Swing Dev> [9] Review Request: 8161664: Memory leak in com.apple.laf.AquaProgressBarUI: removed progress bar still referenced

Robin Stevens robin.stevens at scz.be
Wed Aug 3 10:05:37 UTC 2016


Gentle reminder: can I have a second person reviewing the latest webrev:

http://cr.openjdk.java.net/~rstevens/8161664/webrev.02/

Thanks,

Robin

On Thu, Jul 28, 2016 at 10:55 AM, Sergey Bylokhov <
Sergey.Bylokhov at oracle.com> wrote:

> Thanks! Looks fine.
>
> On 28.07.16 0:16, Robin Stevens wrote:
>
>> Here is the updated webrev which includes the comma in the copyright and
>> the extra tag:
>>
>> http://cr.openjdk.java.net/~rstevens/8161664/webrev.02/
>>
>> Robin
>>
>> On Wed, Jul 27, 2016 at 12:08 AM, Sergey Bylokhov
>> <Sergey.Bylokhov at oracle.com <mailto:Sergey.Bylokhov at oracle.com>> wrote:
>>
>>     Sorry I missed two small issues in the previous review:
>>      - The date in copyright should have a comma "Copyright (c) 2016,
>>     Oracle and/or its affiliates. All rights reserved."
>>      - The test should have "* @key headful" tag.
>>
>>     On 27.07.16 0:13, Robin Stevens wrote:
>>
>>         Hello,
>>
>>         thank you both for the review.
>>
>>         Updated webrev:
>>         http://cr.openjdk.java.net/~rstevens/8161664/webrev.01/
>>
>>         I have adjusted the test as suggested by Sergey:
>>
>>         - I moved it to the javax/swing/JProgressBar package, as it is
>>         no longer
>>         specific for the Aqua look and feel
>>         - The test now loops over all installed look and feels. For that,
>> I
>>         copied code from the test in
>>         javax/swing/JTab;e/7124218/SelectEditTableCell.java
>>         - The test now uses Util.generateOOME instead of the System.gc +
>>         System.finalization call
>>
>>
>>         Robin
>>
>>         On Mon, Jul 25, 2016 at 10:32 PM, Sergey Bylokhov
>>         <Sergey.Bylokhov at oracle.com <mailto:Sergey.Bylokhov at oracle.com>
>>         <mailto:Sergey.Bylokhov at oracle.com
>>
>>         <mailto:Sergey.Bylokhov at oracle.com>>> wrote:
>>
>>             Hi, Robin.
>>             These calls do no guaranties that all weak references will
>>         be collected.
>>             56     System.runFinalization();
>>             57     System.gc();
>>
>>             I suggest to generate OOM explicitly. see for example:
>>             javax/swing/UIDefaults/6795356/bug6795356.java
>>
>>             Note that on other platforms it will cover Metal L&F but
>>         probably
>>             others can be tested as well. So it will be good to test all
>>             installed L&F in the loop.
>>
>>
>>             On 20.07.16 14:26, Alexandr Scherbatiy wrote:
>>
>>
>>                 The fix looks good to me.
>>
>>                 Thanks,
>>                 Alexandr.
>>
>>                 On 7/20/2016 11:37 AM, Robin Stevens wrote:
>>
>>                     Hello,
>>
>>                     please review this patch for issue JDK-8161664:
>>
>>                     Bug: https://bugs.openjdk.java.net/browse/JDK-8161664
>>                     Patch:
>>         http://cr.openjdk.java.net/~rstevens/8161664/webrev.00/
>>
>>         <http://cr.openjdk.java.net/%7Erstevens/8161664/webrev.00/>
>>
>>
>>                     The problem is that in certain scenarios, the Timer
>>         in the
>>                     Animator of
>>                     the AquaProgressBarUI does not get stopped when the
>>         progress
>>                     bar is
>>                     removed from the Swing hierarchy.
>>
>>                     Several approaches were discussed in another thread
>>
>>         (
>> http://mail.openjdk.java.net/pipermail/swing-dev/2016-July/006330.html).
>>                     In the linked webrev, I opted to use the same
>>         approach as
>>                     what is done
>>                     in the BasicProgressBarUI class: only start the
>>         timer when the
>>                     progress bar is displayable.
>>
>>                     To achieve this, I wrapped all calls to
>>         startAnimationTimer
>>                     with an if
>>                     statement that checks the displayable state of the
>>         progress bar.
>>
>>                     There is one call to startAnimationTimer that is not
>>                     adjusted. That
>>                     call is only triggered from the paint method, which
>>         in turn
>>                     is only
>>                     triggered if the progress bar is displayable. As
>>         such, the
>>                     if check
>>                     was not needed there (imo).
>>
>>                     The patch includes a test, which fails without the
>>         fix and
>>                     succeeds
>>                     afterwards.
>>
>>                     Thanks,
>>
>>                     Robin
>>
>>
>>
>>
>>             --
>>             Best regards, Sergey.
>>
>>
>>
>>
>>     --
>>     Best regards, Sergey.
>>
>>
>>
>
> --
> Best regards, Sergey.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/swing-dev/attachments/20160803/dbf32f38/attachment.html>


More information about the swing-dev mailing list