[10] RFR for JDK-8170299: Debugger does not stop inside the low memory notifications code

Daniel D. Daugherty daniel.daugherty at oracle.com
Tue Sep 5 16:14:50 UTC 2017


Seems like you should also run: nsk.monitoring.testlist

Dan


On 9/4/17 4:11 AM, Shafi Ahmad wrote:
>
> Hi,
>
> Please review the fix for ‘JDK-8170299: Debugger does not stop inside 
> the low memory notifications code’ to jdk10.
>
> With the current implementation ‘debugger does not stop inside the low 
> memory *notifications* code’
>
> This is expected as the notification code is getting executed with the 
> service thread, which is a hidden thread.
>
> jdk10-dev-new$ jdb -Xmx32m MemoryWarningSystem
>
> Initializing jdb ...
>
> > stop at MemoryWarningSystem$1:25
>
> Deferring breakpoint MemoryWarningSystem$1:25.
>
> It will be set after the class is loaded.
>
> > run
>
> run MemoryWarningSystem
>
> Set uncaught java.lang.Throwable
>
> Set deferred uncaught java.lang.Throwable
>
> >
>
> . . .
>
> > quit
>
> Breakpoint not hit.
>
> With the attached webrev, jdb stop  at breakpoint inside notification 
> code.
>
> jdk10-dev-new$ jdb -Xmx64m MemoryWarningSystem
>
> Initializing jdb ...
>
> > stop at MemoryWarningSystem$1:25
>
> Deferring breakpoint MemoryWarningSystem$1:25.
>
> It will be set after the class is loaded.
>
> > run
>
> run MemoryWarningSystem
>
> Set uncaught java.lang.Throwable
>
> Set deferred uncaught java.lang.Throwable
>
> >
>
> VM Started: Set deferred breakpoint MemoryWarningSystem$1:25
>
> Breakpoint hit: "thread=Thread-0", 
> MemoryWarningSystem$1.memoryUsageLow(), line=25 bci=0
>
> 25            System.out.println("Memory usage low!!!");
>
> Thread-0[1] step
>
> > Memory usage low!!!
>
> Step completed: "thread=Thread-0", 
> MemoryWarningSystem$1.memoryUsageLow(), line=26 bci=8
>
> 26            double percentageUsed = ((double) usedMemory) / maxMemory;
>
> Thread-0[1] where
>
>   [1] MemoryWarningSystem$1.memoryUsageLow (MemoryWarningSystem.java:26)
>
>   [2] MemoryWarningSystem$2.handleNotification 
> (MemoryWarningSystem.java:48)
>
>   [3] 
> javax.management.NotificationBroadcasterSupport.handleNotification 
> (NotificationBroadcasterSupport.java:284)
>
>   [4] javax.management.NotificationBroadcasterSupport$SendNotifJob.run 
> (NotificationBroadcasterSupport.java:361)
>
>   [5] java.lang.Thread.run (Thread.java:844)
>
> Thread-0[1] step
>
> >
>
> Step completed: "thread=Thread-0", 
> MemoryWarningSystem$1.memoryUsageLow(), line=27 bci=15
>
> 27 System.out.println("percentageUsed = " + percentageUsed);
>
> Thread-0[1] list
>
> 23        mws.addListener(new MemoryWarningSystem.Listener() {
>
> 24          public void memoryUsageLow(long usedMemory, long maxMemory) {
>
> 25            System.out.println("Memory usage low!!!");
>
> 26            double percentageUsed = ((double) usedMemory) / maxMemory;
>
> 27 => System.out.println("percentageUsed = " + percentageUsed);
>
> 28 MemoryWarningSystem.setPercentageUsageThreshold(0.8);
>
> 29          }
>
> 30        });
>
> 31
>
> 32        Collection<Double> numbers = new LinkedList<Double>();
>
> Thread-0[1]
>
> In the change, the class ‘MemoryImpl’ is derived from class 
> ‘NotificationBroadcasterSupport’ instead of class 
> ‘NotificationEmitterSupport’
>
> NotificationBroadcastSupport takes an Executor, MemoryImpl constructor 
>  call super() with an executor,  a visible thread.
>
> The method hasListeners() is referenced  inside MemoryImpl.java and 
> defined in  NotificationEmitterSupport.
>
> This method is not present in  NotificationBroadcasterSupport so I 
> added it to NotificationBroadcasterSupport.
>
> Jdk10 bug: https://bugs.openjdk.java.net/browse/JDK-8170299
>
> Webrev link: http://cr.openjdk.java.net/~shshahma/8170299/webrev.01/ 
> <http://cr.openjdk.java.net/%7Eshshahma/8170299/webrev.01/>
>
> Testing: jprt -testset core, vm tonga tests nsk.jvmti.testlist, 
> nsk.jdi.testlist, nsk.jdwp.testlist and jtreg tests 
> ./jdk/test/com/sun/jdi/
>
> Please let me know if I missed to test some more test suit[s].
>
> Thanks to Mandy and Poonam for helping me in fixing this.
>
> Regards,
>
> Shafi
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/serviceability-dev/attachments/20170905/efbe8699/attachment.html>


More information about the serviceability-dev mailing list