From: James Clark <james.clark@linaro.org>
To: Ian Rogers <irogers@google.com>
Cc: adrian.hunter@intel.com, jolsa@kernel.org,
linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org,
mingo@redhat.com, peterz@infradead.org, acme@kernel.org,
gmx@google.com, namhyung@kernel.org
Subject: Re: [PATCH v6 5/6] perf test: Add inject ASLR test
Date: Fri, 8 May 2026 14:29:53 +0100 [thread overview]
Message-ID: <dec2f42d-3c2a-424e-9d50-e52ebbee3d69@linaro.org> (raw)
In-Reply-To: <20260508082726.2795191-6-irogers@google.com>
On 08/05/2026 9:27 am, Ian Rogers wrote:
> Add a new shell test `inject_aslr.sh` to verify the `perf inject --aslr`
> feature. The test covers:
> - Basic address remapping for user space samples.
> - Pipe mode coverage for `perf record` piped into `perf inject --aslr`.
> - Callchain address remapping.
> - Consistency of `perf report` output before and after injection.
> - Pipe mode report consistency.
> - Dropping of samples that leak ASLR info (physical addresses).
> - Kernel address remapping (utilizing a dedicated kernel-intensive VFS dd workload
> to guarantee continuous timer interrupts sampling flow inside kernel privilege states).
> - Kernel report consistency with address normalization.
>
> The test suite is hardened with global 'set -o pipefail' assertions to catch
> pipeline failures, stream-consuming awk processors to handle SIGPIPE signals,
> and a dedicated pipe output scenario validating raw 'perf inject -o -' stdout
> streams.
>
> Assisted-by: Gemini-CLI:Google Gemini 3
> Signed-off-by: Ian Rogers <irogers@google.com>
> ---
> v6: Refactor kernel-space sampling test cases to utilize a dedicated
> system-call intensive VFS dd workload (kprog) instead of purely
> userspace-bound tight loops, guaranteeing high-density kernel
> privilege state sampling streams and eliminating intermittent
> execution flakiness dropouts.
>
Hi Ian,
V5 passed on X86, but now I get this test failing about 50% of the time
with output like:
Test user register stripping
User registers stripping test [Failed - report parsing differs]
Showing first 20 lines of diff:
--- /tmp/perf-test-aslr.ssH9urcfri/report_regs1.clean 2026-05-08
14:14:02.127298207 +0100
+++ /tmp/perf-test-aslr.ssH9urcfri/report_regs2.clean 2026-05-08
14:14:02.129298219 +0100
@@ -30,8 +30,8 @@
0.02% perf ld-linux-x86-64.so.2 [.] mmap64
0.02% perf-noploop [kernel.kallsyms] [k] kmem_cache_free
0.02% perf-noploop [kernel.kallsyms] [k] nohz_balancer_kick
- 0.02% perf-noploop [kernel.kallsyms] [k] pvclock_gtod_notify
0.02% perf-noploop [kernel.kallsyms] [k] try_to_wake_up
+ 0.02% perf-noploop [kvm] [k] pvclock_gtod_notify
0.02% perf-noploop libc.so.6 [.] __cxa_finalize
0.04% perf ld-linux-x86-64.so.2 [.] strcmp
0.05% perf libLLVM-15.so.1 [.]
llvm::StringMapImpl::LookupBucketFor(llvm::StringRef)
---- end ----
or:
Test user register stripping
User registers stripping test [Failed - report parsing differs]
Showing first 20 lines of diff:
--- /tmp/perf-test-aslr.NoDUUXtHyh/report_regs1.clean 2026-05-08
14:05:31.109246491 +0100
+++ /tmp/perf-test-aslr.NoDUUXtHyh/report_regs2.clean 2026-05-08
14:05:31.111246503 +0100
@@ -2,8 +2,8 @@
0.01% perf [kernel.kallsyms] [k]
find_mergeable_anon_vma
0.01% perf [kernel.kallsyms] [k] finish_fault
0.01% perf [kernel.kallsyms] [k]
pte_offset_map_rw_nolock
+ 0.02% perf [amdgpu] [k] amdgpu_device_rreg
0.02% perf [kernel.kallsyms] [k]
__alloc_frozen_pages_noprof
- 0.02% perf [kernel.kallsyms] [k] amdgpu_device_rreg
0.02% perf [kernel.kallsyms] [k]
__build_id_parse.isra.0
0.02% perf [kernel.kallsyms] [k] filemap_get_entry
0.02% perf [kernel.kallsyms] [k] filemap_map_pages
---- end ----
And on Arm I get a hang/infinite loop every time in "Test kernel ASLR
remapping". Looks like it could be related to the changes in V6 as I
didn't see it on V5:
#0 __read_once_size (size=4, res=0xffffe56c64a0, p=0xaaaaeaedbab8)
at linux/tools/include/linux/compiler.h:180
#1 atomic_read (v=0xaaaaeaedbab8) at
linux/tools/include/asm-generic/atomic-gcc.h:26
#2 0x0000aaaaaf65cd6c in refcount_read (r=0xaaaaeaedbab8)
at linux/tools/include/linux/refcount.h:70
#3 0x0000aaaaaf65d9dc in check_invariants (maps=0xaaaae7e3b480) at
util/maps.c:114
#4 0x0000aaaaaf65eef8 in maps__insert (maps=0xaaaae7e3b480,
map=0xaaaaec2ccf10) at util/maps.c:536
#5 0x0000aaaaaf62a028 in maps__split_kallsyms (kmaps=0xaaaae7e3b480,
dso=0xaaaae7e3f910, delta=1879048192,
initial_map=0xaaaae7e3fab0) at util/symbol.c:986
#6 0x0000aaaaaf62b550 in __dso__load_kallsyms (dso=0xaaaae7e3f910,
filename=0xaaaae7e55200 "/proc/kallsyms",
map=0xaaaae7e3fab0, no_kcore=false) at util/symbol.c:1530
#7 0x0000aaaaaf62b5bc in dso__load_kallsyms (dso=0xaaaae7e3f910,
filename=0xaaaae7e55200 "/proc/kallsyms",
map=0xaaaae7e3fab0) at util/symbol.c:1536
#8 0x0000aaaaaf62cbc0 in dso__load_kernel_sym (dso=0xaaaae7e3f910,
map=0xaaaae7e3fab0) at util/symbol.c:2125
#9 0x0000aaaaaf62bc5c in dso__load (dso=0xaaaae7e3f910,
map=0xaaaae7e3fab0) at util/symbol.c:1721
#10 0x0000aaaaaf65b98c in map__load (map=0xaaaae7e3fab0) at
util/map.c:351
#11 0x0000aaaaaf5e43cc in thread__find_map (thread=0xaaaae7e443b0,
cpumode=1 '\001', addr=18446603336494207932,
al=0xffffe56c8c28) at util/event.c:744
#12 0x0000aaaaaf5e4810 in machine__resolve (machine=0xaaaae7e3bee0,
al=0xffffe56c8c28, sample=0xffffe56c8df0)
at util/event.c:818
#13 0x0000aaaaaf41d850 in process_sample_event (tool=0xffffe56c93d0,
event=0xffffb1091ec8, sample=0xffffe56c8df0,
evsel=0xaaaae7e3b580, machine=0xaaaae7e3bee0) at
builtin-script.c:2686
#14 0x0000aaaaaf6668f4 in evlist__deliver_sample
(evlist=0xaaaae7e3c550, tool=0xffffe56c93d0, event=0xffffb1091ec8,
sample=0xffffe56c8df0, evsel=0xaaaae7e3b580,
machine=0xaaaae7e3bee0) at util/session.c:1335
#15 0x0000aaaaaf667000 in machines__deliver_event
(machines=0xaaaae7e3bee0, evlist=0xaaaae7e3c550, event=0xffffb1091ec8,
sample=0xffffe56c8df0, tool=0xffffe56c93d0, file_offset=3784,
file_path=0xaaaae7e3b540
"/tmp/perf-test-aslr.J1XB8pvpFy/perf.data2.kernel.FA0Uvd") at
util/session.c:1502
#16 0x0000aaaaaf667538 in perf_session__deliver_event
(session=0xaaaae7e3bca0, event=0xffffb1091ec8,
tool=0xffffe56c93d0, file_offset=3784,
file_path=0xaaaae7e3b540
"/tmp/perf-test-aslr.J1XB8pvpFy/perf.data2.kernel.FA0Uvd") at
util/session.c:1593
#17 0x0000aaaaaf662bbc in ordered_events__deliver_event
(oe=0xaaaae7e3c460, event=0xaaaae7e44740) at util/session.c:134
#18 0x0000aaaaaf672c98 in do_flush (oe=0xaaaae7e3c460,
show_progress=true) at util/ordered-events.c:245
#19 0x0000aaaaaf673048 in __ordered_events__flush (oe=0xaaaae7e3c460,
how=OE_FLUSH__FINAL, timestamp=0)
at util/ordered-events.c:324
#20 0x0000aaaaaf673154 in ordered_events__flush (oe=0xaaaae7e3c460,
how=OE_FLUSH__FINAL) at util/ordered-events.c:342
#21 0x0000aaaaaf669e54 in __perf_session__process_events
(session=0xaaaae7e3bca0) at util/session.c:2508
#22 0x0000aaaaaf66a790 in perf_session__process_events
(session=0xaaaae7e3bca0) at util/session.c:2675
#23 0x0000aaaaaf41f59c in __cmd_script (script=0xffffe56c93d0) at
builtin-script.c:3241
#24 0x0000aaaaaf4242b0 in cmd_script (argc=0, argv=0xffffe56cb370) at
builtin-script.c:4586
#25 0x0000aaaaaf4a03f8 in run_builtin (p=0xaaaaafa14e60
<commands+480>, argc=3, argv=0xffffe56cb370) at perf.c:348
#26 0x0000aaaaaf4a066c in handle_internal_command (argc=3,
argv=0xffffe56cb370) at perf.c:398
#27 0x0000aaaaaf4a0824 in run_argv (argcp=0xffffe56cb1ac,
argv=0xffffe56cb1a0) at perf.c:442
#28 0x0000aaaaaf4a0b4c in main (argc=3, argv=0xffffe56cb370) at
perf.c:549
next prev parent reply other threads:[~2026-05-08 13:30 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20260504072937.2103453-1-irogers@google.com>
2026-05-06 0:45 ` [PATCH v5 0/5] perf tools: Add inject --aslr feature and prerequisite robustness fixes Ian Rogers
2026-05-06 0:45 ` [PATCH v5 1/5] perf sched: Add missing mmap2 handler in timehist Ian Rogers
2026-05-06 13:22 ` Arnaldo Carvalho de Melo
2026-05-06 16:16 ` Ian Rogers
2026-05-06 0:45 ` [PATCH v5 2/5] perf tool: Fix missing schedstat delegates and dont_split_sample_group in delegate_tool Ian Rogers
2026-05-06 0:45 ` [PATCH v5 3/5] perf symbols: Fix map removal sequence inside dso__process_kernel_symbol() Ian Rogers
2026-05-06 0:45 ` [PATCH v5 4/5] perf inject/aslr: Add aslr tool to remap/obfuscate virtual addresses Ian Rogers
2026-05-06 18:52 ` Namhyung Kim
2026-05-06 20:01 ` Ian Rogers
2026-05-06 0:45 ` [PATCH v5 5/5] perf test: Add inject ASLR test Ian Rogers
2026-05-07 15:58 ` James Clark
2026-05-07 16:17 ` Ian Rogers
2026-05-08 10:42 ` James Clark
2026-05-08 10:49 ` James Clark
2026-05-08 8:27 ` [PATCH v6 0/6] perf tools: Add inject --aslr feature and prerequisite robustness fixes Ian Rogers
2026-05-08 8:27 ` [PATCH v6 1/6] perf sched: Add missing mmap2 handler in timehist Ian Rogers
2026-05-08 8:27 ` [PATCH v6 2/6] perf tool: Missing delegate_tool schedstat delegates and dont_split_sample_group Ian Rogers
2026-05-08 8:27 ` [PATCH v6 3/6] perf maps: Add maps__mutate_mapping Ian Rogers
2026-05-08 10:57 ` James Clark
2026-05-11 7:07 ` Namhyung Kim
2026-05-08 8:27 ` [PATCH v6 4/6] perf inject/aslr: Add aslr tool to remap/obfuscate virtual addresses Ian Rogers
2026-05-11 7:32 ` Namhyung Kim
2026-05-08 8:27 ` [PATCH v6 5/6] perf test: Add inject ASLR test Ian Rogers
2026-05-08 13:29 ` James Clark [this message]
2026-05-08 14:29 ` James Clark
2026-05-11 7:34 ` Namhyung Kim
2026-05-08 8:27 ` [PATCH v6 6/6] perf aslr: Strip sample registers Ian Rogers
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=dec2f42d-3c2a-424e-9d50-e52ebbee3d69@linaro.org \
--to=james.clark@linaro.org \
--cc=acme@kernel.org \
--cc=adrian.hunter@intel.com \
--cc=gmx@google.com \
--cc=irogers@google.com \
--cc=jolsa@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=namhyung@kernel.org \
--cc=peterz@infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox