changeset 9998:5f6596ec3328

6851093 system drops to kmdb with anonymous dtrace probes + kmdb
author Jonathan Haslam <Jonathan.Haslam@Sun.COM>
date Tue, 30 Jun 2009 07:41:21 +0100
parents 174d75a29a1c
children d5e89571de4e
files usr/src/uts/common/dtrace/dtrace.c
diffstat 1 files changed, 7 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/usr/src/uts/common/dtrace/dtrace.c	Mon Jun 29 22:20:35 2009 -0700
+++ b/usr/src/uts/common/dtrace/dtrace.c	Tue Jun 30 07:41:21 2009 +0100
@@ -14482,7 +14482,7 @@
 	mutex_exit(&cpu_lock);
 
 	if (state == NULL) {
-		if (--dtrace_opens == 0)
+		if (--dtrace_opens == 0 && dtrace_anon.dta_enabling == NULL)
 			(void) kdi_dtrace_set(KDI_DTSET_DTRACE_DEACTIVATE);
 		mutex_exit(&dtrace_lock);
 		return (EAGAIN);
@@ -14518,7 +14518,12 @@
 
 	dtrace_state_destroy(state);
 	ASSERT(dtrace_opens > 0);
-	if (--dtrace_opens == 0)
+
+	/*
+	 * Only relinquish control of the kernel debugger interface when there
+	 * are no consumers and no anonymous enablings.
+	 */
+	if (--dtrace_opens == 0 && dtrace_anon.dta_enabling == NULL)
 		(void) kdi_dtrace_set(KDI_DTSET_DTRACE_DEACTIVATE);
 
 	mutex_exit(&dtrace_lock);