From b328b5ab1bfa8f4346cbdda30af731ed244268cb Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Thu, 19 Mar 2026 13:20:25 +0200 Subject: fix: replay symlinks within the test root --- systemtap/src/javaioriot.stp | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) (limited to 'systemtap/src/javaioriot.stp') diff --git a/systemtap/src/javaioriot.stp b/systemtap/src/javaioriot.stp index 0c59bf2..9ddb045 100644 --- a/systemtap/src/javaioriot.stp +++ b/systemtap/src/javaioriot.stp @@ -99,7 +99,7 @@ probe timer.s(3600) { } probe begin { - printf("#|capture_version=%d|\n", 3); + printf("#|capture_version=%d|\n", 4); } # --- open --- @@ -470,48 +470,60 @@ probe syscall.readdir.return { } # --- readlink --- -# Tapset entry vars: path_unquoted +# Tapset entry vars: path_unquoted, buf_uaddr probe syscall.readlink { if (execname() == "java") { PROBE_ENTRY_TIMES[tid(),name] = gettimeofday_ns() ENTRY_PATH[tid(),name] = path_unquoted + ENTRY_ADDR[tid(),name] = buf_uaddr } } probe syscall.readlink.return { if(execname() == "java") { ns = gettimeofday_ns() - printf("t=%ld;:,D=%ld;:,i=%d:%d;:,o=%s;:,p=%s;:,s=%d;:,\n", + target = "" + if (retval > 0) + target = user_string_n(ENTRY_ADDR[tid(),name], retval) + printf("t=%ld;:,D=%ld;:,i=%d:%d;:,o=%s;:,p=%s;:,P=%s;:,s=%d;:,\n", ns, ns-PROBE_ENTRY_TIMES[tid(),name], pid(), tid(), name, absolute_path(ENTRY_PATH[tid(),name]), + target, retval); delete PROBE_ENTRY_TIMES[tid(),name] delete ENTRY_PATH[tid(),name] + delete ENTRY_ADDR[tid(),name] } } # --- readlinkat --- -# Tapset entry vars: dfd, path_unquoted +# Tapset entry vars: dfd, path_unquoted, buf_uaddr probe syscall.readlinkat { if (execname() == "java") { PROBE_ENTRY_TIMES[tid(),name] = gettimeofday_ns() ENTRY_FD[tid(),name] = dfd ENTRY_PATH[tid(),name] = path_unquoted + ENTRY_ADDR[tid(),name] = buf_uaddr } } probe syscall.readlinkat.return { if(execname() == "java") { ns = gettimeofday_ns() - printf("t=%ld;:,D=%ld;:,i=%d:%d;:,o=%s;:,p=%s;:,s=%d;:,\n", + target = "" + if (retval > 0) + target = user_string_n(ENTRY_ADDR[tid(),name], retval) + printf("t=%ld;:,D=%ld;:,i=%d:%d;:,o=%s;:,p=%s;:,P=%s;:,s=%d;:,\n", ns, ns-PROBE_ENTRY_TIMES[tid(),name], pid(), tid(), name, absolute_path_at(ENTRY_PATH[tid(),name], ENTRY_FD[tid(),name]), + target, retval); delete PROBE_ENTRY_TIMES[tid(),name] delete ENTRY_FD[tid(),name] delete ENTRY_PATH[tid(),name] + delete ENTRY_ADDR[tid(),name] } } -- cgit v1.2.3