MINOR: trace: make sure to always stop the locking when stopping or pausing

When we stop or pause a trace (either on a matching event or by hand),
we must also stop the lock-on feature so that we don't follow any
further activity on this pointer even if it is recycled. For now this
is not exploited.
diff --git a/src/trace.c b/src/trace.c
index eec3477..7783702 100644
--- a/src/trace.c
+++ b/src/trace.c
@@ -112,9 +112,11 @@
  end:
 	/* check if we need to stop the trace now */
 	if ((src->stop_events & mask) != 0) {
+		HA_ATOMIC_STORE(&src->lockon_ptr, NULL);
 		HA_ATOMIC_STORE(&src->state, TRACE_STATE_STOPPED);
 	}
 	else if ((src->pause_events & mask) != 0) {
+		HA_ATOMIC_STORE(&src->lockon_ptr, NULL);
 		HA_ATOMIC_STORE(&src->state, TRACE_STATE_WAITING);
 	}
 }
@@ -222,12 +224,17 @@
 
 		if (strcmp(name, "now") == 0 && ev_ptr != &src->report_events) {
 			HA_ATOMIC_STORE(ev_ptr, 0);
-			if (ev_ptr == &src->pause_events)
+			if (ev_ptr == &src->pause_events) {
+				HA_ATOMIC_STORE(&src->lockon_ptr, NULL);
 				HA_ATOMIC_STORE(&src->state, TRACE_STATE_WAITING);
-			else if (ev_ptr == &src->start_events)
+			}
+			else if (ev_ptr == &src->start_events) {
 				HA_ATOMIC_STORE(&src->state, TRACE_STATE_RUNNING);
-			else if (ev_ptr == &src->stop_events)
+			}
+			else if (ev_ptr == &src->stop_events) {
+				HA_ATOMIC_STORE(&src->lockon_ptr, NULL);
 				HA_ATOMIC_STORE(&src->state, TRACE_STATE_STOPPED);
+			}
 			return 0;
 		}