Skip to content

fix(rocprofiler-systems): exit cleanly instead of SIGABRT on invalid input - #13626

Open
anujshuk-amd wants to merge 6 commits into
developfrom
users/anujshuk-amd/rocprof-sys-instrument-fix-sigabrt-invalid-input
Open

anujshuk-amd wants to merge 6 commits into
developfrom
users/anujshuk-amd/rocprof-sys-instrument-fix-sigabrt-invalid-input

Conversation

@anujshuk-amd

@anujshuk-amd anujshuk-amd commented Oct 16, 2026 •

Copy link
Copy Markdown
Contributor

Motivation

rocprof-sys-instrument printed the right diagnostic for invalid input, then
let a std::runtime_error escape main. That called std::terminate, which
aborted the process with SIGABRT (shell status 134, Python returncode -6),
printed a crash backtrace, and could leave a core dump. This happened for a
non-ELF text file, a missing target, and an already-instrumented binary.

Technical Details

  • The body of main() in rocprof-sys-instrument.cpp moved unchanged into an
    internal run() function. main() now calls run() and catches
    std::exception, prints "[rocprof-sys] error: ", and returns
    EXIT_FAILURE. This is the same handling tool_runner::run() uses for
    rocprof-sys-run and rocprof-sys-sample.
  • All three failures throw from rocprofsys_get_address_space(): errprintf()
    throws after a text-file or unopenable-target check, and a failed Dyninst
    openBinary() throws "Failed to open binary". One boundary in main() covers
    every path, so no per-call try/catch is needed.
  • The existing diagnostics are unchanged. Invalid input now exits 1.

Issue Tracking

JIRA ID - AIPROFSYST-734

Test Plan

  • Added regression tests to TestRocprofilerSystemsInstrument in
    tests/pytest/test_binaries.py: test_invalid_input_non_elf,
    test_invalid_input_missing_target, and test_invalid_input_reinstrument.
    Each checks the diagnostic, exit code 1, and that no "terminate called",
    "Signal 6 caught", or "Killing process" output appears.
  • The reinstrument test also checks that second.inst is not written and
    that the first instrumented binary still runs under rocprof-sys-run.
  • Ran the ticket's reproduction commands manually : all three cases exit 1
    with no SIGABRT and no core file. The first .inst is unchanged (same
    checksum) and still runs.

@github-actions

github-actions Bot commented Oct 16, 2026 •

Copy link
Copy Markdown
Contributor

rocprofiler-systems CI Summary

Test Results (for commit bfe751a)

Workflow jobs covered: 36

Workflow Runs Avg Test Time Tests Skipped Failed
Ubuntu 22.04 5 31m 01s 2,765 110 0
Ubuntu 24.04 5 29m 06s 2,785 120 0
Debian 4 40m 16s 2,324 86 0
RHEL 12 36m 29s 6,636 319 1
System deps 10 31m 16s 5,754 236 0
Total 36 33m 40s 20,264 871 1

Failed Tests

RHEL (1 failed)
Artifact Failed Test
junit-build-rhel-primary-build-4 ucx-mpi-allreduce-binary-rewrite.ucx-mpi-allreduce-binary-rewrite

Sanitizers

Thread Undefined Address
Failed Passed Passed

@therock-pr-bot

Copy link
Copy Markdown

✅ All Policy Checks Passed

Check Status Details
📝 PR Description ✅ Pass —
⛔ Forbidden Files ✅ Pass —
🧪 Unit Test ✅ Pass —
🚫 Draft PR 🔜 To Be Enabled —
🚩 Feature Flag 🔜 To Be Enabled —
📊 Code Coverage 🔜 To Be Enabled —

🎉 All policy checks passed!

📖 Need help? See the Policy FAQ for details on every check and how to fix failures.

🙋 Wish to Override Policy?

@anujshuk-amd
anujshuk-amd force-pushed the users/anujshuk-amd/rocprof-sys-instrument-fix-sigabrt-invalid-input branch from fe7f162 to dc9edd7 Compare October 16, 2026 12:30
@github-actions

github-actions Bot commented Oct 16, 2026 •

Copy link
Copy Markdown
Contributor

Code Coverage Report

Code Coverage Report

Unit Tests

Lines: 🔴 26.4% (📉 -3.70% vs base) — 8,686/32,955 across 321 files
Functions: 🔴 25.5% — 861/3,381

🔴 0-20% (169 files)
Lines Functions File
0.0% 0/106 0/9 source/bin/common/argument_registration.hpp
0.0% 0/267 0/28 source/bin/common/tool_runner.cpp
0.0% 0/992 0/48 source/bin/rocprof-sys-avail/avail.cpp
0.0% 0/60 0/6 source/bin/rocprof-sys-avail/avail.hpp
0.0% 0/223 0/24 source/bin/rocprof-sys-avail/common.cpp
0.0% 0/18 0/3 source/bin/rocprof-sys-avail/component_categories.hpp
0.0% 0/274 0/12 source/bin/rocprof-sys-avail/generate_config.cpp
0.0% 0/39 0/2 source/bin/rocprof-sys-avail/get_availability.hpp
0.0% 0/11 0/1 source/bin/rocprof-sys-avail/get_categories.hpp
0.0% 0/106 0/6 source/bin/rocprof-sys-avail/hw_counter_query.cpp
0.0% 0/4 0/1 source/bin/rocprof-sys-avail/info_type.cpp
0.0% 0/9 0/1 source/bin/rocprof-sys-avail/info_type.hpp
0.0% 0/454 0/47 source/bin/rocprof-sys-causal/impl.cpp
0.0% 0/82 0/2 source/bin/rocprof-sys-causal/rocprof-sys-causal.cpp
0.0% 0/706 0/45 source/bin/rocprof-sys-instrument/details.cpp
0.0% 0/106 0/7 source/bin/rocprof-sys-instrument/function_signature.cpp
0.0% 0/20 0/5 source/bin/rocprof-sys-instrument/function_signature.hpp
0.0% 0/160 0/7 source/bin/rocprof-sys-instrument/info.hpp
0.0% 0/277 0/22 source/bin/rocprof-sys-instrument/internal_libs.cpp
0.0% 0/63 0/5 source/bin/rocprof-sys-instrument/log.cpp
0.0% 0/5 0/1 source/bin/rocprof-sys-instrument/log.hpp
0.0% 0/547 0/41 source/bin/rocprof-sys-instrument/module_function.cpp
0.0% 0/93 0/7 source/bin/rocprof-sys-instrument/module_function.hpp
0.0% 0/1591 0/87 source/bin/rocprof-sys-instrument/rocprof-sys-instrument.cpp
0.0% 0/165 0/12 source/bin/rocprof-sys-instrument/rocprof-sys-instrument.hpp
0.0% 0/2 0/1 source/bin/rocprof-sys-run/rocprof-sys-run.cpp
0.0% 0/2 0/1 source/bin/rocprof-sys-sample/rocprof-sys-sample.cpp
0.0% 0/57 0/5 source/bin/rocsys-exe/rocsys.cpp
0.0% 0/24 0/1 source/lib/backends/amd_smi/wrapper.hpp
0.0% 0/20 0/3 source/lib/backends/posix/backend.hpp
0.0% 0/46 0/2 source/lib/backends/rocprofiler_sdk/wrapper.hpp
0.0% 0/16 0/4 source/lib/binary/address_multirange.cpp
0.0% 0/9 0/1 source/lib/binary/address_multirange.hpp
0.0% 0/126 0/5 source/lib/binary/analysis.cpp
0.0% 0/7 0/1 source/lib/binary/binary_info.hpp
0.0% 0/107 0/9 source/lib/binary/dwarf_entry.cpp
0.0% 0/1 0/1 source/lib/binary/dwarf_entry.hpp
0.0% 0/74 0/6 source/lib/binary/link_map.cpp
0.0% 0/3 0/1 source/lib/binary/link_map.hpp
0.0% 0/10 0/1 source/lib/binary/scope_filter.cpp
0.0% 0/6 0/2 source/lib/binary/scope_filter.hpp
0.0% 0/162 0/18 source/lib/binary/symbol.cpp
0.0% 0/8 0/8 source/lib/binary/symbol.hpp
0.0% 0/10 0/2 source/lib/common/env_vars.hpp
0.0% 0/40 0/3 source/lib/common/invoke.hpp
0.0% 0/22 0/2 source/lib/common/setup.hpp
0.0% 0/25 0/2 source/lib/core/amd_smi.cpp
0.0% 0/74 0/18 source/lib/core/binary/address_range.cpp
0.0% 0/9 0/3 source/lib/core/binary/address_range.hpp
0.0% 0/21 0/6 source/lib/core/categories.cpp
0.0% 0/11 0/11 source/lib/core/components/fwd.hpp
0.0% 0/29 0/3 source/lib/core/config.hpp
0.0% 0/85 0/5 source/lib/core/cpu.cpp
0.0% 0/1 0/1 source/lib/core/cpu.hpp
0.0% 0/61 0/6 source/lib/core/dynamic_library.cpp
0.0% 0/28 0/7 source/lib/core/exception.cpp
0.0% 0/242 0/29 source/lib/core/gpu.cpp
0.0% 0/162 0/12 source/lib/core/gpu_metrics.cpp
0.0% 0/33 0/6 source/lib/core/mpi.hpp
0.0% 0/59 0/4 source/lib/core/mproc.cpp
0.0% 0/78 0/5 source/lib/core/perf.cpp
0.0% 0/52 0/5 source/lib/core/perfetto/cached_perfetto_session.cpp
0.0% 0/33 0/4 source/lib/core/perfetto/counter_track.hpp
0.0% 0/32 0/7 source/lib/core/perfetto/emitter.cpp
0.0% 0/48 0/8 source/lib/core/perfetto/emitter.hpp
0.0% 0/9 0/1 source/lib/core/perfetto/sinks/append_mode.hpp
0.0% 0/1 0/1 source/lib/core/progress/bar.hpp
0.0% 0/8 0/3 source/lib/core/sdk/tracing-config-deps.hpp
0.0% 0/53 0/3 source/lib/core/trace_cache/cache_manager.cpp
0.0% 0/7 0/2 source/lib/core/trace_cache/cache_manager.hpp
0.0% 0/817 0/104 source/lib/core/trace_cache/perfetto_processor.cpp
0.0% 0/1 0/1 source/lib/core/trace_cache/perfetto_processor.hpp
0.0% 0/129 0/13 source/lib/core/trace_cache/post_processor.cpp
0.0% 0/45 0/1 source/lib/core/trace_cache/sample_processor.hpp
0.0% 0/14 0/6 source/lib/rocprof-sys-causal-api/causal_api.cpp
0.0% 0/543 0/85 source/lib/rocprof-sys-dl/dl.cpp
0.0% 0/16 0/1 source/lib/rocprof-sys-dl/main.c
0.0% 0/280 0/31 source/lib/rocprof-sys-rt/src/RTcommon.c
0.0% 0/29 0/4 source/lib/rocprof-sys-rt/src/RTheap-linux.c
0.0% 0/65 0/4 source/lib/rocprof-sys-rt/src/RTheap.c
0.0% 0/212 0/22 source/lib/rocprof-sys-rt/src/RTlinux.c
0.0% 0/97 0/8 source/lib/rocprof-sys-rt/src/RTposix.c
0.0% 0/6 0/2 source/lib/rocprof-sys-rt/src/RTsignal.c
0.0% 0/11 0/2 source/lib/rocprof-sys-rt/src/RTthread-x86-64.c
0.0% 0/3 0/1 source/lib/rocprof-sys-rt/src/RTthread.c
0.0% 0/84 0/20 source/lib/rocprof-sys/api.cpp
0.0% 0/678 0/39 source/lib/rocprof-sys/library.cpp
0.0% 0/78 0/6 source/lib/rocprof-sys/library/causal/components/backtrace.cpp
0.0% 0/8 0/1 source/lib/rocprof-sys/library/causal/components/backtrace.hpp
0.0% 0/105 0/11 source/lib/rocprof-sys/library/causal/components/blocking_gotcha.cpp
0.0% 0/37 0/7 source/lib/rocprof-sys/library/causal/components/causal_gotcha.cpp
0.0% 0/86 0/22 source/lib/rocprof-sys/library/causal/components/progress_point.cpp
0.0% 0/23 0/3 source/lib/rocprof-sys/library/causal/components/progress_point.hpp
0.0% 0/50 0/8 source/lib/rocprof-sys/library/causal/components/unblocking_gotcha.cpp
0.0% 0/564 0/33 source/lib/rocprof-sys/library/causal/data.cpp
0.0% 0/91 0/16 source/lib/rocprof-sys/library/causal/delay.cpp
0.0% 0/391 0/29 source/lib/rocprof-sys/library/causal/experiment.cpp
0.0% 0/3 0/1 source/lib/rocprof-sys/library/causal/experiment.hpp
0.0% 0/24 0/5 source/lib/rocprof-sys/library/causal/sample_data.cpp
0.0% 0/296 0/25 source/lib/rocprof-sys/library/causal/sampling.cpp
0.0% 0/4 0/1 source/lib/rocprof-sys/library/causal/selected_entry.cpp
0.0% 0/5 0/3 source/lib/rocprof-sys/library/causal/selected_entry.hpp
0.0% 0/76 0/11 source/lib/rocprof-sys/library/components/backtrace.cpp
0.0% 0/1 0/1 source/lib/rocprof-sys/library/components/backtrace.hpp
0.0% 0/154 0/17 source/lib/rocprof-sys/library/components/backtrace_metrics.cpp
0.0% 0/11 0/2 source/lib/rocprof-sys/library/components/backtrace_metrics.hpp
0.0% 0/9 0/3 source/lib/rocprof-sys/library/components/backtrace_timestamp.cpp
0.0% 0/4 0/2 source/lib/rocprof-sys/library/components/backtrace_timestamp.hpp
0.0% 0/74 0/10 source/lib/rocprof-sys/library/components/callchain.cpp
0.0% 0/1 0/1 source/lib/rocprof-sys/library/components/callchain.hpp
0.0% 0/321 0/29 source/lib/rocprof-sys/library/components/comm_data.cpp
0.0% 0/19 0/5 source/lib/rocprof-sys/library/components/comm_data.hpp
0.0% 0/8 0/2 source/lib/rocprof-sys/library/components/ensure_storage.hpp
0.0% 0/29 0/6 source/lib/rocprof-sys/library/components/exit_gotcha.cpp
0.0% 0/1 0/1 source/lib/rocprof-sys/library/components/exit_gotcha.hpp
0.0% 0/69 0/8 source/lib/rocprof-sys/library/components/fork_gotcha.cpp
0.0% 0/1 0/1 source/lib/rocprof-sys/library/components/fork_gotcha.hpp
0.0% 0/13 0/3 source/lib/rocprof-sys/library/components/kill_gotcha.cpp
0.0% 0/1 0/1 source/lib/rocprof-sys/library/components/kill_gotcha.hpp
0.0% 0/176 0/22 source/lib/rocprof-sys/library/components/mpi_gotcha.cpp
0.0% 0/2 0/1 source/lib/rocprof-sys/library/components/mpi_gotcha.hpp
0.0% 0/533 0/12 source/lib/rocprof-sys/library/components/mpip.hpp
0.0% 0/79 0/19 source/lib/rocprof-sys/library/components/numa_gotcha.cpp
0.0% 0/2 0/1 source/lib/rocprof-sys/library/components/numa_gotcha.hpp
0.0% 0/350 0/20 source/lib/rocprof-sys/library/components/pthread_create_gotcha.cpp
0.0% 0/5 0/1 source/lib/rocprof-sys/library/components/pthread_create_gotcha.hpp
0.0% 0/35 0/9 source/lib/rocprof-sys/library/components/pthread_gotcha.cpp
0.0% 0/24 0/2 source/lib/rocprof-sys/library/components/pthread_mutex_gotcha_policy.hpp
0.0% 0/165 0/31 source/lib/rocprof-sys/library/components/vaapi_gotcha.cpp
0.0% 0/2 0/1 source/lib/rocprof-sys/library/components/vaapi_gotcha.hpp
0.0% 0/147 0/10 source/lib/rocprof-sys/library/coverage.cpp
0.0% 0/29 0/5 source/lib/rocprof-sys/library/coverage.hpp
0.0% 0/66 0/16 source/lib/rocprof-sys/library/coverage/impl.hpp
0.0% 0/260 0/35 source/lib/rocprof-sys/library/kokkosp.cpp
0.0% 0/252 0/32 source/lib/rocprof-sys/library/perf.cpp
0.0% 0/11 0/3 source/lib/rocprof-sys/library/perf.hpp
0.0% 0/155 0/9 source/lib/rocprof-sys/library/pmc/collectors/common/settings.hpp
0.0% 0/69 0/5 source/lib/rocprof-sys/library/pmc/collectors/cpu/cache_policy.hpp
0.0% 0/36 0/5 source/lib/rocprof-sys/library/pmc/collectors/cpu/cpu_traits.hpp
0.0% 0/116 0/6 source/lib/rocprof-sys/library/pmc/collectors/gpu/cache_policy.hpp
0.0% 0/34 0/3 source/lib/rocprof-sys/library/pmc/collectors/gpu_perf_counter/cache_policy.hpp
0.0% 0/14 0/2 source/lib/rocprof-sys/library/pmc/device_providers/procfs/provider.hpp
0.0% 0/167 0/20 source/lib/rocprof-sys/library/pmc/sampler.cpp
0.0% 0/125 0/11 source/lib/rocprof-sys/library/process_sampler.cpp
0.0% 0/15 0/3 source/lib/rocprof-sys/library/process_sampler.hpp
0.0% 0/586 0/43 source/lib/rocprof-sys/library/rocprofiler-sdk.cpp
0.0% 0/16 0/2 source/lib/rocprof-sys/library/rocprofiler-sdk/callback/hip_stream.hpp
0.0% 0/102 0/10 source/lib/rocprof-sys/library/rocprofiler-sdk/counters.cpp
0.0% 0/17 0/6 source/lib/rocprof-sys/library/rocprofiler-sdk/counters.hpp
0.0% 0/53 0/6 source/lib/rocprof-sys/library/rocprofiler-sdk/fwd.cpp
0.0% 0/8 0/3 source/lib/rocprof-sys/library/rocprofiler-sdk/fwd.hpp
0.0% 0/122 0/20 source/lib/rocprof-sys/library/runtime.cpp
0.0% 0/2 0/1 source/lib/rocprof-sys/library/runtime.hpp
0.0% 0/800 0/49 source/lib/rocprof-sys/library/sampling.cpp
0.0% 0/148 0/31 source/lib/rocprof-sys/library/thread_data.hpp
0.0% 0/10 0/3 source/lib/rocprof-sys/library/thread_data_growth.hpp
0.0% 0/11 0/1 source/lib/rocprof-sys/library/thread_deleter.cpp
0.0% 0/5 0/1 source/lib/rocprof-sys/library/thread_deleter.hpp
0.0% 0/168 0/27 source/lib/rocprof-sys/library/thread_info.cpp
0.0% 0/2 0/1 source/lib/rocprof-sys/library/thread_info.hpp
0.0% 0/118 0/11 source/lib/rocprof-sys/library/tracing.cpp
0.0% 0/60 0/14 source/lib/rocprof-sys/library/tracing.hpp
0.0% 0/8 0/2 source/lib/rocprof-sys/progress.cpp
0.0% 0/74 0/16 source/lib/rocprof-sys/regions.cpp
0.0% 0/91 0/6 source/lib/rocprof-sys/timeout.cpp
0.0% 0/453 0/45 source/python/libpyrocprofsys.cpp
0.8% 7/838 1/70 source/lib/core/argparse.cpp
3.7% 66/1798 10/301 source/lib/core/config.cpp
18.8% 6/32 2/5 source/bin/common/common_utils.hpp
🟠 20-50% (6 files)
Lines Functions File
20.0% 1/5 0/2 source/lib/core/argparse.hpp
20.0% 5/25 0/3 source/lib/rocprof-sys/library/pmc/collectors/gpu/sample.hpp
22.2% 101/454 29/66 source/lib/core/trace_cache/metadata_registry.cpp
31.2% 20/64 4/9 source/lib/core/utility.hpp
31.8% 7/22 0/2 source/lib/rocprof-sys/library/pmc/collectors/nic/sample.hpp
40.9% 18/44 1/7 source/lib/rocprof-sys/library/rocprofiler-sdk/types.hpp
🟡 50-80% (26 files)
Lines Functions File
50.0% 19/38 4/5 source/lib/common/static_object.hpp
50.0% 8/16 3/3 source/lib/core/perfetto/sinks/per_pid_file_sink.cpp
50.0% 1/2 0/1 source/lib/rocprof-sys/library/pmc/collectors/nic/types.hpp
50.2% 210/418 23/35 source/bin/common/common_utils.cpp
52.4% 130/248 14/29 source/lib/rocprof-sys/library/components/category_region.hpp
56.7% 17/30 2/15 source/lib/core/trace_cache/unified_memory_processor.hpp
60.0% 36/60 7/12 source/lib/core/agent_manager.cpp
61.4% 70/114 7/10 source/lib/core/progress/bar.cpp
61.7% 348/564 26/40 source/bin/common/json_config.cpp
63.1% 53/84 4/5 source/lib/core/trace_cache/discovery.cpp
66.7% 2/3 0/2 source/lib/rocprof-sys/library/pmc/collectors/cpu/types.hpp
66.7% 22/33 3/8 source/lib/rocprof-sys/library/pmc/collectors/gpu_perf_counter/types.hpp
68.7% 46/67 11/14 source/lib/core/trace_cache/data_types.cpp
70.2% 236/336 15/17 source/bin/common/preset_registry.cpp
71.4% 30/42 3/3 source/lib/core/perfetto/sinks/file_output.cpp
71.4% 25/35 1/2 source/lib/rocprof-sys/library/rocprofiler-sdk/callback/rccl/event_info.hpp
72.1% 88/122 15/18 source/lib/core/perfetto/engine.cpp
72.2% 13/18 2/5 source/lib/rocprof-sys/library/pmc/collectors/hipfile/types.hpp
74.3% 78/105 9/10 source/lib/core/perfetto/engine_impl.hpp
74.5% 41/55 4/7 source/lib/core/config/trace_period_config.hpp
75.0% 3/4 0/1 source/lib/backends/amd_smi/nic_types.hpp
75.4% 46/61 6/8 source/lib/rocprof-sys/library/pmc/collectors/cpu/sample.hpp
75.8% 47/62 5/5 source/lib/rocprof-sys/library/pmc/collectors/gpu/gpu_traits.hpp
78.2% 61/78 9/10 source/lib/rocprof-sys/library/pmc/device_providers/rocprofiler_sdk/provider.hpp
78.6% 77/98 4/4 source/lib/core/perfetto/sinks/single_file_sink.cpp
79.2% 19/24 2/2 source/lib/core/node_info.cpp
🟢 80-100% (120 files)
Lines Functions File
80.0% 4/5 1/1 source/lib/core/agent.hpp
80.6% 133/165 10/14 source/lib/backends/procfs/backend.hpp
80.8% 135/167 30/33 source/lib/backends/rocprofiler_sdk/backend.hpp
81.2% 13/16 2/3 source/lib/rocprof-sys/library/pmc/collectors/gpu_perf_counter/gpu_perf_counter_traits.hpp
81.4% 700/860 29/34 source/lib/core/trace_cache/rocpd_processor.cpp
81.8% 36/44 3/6 source/lib/core/containers/static_vector.hpp
83.2% 129/155 17/19 source/lib/common/path.hpp
83.9% 73/87 10/12 source/lib/logger/logger.hpp
84.6% 55/65 4/4 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/kfd/page_migrate.hpp
85.1% 40/47 2/2 source/lib/core/trace_cache/storage_parser.hpp
85.2% 23/27 2/4 source/lib/rocprof-sys/library/rocprofiler-sdk/domain_registry.hpp
85.2% 213/250 20/33 source/lib/core/sdk/tracing-config.hpp
85.7% 24/28 4/7 source/lib/core/trace_cache/metadata_registry.hpp
86.0% 49/57 4/4 source/lib/rocprof-sys/library/pmc/collectors/gpu_perf_counter/device.hpp
86.6% 259/299 27/33 source/lib/common/environment.hpp
88.9% 24/27 5/6 source/lib/rocprof-sys/library/rocprofiler-sdk/stream_stack_service.hpp
89.1% 106/119 8/8 source/lib/rocprof-sys/library/pmc/collectors/cpu/device.hpp
89.3% 50/56 3/3 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/kfd/event_page_migrate.hpp
89.5% 51/57 8/8 source/lib/rocprof-sys/library/pmc/collectors/base/collector.hpp
90.0% 54/60 4/4 source/lib/core/trace_cache/buffer_storage.cpp
90.4% 178/197 14/18 source/lib/rocprof-sys/library/components/shmem_gotcha.hpp
90.5% 248/274 19/20 source/lib/core/trace_cache/unified_memory_processor.cpp
90.7% 39/43 3/3 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/kfd/event_page_fault.hpp
90.7% 39/43 3/3 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/kfd/event_queue.hpp
90.9% 10/11 2/2 source/lib/core/control/clocks/timeline.hpp
91.1% 41/45 3/3 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/kfd/queue.hpp
91.5% 43/47 7/7 source/lib/core/control/triggers/time_window.hpp
91.5% 43/47 5/6 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered_domain.hpp
91.7% 11/12 2/2 source/lib/core/perfetto/session_backend.hpp
91.7% 44/48 3/3 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/kfd/event_unmap_from_gpu.hpp
91.8% 45/49 3/4 source/lib/rocprof-sys/library/pmc/collectors/nic/nic_traits.hpp
92.1% 70/76 7/8 source/lib/core/trace_cache/buffer_storage.hpp
92.2% 47/51 7/7 source/lib/core/control/clocks/posix.hpp
92.3% 24/26 1/3 source/lib/core/containers/c_array.hpp
92.3% 12/13 1/1 source/lib/rocprof-sys/library/rocprofiler-sdk/callback/rccl/transferred_bytes_tracker.hpp
92.5% 186/201 21/23 source/lib/rocprof-sys/library/rocprofiler-sdk/domain_service.hpp
92.6% 163/176 9/9 source/lib/rocprof-sys/library/pmc/collectors/gpu/device.hpp
92.9% 13/14 0/1 source/lib/rocprof-sys/library/pmc/collectors/common/collector_slice.hpp
93.1% 54/58 6/8 source/lib/rocprof-sys/library/components/pthread_mutex_gotcha.hpp
93.3% 265/284 21/30 source/lib/core/trace_cache/sample_type.hpp
94.1% 16/17 1/2 source/lib/rocprof-sys/library/rocprofiler-sdk/callback_domain.hpp
94.4% 51/54 4/7 source/lib/core/containers/aligned_static_vector.hpp
95.0% 38/40 6/7 source/lib/core/trace_cache/rocpd_helpers.hpp
95.2% 20/21 1/2 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/memory_allocation.hpp
95.3% 162/170 19/22 source/lib/rocprof-sys/library/components/ucx_gotcha.hpp
95.4% 62/65 1/5 source/lib/core/trace_cache/cacheable.hpp
95.4% 83/87 19/23 source/lib/core/containers/stable_vector.hpp
95.5% 105/110 12/13 source/lib/rocprof-sys/library/rocprofiler-sdk/callback/ompt/ompt.hpp
95.8% 23/24 2/4 source/lib/common/pci_bdf.hpp
96.1% 49/51 7/7 source/lib/core/process_environment_info.cpp
96.2% 126/131 10/10 source/lib/core/output/output_summary.cpp
96.3% 26/27 1/2 source/lib/common/delimit.hpp
96.5% 82/85 11/12 source/lib/core/state.hpp
96.7% 148/153 9/10 source/lib/common/md5sum.hpp
96.8% 30/31 3/4 source/lib/rocprof-sys/library/pmc/collectors/gpu_perf_counter/sample.hpp
97.0% 32/33 2/2 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/kfd/event_dropped_events.hpp
97.3% 36/37 1/2 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/scratch_memory.hpp
97.3% 36/37 4/4 source/lib/rocprof-sys/library/rocprofiler-sdk/callback/common_tracing_callbacks.hpp
97.4% 74/76 6/6 source/lib/core/common_types.hpp
97.5% 39/40 3/3 source/lib/core/utility.cpp
97.7% 85/87 11/12 source/lib/core/control/triggers/roctx.cpp
97.8% 44/45 7/11 source/lib/core/demangler.hpp
97.8% 45/46 3/3 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/kfd/page_fault.hpp
98.0% 49/50 3/3 source/lib/rocprof-sys/library/pmc/collectors/nic/device.hpp
98.1% 53/54 7/7 source/lib/rocprof-sys/library/pmc/device_providers/amd_smi/provider.hpp
98.2% 56/57 7/8 source/lib/rocprof-sys/library/rocprofiler-sdk/callback/ompt/decoder.hpp
98.5% 129/131 18/19 source/lib/rocprof-sys/library/rocprofiler-sdk/callback/roctx/core_api.hpp
98.5% 67/68 9/9 source/bin/common/cli_dispatcher.cpp
98.5% 67/68 10/12 source/lib/common/string_utility.hpp
98.6% 68/69 5/5 source/bin/rocprof-sys-instrument/dynamic_dependency_listing.hpp
98.7% 76/77 3/3 source/lib/core/perfetto/packet_framing.hpp
98.8% 81/82 15/16 source/lib/backends/amd_smi/backend.hpp
99.1% 115/116 19/19 source/lib/core/control/session.cpp
100.0% 1/1 0/1 source/bin/common/cli_dispatcher.hpp
100.0% 1/1 0/1 source/bin/common/json_config.hpp
100.0% 110/110 13/14 source/lib/backends/amd_smi/device.hpp
100.0% 7/7 0/1 source/lib/backends/amd_smi/gpu_types.hpp
100.0% 32/32 2/3 source/lib/backends/hipfile/backend.hpp
100.0% 1/1 0/1 source/lib/backends/rocprofiler_sdk/types.hpp
100.0% 12/12 1/1 source/lib/common/join.hpp
100.0% 24/24 5/6 source/lib/common/synchronized.hpp
100.0% 14/14 2/5 source/lib/common/units/data_size.hpp
100.0% 11/11 2/3 source/lib/common/units/frequency.hpp
100.0% 11/11 2/3 source/lib/common/units/power.hpp
100.0% 5/5 0/3 source/lib/common/units/quantity.hpp
100.0% 8/8 0/2 source/lib/common/version.hpp
100.0% 158/158 1/1 source/lib/core/agent_info.hpp
100.0% 2/2 1/2 source/lib/core/agent_manager.hpp
100.0% 22/22 0/2 source/lib/core/containers/operators.hpp
100.0% 19/19 4/4 source/lib/core/control/clocks/steady.cpp
100.0% 2/2 1/2 source/lib/core/control/clocks/steady.hpp
100.0% 15/15 3/5 source/lib/core/control/session.hpp
100.0% 3/3 0/2 source/lib/core/control/triggers/roctx.hpp
100.0% 2/2 2/2 source/lib/core/node_info.hpp
100.0% 3/3 1/2 source/lib/core/output/output_summary.hpp
100.0% 1/1 0/1 source/lib/core/perfetto/category_registry.hpp
100.0% 1/1 0/1 source/lib/core/perfetto/engine.hpp
100.0% 7/7 0/1 source/lib/core/perfetto/sinks/file_output.hpp
100.0% 1/1 0/1 source/lib/core/perfetto/sinks/per_pid_file_sink.hpp
100.0% 2/2 0/1 source/lib/core/perfetto/sinks/single_file_sink.hpp
100.0% 2/2 0/1 source/lib/core/perfetto/sinks/trace_sink.hpp
100.0% 7/7 2/2 source/lib/core/progress/tracker.cpp
100.0% 1/1 0/1 source/lib/core/progress/tracker.hpp
100.0% 4/4 0/3 source/lib/core/trace_cache/data_types.hpp
100.0% 2/2 0/1 source/lib/core/trace_cache/sample_processor_interface.hpp
100.0% 9/9 3/3 source/lib/core/trace_cache/type_registry.hpp
100.0% 5/5 2/2 source/lib/core/track_registry.cpp
100.0% 4/4 0/2 source/lib/core/track_registry.hpp
100.0% 12/12 1/1 source/lib/logger/logger.cpp
100.0% 9/9 0/2 source/lib/rocprof-sys/library/pmc/collectors/gpu/types.hpp
100.0% 55/55 4/4 source/lib/rocprof-sys/library/pmc/collectors/hipfile/device.hpp
100.0% 36/36 2/3 source/lib/rocprof-sys/library/pmc/collectors/hipfile/hipfile_traits.hpp
100.0% 20/20 2/3 source/lib/rocprof-sys/library/pmc/collectors/hipfile/sample.hpp
100.0% 3/3 0/3 source/lib/rocprof-sys/library/pmc/common/types.hpp
100.0% 43/43 2/2 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/kernel_dispatch.hpp
100.0% 39/39 1/2 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/memory_copy.hpp
100.0% 9/9 1/1 source/lib/rocprof-sys/library/rocprofiler-sdk/callback/code_object.hpp
100.0% 17/17 2/2 source/lib/rocprof-sys/library/rocprofiler-sdk/callback/rccl/device_resolver.hpp
100.0% 48/48 4/4 source/lib/rocprof-sys/library/rocprofiler-sdk/callback/rccl/rccl.hpp
100.0% 10/10 0/1 source/lib/rocprof-sys/library/rocprofiler-sdk/callback/roctx/control_api.hpp

Distribution

Range Files
0-20% 169
20-50% 6
50-80% 26
80-100% 120

Unit Tests (PR Diff Files Only)

Lines: 🔴 0.0% — 0/1,756 across 2 files
Functions: 🔴 0.0% — 0/99

🔴 0-20% (2 files)
Lines Functions File
0.0% 0/1591 0/87 source/bin/rocprof-sys-instrument/rocprof-sys-instrument.cpp
0.0% 0/165 0/12 source/bin/rocprof-sys-instrument/rocprof-sys-instrument.hpp

Distribution

Range Files
0-20% 2
20-50% 0
50-80% 0
80-100% 0

E2E Tests

Lines: 🟡 72.7% — 23,970/32,955 across 321 files
Functions: 🟡 70.7% — 2,390/3,381

🔴 0-20% (30 files)
Lines Functions File
0.0% 0/106 0/6 source/bin/rocprof-sys-avail/hw_counter_query.cpp
0.0% 0/24 0/1 source/lib/backends/amd_smi/wrapper.hpp
0.0% 0/85 0/5 source/lib/core/cpu.cpp
0.0% 0/1 0/1 source/lib/core/cpu.hpp
0.0% 0/61 0/6 source/lib/core/dynamic_library.cpp
0.0% 0/28 0/7 source/lib/core/exception.cpp
0.0% 0/162 0/12 source/lib/core/gpu_metrics.cpp
0.0% 0/8 0/3 source/lib/core/sdk/tracing-config-deps.hpp
0.0% 0/6 0/2 source/lib/rocprof-sys-rt/src/RTsignal.c
0.0% 0/11 0/2 source/lib/rocprof-sys-rt/src/RTthread-x86-64.c
0.0% 0/3 0/1 source/lib/rocprof-sys-rt/src/RTthread.c
0.0% 0/1 0/1 source/lib/rocprof-sys/library/components/exit_gotcha.hpp
0.0% 0/1 0/1 source/lib/rocprof-sys/library/components/kill_gotcha.hpp
0.0% 0/116 0/6 source/lib/rocprof-sys/library/pmc/collectors/gpu/cache_policy.hpp
0.0% 0/34 0/3 source/lib/rocprof-sys/library/pmc/collectors/gpu_perf_counter/cache_policy.hpp
0.0% 0/16 0/2 source/lib/rocprof-sys/library/rocprofiler-sdk/callback/hip_stream.hpp
0.0% 0/102 0/10 source/lib/rocprof-sys/library/rocprofiler-sdk/counters.cpp
0.0% 0/17 0/6 source/lib/rocprof-sys/library/rocprofiler-sdk/counters.hpp
0.0% 0/53 0/6 source/lib/rocprof-sys/library/rocprofiler-sdk/fwd.cpp
0.0% 0/8 0/3 source/lib/rocprof-sys/library/rocprofiler-sdk/fwd.hpp
0.0% 0/453 0/45 source/python/libpyrocprofsys.cpp
4.8% 8/165 2/31 source/lib/rocprof-sys/library/components/vaapi_gotcha.cpp
8.5% 50/586 13/43 source/lib/rocprof-sys/library/rocprofiler-sdk.cpp
8.7% 4/46 0/2 source/lib/backends/rocprofiler_sdk/wrapper.hpp
12.0% 3/25 1/2 source/lib/core/amd_smi.cpp
13.2% 32/242 6/29 source/lib/core/gpu.cpp
13.6% 38/280 7/31 source/lib/rocprof-sys-rt/src/RTcommon.c
13.8% 4/29 1/4 source/lib/rocprof-sys-rt/src/RTheap-linux.c
14.2% 30/212 4/22 source/lib/rocprof-sys-rt/src/RTlinux.c
16.2% 12/74 4/16 source/lib/rocprof-sys/regions.cpp
🟠 20-50% (19 files)
Lines Functions File
20.0% 5/25 0/3 source/lib/rocprof-sys/library/pmc/collectors/gpu/sample.hpp
21.3% 33/155 4/9 source/lib/rocprof-sys/library/pmc/collectors/common/settings.hpp
23.8% 108/454 31/66 source/lib/core/trace_cache/metadata_registry.cpp
24.4% 19/78 3/5 source/lib/core/perf.cpp
27.8% 27/97 4/8 source/lib/rocprof-sys-rt/src/RTposix.c
30.5% 249/817 32/104 source/lib/core/trace_cache/perfetto_processor.cpp
31.8% 7/22 0/2 source/lib/rocprof-sys/library/pmc/collectors/nic/sample.hpp
34.5% 10/29 3/6 source/lib/rocprof-sys/library/components/exit_gotcha.cpp
35.7% 30/84 10/20 source/lib/rocprof-sys/api.cpp
37.1% 39/105 5/11 source/lib/rocprof-sys/library/causal/components/blocking_gotcha.cpp
37.8% 31/82 1/2 source/bin/rocprof-sys-causal/rocprof-sys-causal.cpp
38.5% 5/13 2/3 source/lib/rocprof-sys/library/components/kill_gotcha.cpp
40.9% 18/44 1/7 source/lib/rocprof-sys/library/rocprofiler-sdk/types.hpp
43.8% 21/48 6/8 source/lib/core/perfetto/emitter.hpp
44.4% 4/9 1/3 source/lib/rocprof-sys/library/components/backtrace_timestamp.cpp
45.0% 72/160 3/7 source/bin/rocprof-sys-instrument/info.hpp
45.5% 30/66 6/16 source/lib/rocprof-sys/library/coverage/impl.hpp
46.2% 42/91 2/6 source/lib/rocprof-sys/timeout.cpp
47.7% 31/65 3/4 source/lib/rocprof-sys-rt/src/RTheap.c
🟡 50-80% (59 files)
Lines Functions File
50.0% 8/16 2/4 source/lib/binary/address_multirange.cpp
50.0% 16/32 5/7 source/lib/core/perfetto/emitter.cpp
50.0% 7/14 2/6 source/lib/rocprof-sys-causal-api/causal_api.cpp
50.0% 1/2 0/1 source/lib/rocprof-sys/library/components/numa_gotcha.hpp
50.0% 1/2 0/1 source/lib/rocprof-sys/library/components/vaapi_gotcha.hpp
50.0% 1/2 0/1 source/lib/rocprof-sys/library/pmc/collectors/nic/types.hpp
50.0% 1/2 0/1 source/lib/rocprof-sys/library/thread_info.hpp
50.0% 4/8 1/2 source/lib/rocprof-sys/progress.cpp
50.9% 29/57 3/5 source/bin/rocsys-exe/rocsys.cpp
52.3% 168/321 15/29 source/lib/rocprof-sys/library/components/comm_data.cpp
54.6% 142/260 27/35 source/lib/rocprof-sys/library/kokkosp.cpp
55.6% 25/45 0/1 source/lib/core/trace_cache/sample_processor.hpp
56.7% 17/30 2/15 source/lib/core/trace_cache/unified_memory_processor.hpp
57.0% 45/79 8/19 source/lib/rocprof-sys/library/components/numa_gotcha.cpp
57.5% 23/40 1/3 source/lib/common/invoke.hpp
58.1% 97/167 15/20 source/lib/rocprof-sys/library/pmc/sampler.cpp
59.4% 63/106 5/9 source/bin/common/argument_registration.hpp
59.5% 44/74 13/18 source/lib/core/binary/address_range.cpp
61.4% 70/114 7/10 source/lib/core/progress/bar.cpp
62.7% 37/59 3/4 source/lib/core/mproc.cpp
63.8% 44/69 5/8 source/lib/rocprof-sys/library/components/fork_gotcha.cpp
63.9% 161/252 24/32 source/lib/rocprof-sys/library/perf.cpp
64.3% 54/84 4/5 source/lib/core/trace_cache/discovery.cpp
65.0% 13/20 2/3 source/lib/backends/posix/backend.hpp
66.4% 81/122 15/20 source/lib/rocprof-sys/library/runtime.cpp
66.7% 6/9 1/1 source/lib/core/perfetto/sinks/append_mode.hpp
66.7% 22/33 3/8 source/lib/rocprof-sys/library/pmc/collectors/gpu_perf_counter/types.hpp
66.7% 471/706 33/45 source/bin/rocprof-sys-instrument/details.cpp
67.6% 25/37 5/7 source/lib/rocprof-sys/library/causal/components/causal_gotcha.cpp
69.1% 375/543 40/85 source/lib/rocprof-sys-dl/dl.cpp
70.0% 35/50 5/8 source/lib/rocprof-sys/library/causal/components/unblocking_gotcha.cpp
70.5% 124/176 16/22 source/lib/rocprof-sys/library/components/mpi_gotcha.cpp
71.4% 30/42 3/3 source/lib/core/perfetto/sinks/file_output.cpp
71.4% 25/35 1/2 source/lib/rocprof-sys/library/rocprofiler-sdk/callback/rccl/event_info.hpp
72.2% 407/564 30/40 source/bin/common/json_config.cpp
72.2% 13/18 2/5 source/lib/rocprof-sys/library/pmc/collectors/hipfile/types.hpp
72.9% 245/336 16/17 source/bin/common/preset_registry.cpp
73.0% 54/74 5/6 source/lib/binary/link_map.cpp
73.6% 78/106 5/7 source/bin/rocprof-sys-instrument/function_signature.cpp
74.6% 47/63 4/5 source/bin/rocprof-sys-instrument/log.cpp
74.6% 312/418 33/35 source/bin/common/common_utils.cpp
74.6% 421/564 30/33 source/lib/rocprof-sys/library/causal/data.cpp
74.9% 1192/1591 51/87 source/bin/rocprof-sys-instrument/rocprof-sys-instrument.cpp
75.0% 15/20 5/5 source/bin/rocprof-sys-instrument/function_signature.hpp
75.0% 3/4 0/1 source/lib/backends/amd_smi/nic_types.hpp
75.0% 18/24 4/5 source/lib/rocprof-sys/library/causal/sample_data.cpp
75.3% 223/296 23/25 source/lib/rocprof-sys/library/causal/sampling.cpp
75.7% 414/547 40/41 source/bin/rocprof-sys-instrument/module_function.cpp
75.8% 47/62 5/5 source/lib/rocprof-sys/library/pmc/collectors/gpu/gpu_traits.hpp
76.3% 29/38 5/5 source/lib/common/static_object.hpp
76.7% 46/60 10/12 source/lib/core/agent_manager.cpp
76.7% 99/129 12/13 source/lib/core/trace_cache/post_processor.cpp
78.2% 61/78 9/10 source/lib/rocprof-sys/library/pmc/device_providers/rocprofiler_sdk/provider.hpp
78.3% 209/267 24/28 source/bin/common/tool_runner.cpp
78.4% 116/148 26/31 source/lib/rocprof-sys/library/thread_data.hpp
79.0% 83/105 10/10 source/lib/core/perfetto/engine_impl.hpp
79.1% 219/277 20/22 source/bin/rocprof-sys-instrument/internal_libs.cpp
79.2% 19/24 2/2 source/lib/core/node_info.cpp
79.8% 134/168 24/27 source/lib/rocprof-sys/library/thread_info.cpp
🟢 80-100% (213 files)
Lines Functions File
80.0% 4/5 0/1 source/bin/rocprof-sys-instrument/log.hpp
80.0% 4/5 1/1 source/lib/core/agent.hpp
80.8% 135/167 30/33 source/lib/backends/rocprofiler_sdk/backend.hpp
81.2% 181/223 21/24 source/bin/rocprof-sys-avail/common.cpp
81.2% 13/16 1/1 source/lib/rocprof-sys-dl/main.c
81.2% 13/16 2/3 source/lib/rocprof-sys/library/pmc/collectors/gpu_perf_counter/gpu_perf_counter_traits.hpp
81.3% 1461/1798 276/301 source/lib/core/config.cpp
81.4% 70/86 17/22 source/lib/rocprof-sys/library/causal/components/progress_point.cpp
82.4% 136/165 12/12 source/bin/rocprof-sys-instrument/rocprof-sys-instrument.hpp
82.7% 43/52 5/5 source/lib/core/perfetto/cached_perfetto_session.cpp
82.9% 324/391 18/29 source/lib/rocprof-sys/library/causal/experiment.cpp
83.2% 89/107 8/9 source/lib/binary/dwarf_entry.cpp
84.0% 722/860 29/34 source/lib/core/trace_cache/rocpd_processor.cpp
84.1% 570/678 34/39 source/lib/rocprof-sys/library.cpp
84.2% 16/19 3/5 source/lib/rocprof-sys/library/components/comm_data.hpp
84.2% 139/165 11/14 source/lib/backends/procfs/backend.hpp
84.6% 137/162 17/18 source/lib/binary/symbol.cpp
84.6% 55/65 4/4 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/kfd/page_migrate.hpp
84.7% 83/98 4/4 source/lib/core/perfetto/sinks/single_file_sink.cpp
85.1% 74/87 10/12 source/lib/logger/logger.hpp
85.2% 23/27 2/4 source/lib/rocprof-sys/library/rocprofiler-sdk/domain_registry.hpp
85.7% 24/28 4/7 source/lib/core/trace_cache/metadata_registry.hpp
85.7% 78/91 14/16 source/lib/rocprof-sys/library/causal/delay.cpp
85.7% 132/154 12/17 source/lib/rocprof-sys/library/components/backtrace_metrics.cpp
86.0% 49/57 4/4 source/lib/rocprof-sys/library/pmc/collectors/gpu_perf_counter/device.hpp
86.0% 80/93 5/7 source/bin/rocprof-sys-instrument/module_function.hpp
86.8% 46/53 3/3 source/lib/core/trace_cache/cache_manager.cpp
87.5% 14/16 3/3 source/lib/core/perfetto/sinks/per_pid_file_sink.cpp
87.6% 262/299 29/33 source/lib/common/environment.hpp
87.8% 129/147 10/10 source/lib/rocprof-sys/library/coverage.cpp
88.1% 104/118 10/11 source/lib/rocprof-sys/library/tracing.cpp
88.2% 67/76 9/11 source/lib/rocprof-sys/library/components/backtrace.cpp
88.8% 403/454 36/47 source/bin/rocprof-sys-causal/impl.cpp
88.9% 24/27 5/6 source/lib/rocprof-sys/library/rocprofiler-sdk/stream_stack_service.hpp
89.0% 712/800 46/49 source/lib/rocprof-sys/library/sampling.cpp
89.2% 66/74 7/10 source/lib/rocprof-sys/library/components/callchain.cpp
89.2% 223/250 23/33 source/lib/core/sdk/tracing-config.hpp
89.3% 50/56 3/3 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/kfd/event_page_migrate.hpp
89.4% 749/838 57/70 source/lib/core/argparse.cpp
90.0% 9/10 1/1 source/lib/binary/scope_filter.cpp
90.0% 54/60 4/4 source/lib/core/trace_cache/buffer_storage.cpp
90.0% 54/60 10/14 source/lib/rocprof-sys/library/tracing.hpp
90.1% 247/274 11/12 source/bin/rocprof-sys-avail/generate_config.cpp
90.5% 248/274 19/20 source/lib/core/trace_cache/unified_memory_processor.cpp
90.7% 39/43 3/3 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/kfd/event_page_fault.hpp
90.7% 39/43 3/3 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/kfd/event_queue.hpp
90.9% 318/350 18/20 source/lib/rocprof-sys/library/components/pthread_create_gotcha.cpp
90.9% 20/22 2/2 source/lib/common/setup.hpp
90.9% 10/11 2/2 source/lib/core/control/clocks/timeline.hpp
90.9% 10/11 1/1 source/lib/rocprof-sys/library/thread_deleter.cpp
91.1% 41/45 3/3 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/kfd/queue.hpp
91.2% 52/57 8/8 source/lib/rocprof-sys/library/pmc/collectors/base/collector.hpp
91.5% 43/47 5/6 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered_domain.hpp
91.6% 109/119 8/8 source/lib/rocprof-sys/library/pmc/collectors/cpu/device.hpp
91.7% 11/12 2/2 source/lib/core/perfetto/session_backend.hpp
91.7% 44/48 3/3 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/kfd/event_unmap_from_gpu.hpp
91.8% 45/49 3/4 source/lib/rocprof-sys/library/pmc/collectors/nic/nic_traits.hpp
92.1% 116/126 5/5 source/lib/binary/analysis.cpp
92.1% 70/76 7/8 source/lib/core/trace_cache/buffer_storage.hpp
92.2% 47/51 7/7 source/lib/core/control/clocks/posix.hpp
92.3% 12/13 1/1 source/lib/rocprof-sys/library/rocprofiler-sdk/callback/rccl/transferred_bytes_tracker.hpp
92.5% 186/201 21/23 source/lib/rocprof-sys/library/rocprofiler-sdk/domain_service.hpp
92.6% 163/176 9/9 source/lib/rocprof-sys/library/pmc/collectors/gpu/device.hpp
92.6% 113/122 17/18 source/lib/core/perfetto/engine.cpp
92.7% 920/992 41/48 source/bin/rocprof-sys-avail/avail.cpp
92.9% 13/14 2/2 source/lib/rocprof-sys/library/pmc/device_providers/procfs/provider.hpp
93.1% 27/29 3/5 source/lib/rocprof-sys/library/coverage.hpp
93.3% 265/284 21/30 source/lib/core/trace_cache/sample_type.hpp
93.6% 117/125 11/11 source/lib/rocprof-sys/library/process_sampler.cpp
93.9% 31/33 6/6 source/lib/core/mpi.hpp
94.1% 16/17 1/2 source/lib/rocprof-sys/library/rocprofiler-sdk/callback_domain.hpp
94.3% 33/35 7/9 source/lib/rocprof-sys/library/components/pthread_gotcha.cpp
94.4% 186/197 16/18 source/lib/rocprof-sys/library/components/shmem_gotcha.hpp
94.4% 17/18 3/3 source/bin/rocprof-sys-avail/component_categories.hpp
94.8% 147/155 18/19 source/lib/common/path.hpp
94.9% 74/78 6/6 source/lib/rocprof-sys/library/causal/components/backtrace.cpp
95.0% 38/40 6/7 source/lib/core/trace_cache/rocpd_helpers.hpp
95.1% 58/61 7/8 source/lib/rocprof-sys/library/pmc/collectors/cpu/sample.hpp
95.2% 20/21 1/2 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/memory_allocation.hpp
95.3% 162/170 19/22 source/lib/rocprof-sys/library/components/ucx_gotcha.hpp
95.4% 62/65 1/5 source/lib/core/trace_cache/cacheable.hpp
95.5% 105/110 12/13 source/lib/rocprof-sys/library/rocprofiler-sdk/callback/ompt/ompt.hpp
95.7% 45/47 2/2 source/lib/core/trace_cache/storage_parser.hpp
95.8% 23/24 2/4 source/lib/common/pci_bdf.hpp
96.1% 49/51 7/7 source/lib/core/process_environment_info.cpp
96.2% 126/131 10/10 source/lib/core/output/output_summary.cpp
96.3% 26/27 1/2 source/lib/common/delimit.hpp
96.3% 52/54 5/7 source/lib/core/containers/aligned_static_vector.hpp
96.6% 28/29 3/3 source/lib/core/config.hpp
96.7% 148/153 9/10 source/lib/common/md5sum.hpp
96.8% 240/248 28/29 source/lib/rocprof-sys/library/components/category_region.hpp
96.8% 30/31 3/4 source/lib/rocprof-sys/library/pmc/collectors/gpu_perf_counter/sample.hpp
96.9% 62/64 9/9 source/lib/core/utility.hpp
97.0% 32/33 4/4 source/lib/core/perfetto/counter_track.hpp
97.0% 32/33 2/2 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/kfd/event_dropped_events.hpp
97.0% 65/67 14/14 source/lib/core/trace_cache/data_types.cpp
97.2% 35/36 4/5 source/lib/rocprof-sys/library/pmc/collectors/cpu/cpu_traits.hpp
97.3% 36/37 1/2 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/scratch_memory.hpp
97.3% 36/37 4/4 source/lib/rocprof-sys/library/rocprofiler-sdk/callback/common_tracing_callbacks.hpp
97.4% 74/76 6/6 source/lib/core/common_types.hpp
97.5% 39/40 3/3 source/lib/core/utility.cpp
97.7% 85/87 11/12 source/lib/core/control/triggers/roctx.cpp
97.8% 45/46 3/3 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/kfd/page_fault.hpp
98.0% 49/50 3/3 source/lib/rocprof-sys/library/pmc/collectors/nic/device.hpp
98.1% 53/54 7/7 source/lib/rocprof-sys/library/pmc/device_providers/amd_smi/provider.hpp
98.2% 56/57 7/8 source/lib/rocprof-sys/library/rocprofiler-sdk/callback/ompt/decoder.hpp
98.3% 57/58 6/8 source/lib/rocprof-sys/library/components/pthread_mutex_gotcha.hpp
98.5% 129/131 18/19 source/lib/rocprof-sys/library/rocprofiler-sdk/callback/roctx/core_api.hpp
98.5% 67/68 9/9 source/bin/common/cli_dispatcher.cpp
98.5% 67/68 10/12 source/lib/common/string_utility.hpp
98.6% 68/69 5/5 source/bin/rocprof-sys-instrument/dynamic_dependency_listing.hpp
98.6% 68/69 5/5 source/lib/rocprof-sys/library/pmc/collectors/cpu/cache_policy.hpp
98.7% 76/77 3/3 source/lib/core/perfetto/packet_framing.hpp
98.8% 81/82 15/16 source/lib/backends/amd_smi/backend.hpp
99.1% 115/116 19/19 source/lib/core/control/session.cpp
100.0% 1/1 0/1 source/bin/common/cli_dispatcher.hpp
100.0% 32/32 4/5 source/bin/common/common_utils.hpp
100.0% 1/1 0/1 source/bin/common/json_config.hpp
100.0% 60/60 6/6 source/bin/rocprof-sys-avail/avail.hpp
100.0% 39/39 2/2 source/bin/rocprof-sys-avail/get_availability.hpp
100.0% 11/11 1/1 source/bin/rocprof-sys-avail/get_categories.hpp
100.0% 4/4 1/1 source/bin/rocprof-sys-avail/info_type.cpp
100.0% 9/9 0/1 source/bin/rocprof-sys-avail/info_type.hpp
100.0% 2/2 1/1 source/bin/rocprof-sys-run/rocprof-sys-run.cpp
100.0% 2/2 1/1 source/bin/rocprof-sys-sample/rocprof-sys-sample.cpp
100.0% 110/110 13/14 source/lib/backends/amd_smi/device.hpp
100.0% 7/7 0/1 source/lib/backends/amd_smi/gpu_types.hpp
100.0% 32/32 2/3 source/lib/backends/hipfile/backend.hpp
100.0% 1/1 0/1 source/lib/backends/rocprofiler_sdk/types.hpp
100.0% 9/9 0/1 source/lib/binary/address_multirange.hpp
100.0% 7/7 1/1 source/lib/binary/binary_info.hpp
100.0% 1/1 0/1 source/lib/binary/dwarf_entry.hpp
100.0% 3/3 0/1 source/lib/binary/link_map.hpp
100.0% 6/6 1/2 source/lib/binary/scope_filter.hpp
100.0% 8/8 7/8 source/lib/binary/symbol.hpp
100.0% 10/10 2/2 source/lib/common/env_vars.hpp
100.0% 12/12 1/1 source/lib/common/join.hpp
100.0% 24/24 5/6 source/lib/common/synchronized.hpp
100.0% 14/14 3/5 source/lib/common/units/data_size.hpp
100.0% 11/11 2/3 source/lib/common/units/frequency.hpp
100.0% 11/11 2/3 source/lib/common/units/power.hpp
100.0% 5/5 0/3 source/lib/common/units/quantity.hpp
100.0% 8/8 0/2 source/lib/common/version.hpp
100.0% 158/158 1/1 source/lib/core/agent_info.hpp
100.0% 2/2 1/2 source/lib/core/agent_manager.hpp
100.0% 5/5 0/2 source/lib/core/argparse.hpp
100.0% 9/9 1/3 source/lib/core/binary/address_range.hpp
100.0% 21/21 6/6 source/lib/core/categories.cpp
100.0% 11/11 11/11 source/lib/core/components/fwd.hpp
100.0% 55/55 6/7 source/lib/core/config/trace_period_config.hpp
100.0% 26/26 1/3 source/lib/core/containers/c_array.hpp
100.0% 22/22 0/2 source/lib/core/containers/operators.hpp
100.0% 87/87 20/23 source/lib/core/containers/stable_vector.hpp
100.0% 44/44 3/6 source/lib/core/containers/static_vector.hpp
100.0% 19/19 4/4 source/lib/core/control/clocks/steady.cpp
100.0% 2/2 2/2 source/lib/core/control/clocks/steady.hpp
100.0% 15/15 3/5 source/lib/core/control/session.hpp
100.0% 3/3 0/2 source/lib/core/control/triggers/roctx.hpp
100.0% 47/47 7/7 source/lib/core/control/triggers/time_window.hpp
100.0% 45/45 7/11 source/lib/core/demangler.hpp
100.0% 2/2 2/2 source/lib/core/node_info.hpp
100.0% 3/3 1/2 source/lib/core/output/output_summary.hpp
100.0% 1/1 0/1 source/lib/core/perfetto/category_registry.hpp
100.0% 1/1 0/1 source/lib/core/perfetto/engine.hpp
100.0% 7/7 0/1 source/lib/core/perfetto/sinks/file_output.hpp
100.0% 1/1 0/1 source/lib/core/perfetto/sinks/per_pid_file_sink.hpp
100.0% 2/2 0/1 source/lib/core/perfetto/sinks/single_file_sink.hpp
100.0% 2/2 0/1 source/lib/core/perfetto/sinks/trace_sink.hpp
100.0% 1/1 0/1 source/lib/core/progress/bar.hpp
100.0% 7/7 2/2 source/lib/core/progress/tracker.cpp
100.0% 1/1 0/1 source/lib/core/progress/tracker.hpp
100.0% 85/85 11/12 source/lib/core/state.hpp
100.0% 7/7 1/2 source/lib/core/trace_cache/cache_manager.hpp
100.0% 4/4 0/3 source/lib/core/trace_cache/data_types.hpp
100.0% 1/1 1/1 source/lib/core/trace_cache/perfetto_processor.hpp
100.0% 2/2 0/1 source/lib/core/trace_cache/sample_processor_interface.hpp
100.0% 9/9 3/3 source/lib/core/trace_cache/type_registry.hpp
100.0% 5/5 2/2 source/lib/core/track_registry.cpp
100.0% 4/4 0/2 source/lib/core/track_registry.hpp
100.0% 12/12 1/1 source/lib/logger/logger.cpp
100.0% 8/8 0/1 source/lib/rocprof-sys/library/causal/components/backtrace.hpp
100.0% 23/23 2/3 source/lib/rocprof-sys/library/causal/components/progress_point.hpp
100.0% 3/3 0/1 source/lib/rocprof-sys/library/causal/experiment.hpp
100.0% 4/4 1/1 source/lib/rocprof-sys/library/causal/selected_entry.cpp
100.0% 5/5 2/3 source/lib/rocprof-sys/library/causal/selected_entry.hpp
100.0% 1/1 0/1 source/lib/rocprof-sys/library/components/backtrace.hpp
100.0% 11/11 1/2 source/lib/rocprof-sys/library/components/backtrace_metrics.hpp
100.0% 4/4 0/2 source/lib/rocprof-sys/library/components/backtrace_timestamp.hpp
100.0% 1/1 0/1 source/lib/rocprof-sys/library/components/callchain.hpp
100.0% 8/8 2/2 source/lib/rocprof-sys/library/components/ensure_storage.hpp
100.0% 1/1 0/1 source/lib/rocprof-sys/library/components/fork_gotcha.hpp
100.0% 2/2 0/1 source/lib/rocprof-sys/library/components/mpi_gotcha.hpp
100.0% 533/533 12/12 source/lib/rocprof-sys/library/components/mpip.hpp
100.0% 5/5 0/1 source/lib/rocprof-sys/library/components/pthread_create_gotcha.hpp
100.0% 24/24 1/2 source/lib/rocprof-sys/library/components/pthread_mutex_gotcha_policy.hpp
100.0% 11/11 0/3 source/lib/rocprof-sys/library/perf.hpp
100.0% 14/14 0/1 source/lib/rocprof-sys/library/pmc/collectors/common/collector_slice.hpp
100.0% 3/3 0/2 source/lib/rocprof-sys/library/pmc/collectors/cpu/types.hpp
100.0% 9/9 0/2 source/lib/rocprof-sys/library/pmc/collectors/gpu/types.hpp
100.0% 55/55 4/4 source/lib/rocprof-sys/library/pmc/collectors/hipfile/device.hpp
100.0% 36/36 2/3 source/lib/rocprof-sys/library/pmc/collectors/hipfile/hipfile_traits.hpp
100.0% 20/20 2/3 source/lib/rocprof-sys/library/pmc/collectors/hipfile/sample.hpp
100.0% 3/3 0/3 source/lib/rocprof-sys/library/pmc/common/types.hpp
100.0% 15/15 2/3 source/lib/rocprof-sys/library/process_sampler.hpp
100.0% 43/43 2/2 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/kernel_dispatch.hpp
100.0% 39/39 1/2 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/memory_copy.hpp
100.0% 9/9 1/1 source/lib/rocprof-sys/library/rocprofiler-sdk/callback/code_object.hpp
100.0% 17/17 2/2 source/lib/rocprof-sys/library/rocprofiler-sdk/callback/rccl/device_resolver.hpp
100.0% 48/48 4/4 source/lib/rocprof-sys/library/rocprofiler-sdk/callback/rccl/rccl.hpp
100.0% 10/10 0/1 source/lib/rocprof-sys/library/rocprofiler-sdk/callback/roctx/control_api.hpp
100.0% 2/2 0/1 source/lib/rocprof-sys/library/runtime.hpp
100.0% 10/10 3/3 source/lib/rocprof-sys/library/thread_data_growth.hpp
100.0% 5/5 1/1 source/lib/rocprof-sys/library/thread_deleter.hpp

Distribution

Range Files
0-20% 30
20-50% 19
50-80% 59
80-100% 213

@anujshuk-amd
anujshuk-amd marked this pull request as ready for review October 19, 2026 12:29
@anujshuk-amd
anujshuk-amd requested review from a team and jrmadsen as code owners October 19, 2026 12:29
Copilot AI balanced review requested due to automatic review settings October 19, 2026 12:29

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

The narrow exception-handling change and targeted regression tests address the reported failures without identified blocking issues.

No open issues 🎉

What changed in this PR

Makes rocprof-sys-instrument exit cleanly on invalid input instead of aborting on uncaught exceptions.

Changes:

  • Moves instrumentation logic behind a top-level exception handler that reports errors and returns EXIT_FAILURE.
  • Adds regression tests for non-ELF files, missing targets, and reinstrumentation, including checking that the original instrumented binary remains runnable.
File Description
projects/​rocprofiler-systems/​tests/​pytest/​test_binaries.py Tests clean failure behavior and preservation of the instrumented binary.
projects/​rocprofiler-systems/​source/​bin/​rocprof-sys-instrument/​rocprof-sys-instrument.cpp Catches standard exceptions at the program entry point.

Review effort: Balanced

@lloginov-amd lloginov-amd left a comment •

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not introduced by this PR, but related.

Since errprintf() prints a message and then throws with the same message, we see the message twice. And in several cases, the message does not end with newline, so the two messages merge together, which is not good. This happens because in 'rocprof-sys-instrument.hpp', the three usages of errprintf() do not have a newline at the end of the message.

To fix this, could you please add the newlines to all usages of errprintf() (there are three of them) it in header 'rocprof-sys-instrument.hpp' (not in the PR currently)? It would be "binary files" -> "binary files\n" in two calls, and "No command provided" -> "No command provided\n" in the third?

Other than this, LGTM, approving.

@lloginov-amd lloginov-amd changed the title fix(rocprofiler-systems): exit cleanly instead of SIGABRT on invalid … fix(rocprofiler-systems): exit cleanly instead of SIGABRT on invalid input Oct 19, 2026
@anujshuk-amd

Copy link
Copy Markdown
Contributor Author

Not introduced by this PR, but related.

Since errprintf() prints a message and then throws with the same message, we see the message twice. And in several cases, the message does not end with newline, so the two messages merge together, which is not good. This happens because in 'rocprof-sys-instrument.hpp', the three usages of errprintf() do not have a newline at the end of the message.

To fix this, could you please add the newlines to all usages of errprintf() (there are three of them) it in header 'rocprof-sys-instrument.hpp' (not in the PR currently)? It would be "binary files" -> "binary files\n" in two calls, and "No command provided" -> "No command provided\n" in the third?

Other than this, LGTM, approving.

Thanks for quick review. Adressed the comments.

@sputhala-amd sputhala-amd left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please make a changelog entry in the resolved issue for this change.
Other comments are only nitpicks.

@anujshuk-amd
anujshuk-amd requested a review from a team as a code owner October 21, 2026 09:36

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants