On 8/5/2016 12:39 PM, Ambarish Rapte wrote:
Hi Prasanta,
The popup peer is removed from TrayIcon.removeNotify().
popup in XTrayIconPeer is reference to same object, hence not required
to be disposed in XTrayIconPeer.
The TrayIcon object was not getting Garbage collected because of few
members of XTrayIconPeer. Hence this change cleans only these blocking
references.
Tooltip does not block from GC and gets garbage collected as the
TrayIcon gets collected.
But we call
tooltip = new InfoWindow.Tooltip(eframe, target, this);
just like
balloon = new InfoWindow.Balloon(eframe, target, this);
so should it not get disposed like balloon?
Regards
Prasanta
The test is updated,
http://cr.openjdk.java.net/~arapte/8039081/webrev.03/
Regards,
Ambarish
-----Original Message-----
From: Prasanta Sadhukhan
Sent: Friday, August 05, 2016 11:48 AM
To: Ambarish Rapte; [email protected]
Subject: Re: <AWT Dev> Review Request for 8039081: [TEST_BUG] Test
java/awt/TrayIcon/PopupMenuLeakTest/PopupMenuLeakTest.java fails
On 8/1/2016 12:54 PM, Ambarish Rapte wrote:
Hi,
This is an older issue fix which was paused.
Here is an updated webrev:
http://cr.openjdk.java.net/~arapte/8039081/webrev.02/
Issue & Fix:
There were platforms wise different issues:
Linux:
Issue:
Reference to TrayIcon was not released from member fields of
XTrayIconPeer like, TrayIconCanvas, XTrayIconEmbeddedFrame.
PopupMenu.removeNotify() was not called for PopupMenu added to
TrayIcon.
This prevented from TrayIcon & PopupMenu to TrayIcon from getting
garbage collected.
However the behavior was not uniform: Sometimes the reference
gets collected but sometimes it does not even after 100+ OOMs.
Fix:
Released reference to TrayIcon by setting these variables to NULL.
Don't we need to dispose popup and tooltip before setting to NULL?
Also, in the test there is a "," missing after copyright year.
Regards
Prasanta
With this change, reference gets collected mostly with the first
OOM.
Removed listeners to avoid any events while the TrayIcon/Peer is
getting disposed: Had observed a NPE at TrayIconEventProxy::MouseExited(),
hence removeListeners() is required.
Mac:
Issue:
The test failed with OOM exception, due to incorrect way of
causing OOM in the test. (Line No.85 in existing Test)
Fix:
Correction in Test: Corrected the OOM causing code in test.
Windows:
Issue:
The test fails to run on windows, as the popup should have a
container parent.
Fix:
Correction in Test:
The test is not required for windows.
TrayIcon & PopupMenu get collected easily on windows, verified
that by changes in test.
Hence discarding execution of test on windows.
Verification:
No other test of TrayIcon fails due to this change on Win, Mac, Linux.
Regards,
Ambarish
-----Original Message-----
From: Sergey Bylokhov
Sent: Monday, December 07, 2015 6:03 PM
To: Ambarish Rapte; Semyon Sadetsky; Prasanta Sadhukhan;
[email protected]
Subject: Re: <AWT Dev> Review Request for 8039081: [TEST_BUG] Test
java/awt/TrayIcon/PopupMenuLeakTest/PopupMenuLeakTest.java fails
Hi, Ambarish.
It seems this version of the test completes successfully, before related fix
was integrated(JDK-8007220) but it should fail(I tested jdk8u05b13), please
double check.
On 03.12.15 11:45, Ambarish Rapte wrote:
Hi Semyon,
I had verified the patch fix with
Windows 7 64-bit,
Ubuntu 14.04 32 & 64 bit &
Mac platform.
Where the test executes & passes.
Are you using Ubuntu 15.10 ?
I am setting up Ubuntu 15.10 64 bit to reproduce the same failure.
However, solution to this failure would require a small wait for gc
to finish.
Regards,
Ambarish
*From:*Semyon Sadetsky
*Sent:* Wednesday, December 02, 2015 1:54 PM
*To:* Ambarish Rapte; Prasanta Sadhukhan; [email protected]
*Subject:* Re: Review Request for 8039081: [TEST_BUG] Test
java/awt/TrayIcon/PopupMenuLeakTest/PopupMenuLeakTest.java fails
Hi Ambarish,
Now it fails on Linux:
ACTION: main -- Failed. Execution failed: `main' threw exception:
java.lang.OutOfMemoryError: Java heap space
REASON: User specified action: run main/othervm -Xmx50m PopupMenuLeakTest
TIME: 1.445 seconds
messages:
command: main -Xmx50m PopupMenuLeakTest
reason: User specified action: run main/othervm -Xmx50m
PopupMenuLeakTest elapsed time (seconds): 1.445
STDOUT:
STDERR:
java.lang.OutOfMemoryError: Java heap space
at PopupMenuLeakTest.assertCollected(PopupMenuLeakTest.java:85)
at PopupMenuLeakTest.main(PopupMenuLeakTest.java:57)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:520)
at
com.sun.javatest.regtest.agent.MainWrapper$MainThread.run(MainWrapper.java:92)
at java.lang.Thread.run(Thread.java:747)
JavaTest Message: Test threw exception: java.lang.OutOfMemoryError:
Java heap space JavaTest Message: shutting down test
STATUS:Failed.`main' threw exception: java.lang.OutOfMemoryError:
Java heap space
--Semyon
On 11/30/2015 6:44 PM, Ambarish Rapte wrote:
Hi Semyon,
I have updated the fix patch with below
changes,
1.Code formatting.
2.Reduced the number of OOMs.
3.Removed un-required delays.
Please review the update patch, which causes OOM
early than previous change.
http://cr.openjdk.java.net/~arapte/8039081/webrev.01/
<http://cr.openjdk.java.net/%7Earapte/8039081/webrev.01/>
Thanks,
Ambarish
*From:*Semyon Sadetsky
*Sent:* Monday, November 30, 2015 1:54 PM
*To:* Ambarish Rapte; Prasanta Sadhukhan; [email protected]
<mailto:[email protected]>
*Subject:* Re: Review Request for 8039081: [TEST_BUG] Test
java/awt/TrayIcon/PopupMenuLeakTest/PopupMenuLeakTest.java fails
Hi Ambarish,
On my Windows 7 64bit the test fails because of timeout.
--Semyon
On 11/20/2015 1:30 PM, Ambarish Rapte wrote:
Hi All,
Please review the fix for JDK9,
Bug:
https://bugs.openjdk.java.net/browse/JDK-8039081
Webrev:
http://cr.openjdk.java.net/~arapte/8039081/webrev.00/
*Issue*:
èThe test fails on windows with below exception,
Caused by: java.lang.IllegalArgumentException: illegal popup
menu container class
at
sun.awt.windows.WPopupMenuPeer.<init>(WPopupMenuPeer.java:65)
at
sun.awt.windows.WToolkit.createPopupMenu(WToolkit.java:461)
at java.awt.PopupMenu.addNotify(PopupMenu.java:124)
at
PopupMenuLeakTest.addNotifyPopup(PopupMenuLeakTest.java:63)
èWith below exception on mac, ubuntu,
java.lang.OutOfMemoryError: Java heap space
at
PopupMenuLeakTest.assertCollected(PopupMenuLeakTest.java:85)
at
PopupMenuLeakTest.main(PopupMenuLeakTest.java:57)
at
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
j
ava:62)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
s
orImpl.java:43)
at
java.lang.reflect.Method.invoke(Method.java:520)
at
com.sun.javatest.regtest.agent.MainWrapper$MainThread.run(MainWrapper.
java:92)
at java.lang.Thread.run(Thread.java:747)
*Cause*:
This is a test code issue.
On Windows Popup menu should have a valid
parent container.
Is there is no parent container , then above
exception is thrown.
And also, after throwing OOM exception, program
tried to allocate new memory in catch.
Which results in failure again.
*Fix*:
Updated the test code to add popup menu as a
child of Frame.
Verifiew on : Ubuntu, Windows & Mac
Many Thanks,
Ambarish
--
Best regards, Sergey.