On 26.1.2016 11:54, Dmitry Samersoff wrote:
Yuji,
I think both changes are good so I add this patch to webrev.
see:
http://cr.openjdk.java.net/~dsamersoff/sponsorship/kubota.yuji/JDK-8148104/webrev.02/
Thanks Yuji, Dmitry!
Thumbs up!
-JB-
-Dmitry
On 2016-01-25 13:57, KUBOTA Yuji wrote:
Hi Dmitry and Jaroslav,
2016-01-25 18:11 GMT+09:00 Jaroslav Bachorik <jaroslav.bacho...@oracle.com>:
On 23.1.2016 12:13, Dmitry Samersoff wrote:
Solution:
Create frame before we initialize agent.
While this solution will work in this case I think it would be better to
daemonize the WorkerThread
(hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/utilities/WorkerThread.java)
- that should ensure that the application will be allowed to terminate even
though the worker thread is still running.
It's reasonable for me. I could not come up with the reason why the
WorkerThread is not daemonized, so I wrote simply.
I think that WorkerThread can be abandoned when JVM halts, so
recreated the patch to demonize as below.
jdk9/hs-rt/hotspot (9982:91be2fb6db87)
----
diff --git
a/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/utilities/WorkerThread.java
b/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/utilities/WorkerThread.java
---
a/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/utilities/WorkerThread.java
+++
b/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/utilities/WorkerThread.java
@@ -35,7 +35,11 @@
public WorkerThread() {
mqb = new MessageQueueBackend();
mq = mqb.getFirstQueue();
- new Thread(new MainLoop()).start();
+
+ // Enable to terminate this worker during runnning by daemonize.
+ Thread mqthread = new Thread(new MainLoop());
+ mqthread.setDaemon(true);
+ mqthread.start();
}
/** Runs the given Runnable in the thread represented by this
----
Sorry, Dmitry, could you please re-upload this patch if you agree with
this idea?
Thanks,
Yuji
-JB-
-Dmitry