Browse Source

Merge pull request #618 from marysaka/fix/aya-probe-event-alias-uniq

aya: Make probe event_alias unique
Mary 1 year ago
parent
commit
d56ed8fd68
1 changed files with 6 additions and 2 deletions
  1. 6 2
      aya/src/programs/probe.rs

+ 6 - 2
aya/src/programs/probe.rs

@@ -4,6 +4,7 @@ use std::{
     io::{self, Write},
     path::Path,
     process,
+    sync::atomic::{AtomicUsize, Ordering},
 };
 
 use crate::{
@@ -15,6 +16,8 @@ use crate::{
     sys::{kernel_version, perf_event_open_probe, perf_event_open_trace_point},
 };
 
+static PROBE_NAME_INDEX: AtomicUsize = AtomicUsize::new(0);
+
 /// Kind of probe program
 #[derive(Debug, Copy, Clone)]
 pub enum ProbeKind {
@@ -158,11 +161,12 @@ fn create_probe_event(
         KRetProbe | URetProbe => 'r',
     };
     let event_alias = format!(
-        "aya_{}_{}_{}_{:#x}",
+        "aya_{}_{}_{}_{:#x}_{}",
         process::id(),
         probe_type_prefix,
         fn_name,
-        offset
+        offset,
+        PROBE_NAME_INDEX.fetch_add(1, Ordering::SeqCst)
     );
     let offset_suffix = match kind {
         KProbe => format!("+{offset}"),