summaryrefslogtreecommitdiff
path: root/usr/src/lib/libdtrace_jni
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/lib/libdtrace_jni')
-rw-r--r--usr/src/lib/libdtrace_jni/java/src/org/opensolaris/os/dtrace/LocalConsumer.java12
1 files changed, 10 insertions, 2 deletions
diff --git a/usr/src/lib/libdtrace_jni/java/src/org/opensolaris/os/dtrace/LocalConsumer.java b/usr/src/lib/libdtrace_jni/java/src/org/opensolaris/os/dtrace/LocalConsumer.java
index 7cc72a019c..c6a1f41dad 100644
--- a/usr/src/lib/libdtrace_jni/java/src/org/opensolaris/os/dtrace/LocalConsumer.java
+++ b/usr/src/lib/libdtrace_jni/java/src/org/opensolaris/os/dtrace/LocalConsumer.java
@@ -157,6 +157,7 @@ public class LocalConsumer implements Consumer {
private State state = State.INIT;
private boolean stopCalled;
+ private boolean abortCalled;
//
// Per-consumer lock used in native code to prevent conflict between
@@ -307,6 +308,10 @@ public class LocalConsumer implements Consumer {
state = State.OPEN;
setOptions(DEFAULT_OPTIONS);
+ if (abortCalled) {
+ _interrupt();
+ }
+
if (logger.isLoggable(Level.INFO)) {
logger.info("consumer table count: " + _openCount());
}
@@ -846,10 +851,13 @@ public class LocalConsumer implements Consumer {
}
}
- public void
+ public synchronized void
abort()
{
- _interrupt();
+ if ((state != State.INIT) && (state != State.CLOSED)) {
+ _interrupt();
+ }
+ abortCalled = true;
}
/**