Skip to content

refactor(rocprofiler-systems): Remove tim::exists() and path::exists() - #9996

Merged
dgaliffiAMD merged 5 commits into
developfrom
users/lloginov-amd/tim-rem-exists
Aug 14, 2026
Merged

dgaliffiAMD merged 5 commits into
developfrom
users/lloginov-amd/tim-rem-exists

Conversation

@lloginov-amd

@lloginov-amd lloginov-amd commented Aug 11, 2026 •

Copy link
Copy Markdown
Contributor

Motivation

This PR is part of a PR series to remove the dependency on Timemory filepath utilities.

Previously, tim::filepath::exists and the in-tree common::path::exists were both single functions trying to answer three different questions depending on the caller — "is this a regular file?", "is this a directory?", or "does anything at all exist here?" — with two incompatible implementations (stat-based, following symlinks vs. lstat-based, not following symlinks). Apart from being confusing, it also hid latent bugs where a character device (/dev/kfd, /dev/dri/renderD128 — real entries in a GPU process's /proc//maps) could be treated as real binary files.

Technical Details

This PR removes the in-tree common::path::exists and all usages of tim::filepath::exists and introduces the in-tree path::common::is_regular_file function in path.hpp, based upon non-throwing version of std::filesystem::is_regular_file().

Every call site of previous exists() was individually classified as file-intent or directory-intent and routed to the matching predicate: the new common::path::is_regular_file() or already existing in-tree common::path::is_directory().

In source/lib/common/environment.hpp, added missing #include that was previously included transitively.

In rocprof-sys-instrument.hpp :: rocprofsys_het_is_executable, two fixes made:

  • wrong if(_cmd.empty()) flipped to the correct if(!_cmd.empty()), enabling previously dead branch
  • std::string_view _cmd input parameter type changed to const std::string& _cmd to ensure null-termination, as it is later fed to verbprintf() and Dyninst::SymtabAPI::Symtab::openFile(), which require it.

Issue Tracking

JIRA ID: AIPROFSYST-528

Test Plan

  • Newly added ctest unit tests should pass
  • Existing ctest suite should pass
  • Own end-to-end verification: run rocprof-sys-run and rocprof-sys-instrument on the transpose HIP example; inspect the metadata JSON for device-node leakage; explicitly exercise the three bug-fix sites (LD_LIBRARY_PATH, ROOT search paths, --generate-configs idempotency).

Test Result

  • New and existing ctest tests pass
  • rocprof-sys-run and rocprof-sys-instrument both complete successfully;
    instrumentation resolves the same 15 linked libraries with and without
    rocprofiler_systems_ROOT set.
  • Metadata JSON memory_maps_files (58 entries) contains zero
    /dev/kfd or /dev/dri/renderD128 entries
  • LD_LIBRARY_PATH bug fix: rocprof-sys-run -- env shows the dl library
    directory present in the child's LD_LIBRARY_PATH (previously absent).
  • ROOT search-path bug fix: --log -1 output shows the "rocprofiler-systems
    root path" log entry and ROOT-derived bin/lib search paths, both
    previously absent.
  • --generate-configs idempotency: run twice against the same output
    directory, causal-0.cfg is present and unchanged after both runs (the
    process aborts on an unrelated, pre-existing ROCPROFSYS_LAUNCHER
    settings error in both runs, confirming this is not introduced by the
    predicate swap).

Submission Checklist

@github-actions

github-actions Bot commented Aug 11, 2026 •

Copy link
Copy Markdown
Contributor

rocprofiler-systems CI Summary

Test Results (for commit c478122)

Workflow jobs covered: 36

Workflow Runs Avg Test Time Tests Skipped Failed
Ubuntu 22.04 5 26m 14s 2,495 83 0
Ubuntu 24.04 5 27m 52s 2,475 83 0
Debian 4 33m 01s 2,076 57 0
RHEL 12 30m 58s 5,988 230 0
System deps 10 28m 39s 5,150 168 0
Total 36 29m 28s 18,184 621 0

Failed Tests

No failed tests reported.

Sanitizers

Thread Undefined Address
Passed Passed Passed

@therock-pr-bot

therock-pr-bot Bot commented Aug 11, 2026 •

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?

@therock-pr-bot

Copy link
Copy Markdown

🚫 Please fix the failed policies before requesting reviews.

The following policy checks failed:

  • ❌ PR Description

The Not ready to Review label has been added to this PR.
Once all policies pass, the label will be removed automatically.

@lloginov-amd
lloginov-amd force-pushed the users/lloginov-amd/tim-rem-exists branch from 6430a0a to 86e22a2 Compare August 12, 2026 08:21
@github-actions

github-actions Bot commented Aug 12, 2026 •

Copy link
Copy Markdown
Contributor

Code Coverage Report

Code Coverage Report

Unit Tests

Code Coverage: unit-tests

Lines: 🔴 18.5% — 6,582/35,518 across 318 files
Functions: 🔴 18.9% — 688/3,640

🔴 0-20% (203 files)
Lines Functions File
0.0% 0/10 0/2 build/coverage/_deps/nlohmann_json-src/include/nlohmann/byte_container_with_subtype.hpp
0.0% 0/1 0/1 build/coverage/_deps/spdlog-src/include/spdlog/details/log_msg_buffer.h
0.0% 0/1 0/1 build/coverage/_deps/spdlog-src/include/spdlog/sinks/ansicolor_sink.h
0.0% 0/2 0/1 build/coverage/include/profiler-hub/shared_types.hpp
0.0% 0/105 0/9 source/bin/common/argument_registration.hpp
0.0% 0/254 0/28 source/bin/common/tool_runner.cpp
0.0% 0/941 0/48 source/bin/rocprof-sys-avail/avail.cpp
0.0% 0/61 0/6 source/bin/rocprof-sys-avail/avail.hpp
0.0% 0/227 0/25 source/bin/rocprof-sys-avail/common.cpp
0.0% 0/17 0/3 source/bin/rocprof-sys-avail/component_categories.hpp
0.0% 0/258 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/10 0/1 source/bin/rocprof-sys-avail/get_categories.hpp
0.0% 0/102 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/440 0/47 source/bin/rocprof-sys-causal/impl.cpp
0.0% 0/80 0/2 source/bin/rocprof-sys-causal/rocprof-sys-causal.cpp
0.0% 0/673 0/46 source/bin/rocprof-sys-instrument/details.cpp
0.0% 0/91 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/158 0/7 source/bin/rocprof-sys-instrument/info.hpp
0.0% 0/264 0/22 source/bin/rocprof-sys-instrument/internal_libs.cpp
0.0% 0/63 0/6 source/bin/rocprof-sys-instrument/log.cpp
0.0% 0/5 0/1 source/bin/rocprof-sys-instrument/log.hpp
0.0% 0/523 0/40 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/1537 0/87 source/bin/rocprof-sys-instrument/rocprof-sys-instrument.cpp
0.0% 0/157 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/24 0/1 source/lib/backends/amd_smi/wrapper.hpp
0.0% 0/15 0/1 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/117 0/5 source/lib/binary/analysis.cpp
0.0% 0/7 0/1 source/lib/binary/binary_info.hpp
0.0% 0/102 0/9 source/lib/binary/dwarf_entry.cpp
0.0% 0/1 0/1 source/lib/binary/dwarf_entry.hpp
0.0% 0/69 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/5 0/2 source/lib/binary/scope_filter.hpp
0.0% 0/158 0/18 source/lib/binary/symbol.cpp
0.0% 0/8 0/8 source/lib/binary/symbol.hpp
0.0% 0/9 0/2 source/lib/common/env_vars.hpp
0.0% 0/40 0/3 source/lib/common/invoke.hpp
0.0% 0/150 0/10 source/lib/common/md5sum.hpp
0.0% 0/22 0/2 source/lib/common/setup.hpp
0.0% 0/10 0/3 source/lib/common/synchronized.hpp
0.0% 0/3 0/1 source/lib/common/units.hpp
0.0% 0/166 0/2 source/lib/core/agent_info.hpp
0.0% 0/33 0/3 source/lib/core/amd_smi.cpp
0.0% 0/80 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/49 0/10 source/lib/core/categories.cpp
0.0% 0/11 0/11 source/lib/core/components/fwd.hpp
0.0% 0/26 0/3 source/lib/core/config.hpp
0.0% 0/14 0/2 source/lib/core/containers/aligned_static_vector.hpp
0.0% 0/11 0/3 source/lib/core/containers/c_array.hpp
0.0% 0/1 0/1 source/lib/core/containers/operators.hpp
0.0% 0/46 0/12 source/lib/core/containers/stable_vector.hpp
0.0% 0/23 0/5 source/lib/core/containers/static_vector.hpp
0.0% 0/89 0/6 source/lib/core/cpu.cpp
0.0% 0/1 0/1 source/lib/core/cpu.hpp
0.0% 0/53 0/6 source/lib/core/dynamic_library.cpp
0.0% 0/28 0/7 source/lib/core/exception.cpp
0.0% 0/178 0/23 source/lib/core/gpu.cpp
0.0% 0/160 0/12 source/lib/core/gpu_metrics.cpp
0.0% 0/32 0/6 source/lib/core/mpi.hpp
0.0% 0/56 0/4 source/lib/core/mproc.cpp
0.0% 0/24 0/2 source/lib/core/node_info.cpp
0.0% 0/2 0/2 source/lib/core/node_info.hpp
0.0% 0/79 0/5 source/lib/core/perf.cpp
0.0% 0/56 0/6 source/lib/core/perfetto.hpp
0.0% 0/51 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/29 0/7 source/lib/core/perfetto/emitter.cpp
0.0% 0/48 0/9 source/lib/core/perfetto/emitter.hpp
0.0% 0/7 0/1 source/lib/core/perfetto/sinks/append_mode.hpp
0.0% 0/13 0/3 source/lib/core/perfetto/sinks/tee_sink.cpp
0.0% 0/1 0/1 source/lib/core/perfetto/sinks/tee_sink.hpp
0.0% 0/1 0/1 source/lib/core/progress/bar.hpp
0.0% 0/341 0/22 source/lib/core/rocprofiler-sdk.cpp
0.0% 0/54 0/3 source/lib/core/trace_cache/cache_manager.cpp
0.0% 0/7 0/3 source/lib/core/trace_cache/cache_manager.hpp
0.0% 0/516 0/71 source/lib/core/trace_cache/metadata_registry.cpp
0.0% 0/763 0/103 source/lib/core/trace_cache/perfetto_processor.cpp
0.0% 0/119 0/12 source/lib/core/trace_cache/post_processor.cpp
0.0% 0/749 0/31 source/lib/core/trace_cache/rocpd_processor.cpp
0.0% 0/77 0/1 source/lib/core/trace_cache/sample_processor.hpp
0.0% 0/547 0/90 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/79 0/13 source/lib/rocprof-sys-user/user.cpp
0.0% 0/70 0/18 source/lib/rocprof-sys/api.cpp
0.0% 0/620 0/36 source/lib/rocprof-sys/library.cpp
0.0% 0/77 0/6 source/lib/rocprof-sys/library/causal/components/backtrace.cpp
0.0% 0/7 0/2 source/lib/rocprof-sys/library/causal/components/backtrace.hpp
0.0% 0/93 0/11 source/lib/rocprof-sys/library/causal/components/blocking_gotcha.cpp
0.0% 0/33 0/7 source/lib/rocprof-sys/library/causal/components/causal_gotcha.cpp
0.0% 0/85 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/44 0/8 source/lib/rocprof-sys/library/causal/components/unblocking_gotcha.cpp
0.0% 0/553 0/33 source/lib/rocprof-sys/library/causal/data.cpp
0.0% 0/87 0/16 source/lib/rocprof-sys/library/causal/delay.cpp
0.0% 0/373 0/29 source/lib/rocprof-sys/library/causal/experiment.cpp
0.0% 0/3 0/2 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/268 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/71 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/218 0/30 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/71 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/367 0/30 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/28 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/68 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/158 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/78 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/336 0/20 source/lib/rocprof-sys/library/components/pthread_create_gotcha.cpp
0.0% 0/3 0/1 source/lib/rocprof-sys/library/components/pthread_create_gotcha.hpp
0.0% 0/34 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/164 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/145 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/60 0/16 source/lib/rocprof-sys/library/coverage/impl.hpp
0.0% 0/252 0/37 source/lib/rocprof-sys/library/kokkosp.cpp
0.0% 0/245 0/31 source/lib/rocprof-sys/library/perf.cpp
0.0% 0/11 0/3 source/lib/rocprof-sys/library/perf.hpp
0.0% 0/186 0/12 source/lib/rocprof-sys/library/pmc/collectors/common/settings.hpp
0.0% 0/66 0/5 source/lib/rocprof-sys/library/pmc/collectors/cpu/cache_policy.hpp
0.0% 0/47 0/6 source/lib/rocprof-sys/library/pmc/collectors/cpu/cpu_traits.hpp
0.0% 0/52 0/9 source/lib/rocprof-sys/library/pmc/collectors/cpu/perfetto_policy.hpp
0.0% 0/100 0/6 source/lib/rocprof-sys/library/pmc/collectors/gpu/cache_policy.hpp
0.0% 0/222 0/36 source/lib/rocprof-sys/library/pmc/collectors/gpu/perfetto_policy.hpp
0.0% 0/25 0/3 source/lib/rocprof-sys/library/pmc/collectors/gpu/sample.hpp
0.0% 0/32 0/3 source/lib/rocprof-sys/library/pmc/collectors/gpu_perf_counter/cache_policy.hpp
0.0% 0/39 0/7 source/lib/rocprof-sys/library/pmc/collectors/gpu_perf_counter/perfetto_policy.hpp
0.0% 0/16 0/2 source/lib/rocprof-sys/library/pmc/collectors/nic/sample.hpp
0.0% 0/14 0/2 source/lib/rocprof-sys/library/pmc/device_providers/procfs/provider.hpp
0.0% 0/148 0/18 source/lib/rocprof-sys/library/pmc/sampler.cpp
0.0% 0/113 0/11 source/lib/rocprof-sys/library/process_sampler.cpp
0.0% 0/13 0/1 source/lib/rocprof-sys/library/process_sampler.hpp
0.0% 0/2 0/1 source/lib/rocprof-sys/library/rocm.cpp
0.0% 0/1312 0/88 source/lib/rocprof-sys/library/rocprofiler-sdk.cpp
0.0% 0/111 0/13 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/129 0/9 source/lib/rocprof-sys/library/rocprofiler-sdk/fwd.cpp
0.0% 0/34 0/7 source/lib/rocprof-sys/library/rocprofiler-sdk/fwd.hpp
0.0% 0/265 0/25 source/lib/rocprof-sys/library/rocprofiler-sdk/kfd_events.cpp
0.0% 0/36 0/9 source/lib/rocprof-sys/library/rocprofiler-sdk/marker_writer.cpp
0.0% 0/136 0/13 source/lib/rocprof-sys/library/rocprofiler-sdk/rccl.cpp
0.0% 0/112 0/10 source/lib/rocprof-sys/library/rocprofiler-sdk/roctx_client.cpp
0.0% 0/118 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/994 0/65 source/lib/rocprof-sys/library/sampling.cpp
0.0% 0/145 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/10 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/161 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/113 0/11 source/lib/rocprof-sys/library/tracing.cpp
0.0% 0/109 0/30 source/lib/rocprof-sys/library/tracing.hpp
0.0% 0/3 0/1 source/lib/rocprof-sys/library/tracing/annotation.cpp
0.0% 0/45 0/4 source/lib/rocprof-sys/library/tracing/annotation.hpp
0.0% 0/8 0/2 source/lib/rocprof-sys/progress.cpp
0.0% 0/68 0/14 source/lib/rocprof-sys/regions.cpp
0.0% 0/82 0/4 source/lib/rocprof-sys/timeout.cpp
0.0% 0/454 0/46 source/python/libpyrocprofsys.cpp
0.6% 1/166 1/13 source/lib/core/perfetto.cpp
0.8% 7/859 1/74 source/lib/core/argparse.cpp
2.5% 42/1710 7/290 source/lib/core/config.cpp
7.1% 1/14 0/1 build/coverage/_deps/nlohmann_json-src/include/nlohmann/detail/iterators/primitive_iterator.hpp
8.4% 15/178 3/25 source/lib/core/constraint.cpp
15.4% 4/26 0/6 source/lib/core/trace_cache/metadata_registry.hpp
18.2% 4/22 1/3 source/lib/common/static_object.hpp
18.8% 9/48 2/5 source/lib/core/output_file_registry.cpp
19.4% 6/31 2/5 source/bin/common/common_utils.hpp
🟠 20-50% (11 files)
Lines Functions File
20.0% 1/5 0/2 source/lib/core/argparse.hpp
21.3% 13/61 3/9 source/lib/core/utility.hpp
22.2% 2/9 0/6 source/lib/core/constraint.hpp
23.8% 15/63 3/12 source/lib/core/agent_manager.cpp
30.0% 127/423 12/46 build/coverage/_deps/fmt-src/include/fmt/format.h
32.1% 52/162 7/17 build/coverage/_deps/nlohmann_json-src/include/nlohmann/detail/input/json_sax.hpp
38.2% 13/34 1/4 source/lib/core/perfetto/sinks/io_helpers.hpp
40.3% 195/484 14/17 build/coverage/_deps/nlohmann_json-src/include/nlohmann/detail/input/lexer.hpp
40.5% 17/42 5/12 build/coverage/_deps/nlohmann_json-src/include/nlohmann/detail/exceptions.hpp
47.2% 221/468 17/38 build/coverage/_deps/fmt-src/include/fmt/base.h
49.6% 127/256 14/32 source/lib/rocprof-sys/library/components/category_region.hpp
🟡 50-80% (32 files)
Lines Functions File
50.0% 153/306 9/11 build/coverage/_deps/nlohmann_json-src/include/nlohmann/detail/output/serializer.hpp
50.0% 1/2 0/1 source/lib/rocprof-sys/library/pmc/collectors/nic/types.hpp
52.0% 13/25 2/3 source/lib/rocprof-sys/library/pmc/collectors/gpu_perf_counter/gpu_perf_counter_traits.hpp
52.9% 219/414 25/37 source/bin/common/common_utils.cpp
53.3% 8/15 3/3 source/lib/core/perfetto/sinks/per_pid_file_sink.cpp
55.0% 22/40 4/6 build/coverage/_deps/fmt-src/include/fmt/ranges.h
55.6% 5/9 1/3 build/coverage/_deps/fmt-src/include/fmt/chrono.h
55.7% 34/61 5/8 source/lib/rocprof-sys/library/pmc/collectors/cpu/sample.hpp
58.3% 14/24 3/8 build/coverage/_deps/nlohmann_json-src/include/nlohmann/detail/output/output_adapters.hpp
58.3% 7/12 0/4 build/coverage/_deps/spdlog-src/include/spdlog/common.h
60.0% 3/5 1/1 source/lib/core/agent.hpp
62.1% 18/29 1/1 source/lib/core/perfetto/locked_file_append.cpp
62.1% 41/66 7/8 source/lib/rocprof-sys/library/pmc/collectors/base/collector.hpp
62.3% 48/77 4/5 source/lib/core/trace_cache/discovery.cpp
63.1% 70/111 7/10 source/lib/core/progress/bar.cpp
63.4% 272/429 33/40 build/coverage/_deps/nlohmann_json-src/include/nlohmann/json.hpp
64.1% 336/524 26/40 source/bin/common/json_config.cpp
65.4% 34/52 4/4 build/coverage/_deps/nlohmann_json-src/include/nlohmann/detail/conversions/from_json.hpp
66.2% 47/71 5/5 source/lib/rocprof-sys/library/pmc/collectors/gpu/gpu_traits.hpp
66.4% 87/131 4/5 build/coverage/_deps/nlohmann_json-src/include/nlohmann/detail/input/parser.hpp
66.7% 2/3 0/2 source/lib/rocprof-sys/library/pmc/collectors/cpu/types.hpp
67.2% 43/64 11/14 source/lib/core/trace_cache/data_types.cpp
68.8% 22/32 3/8 source/lib/rocprof-sys/library/pmc/collectors/gpu_perf_counter/types.hpp
71.1% 69/97 8/8 build/coverage/_deps/nlohmann_json-src/include/nlohmann/detail/iterators/iter_impl.hpp
71.6% 212/296 14/16 source/bin/common/preset_registry.cpp
72.3% 86/119 14/17 source/lib/core/perfetto/engine.cpp
73.7% 28/38 6/7 build/coverage/_deps/nlohmann_json-src/include/nlohmann/detail/iterators/iteration_proxy.hpp
75.0% 3/4 0/1 source/lib/backends/amd_smi/nic_types.hpp
75.0% 3/4 1/2 source/lib/core/perfetto/sinks/single_file_sink.hpp
76.5% 78/102 4/4 source/lib/core/perfetto/sinks/single_file_sink.cpp
77.8% 77/99 10/11 source/lib/core/perfetto/engine_impl.hpp
79.3% 88/111 13/15 source/lib/common/path.hpp
🟢 80-100% (72 files)
Lines Functions File
80.0% 8/10 1/2 build/coverage/include/profiler-hub/writer_types.hpp
80.5% 62/77 9/10 source/lib/rocprof-sys/library/pmc/device_providers/rocprofiler_sdk/provider.hpp
81.2% 39/48 3/4 source/lib/core/utility.cpp
82.8% 48/58 6/7 build/coverage/_deps/nlohmann_json-src/include/nlohmann/detail/conversions/to_json.hpp
83.9% 135/161 12/16 source/lib/backends/procfs/backend.hpp
84.6% 11/13 2/4 source/lib/rocprof-sys/library/rocprofiler-sdk/roctx_client.hpp
85.0% 85/100 11/15 source/lib/logger/logger.hpp
85.1% 40/47 2/2 source/lib/core/trace_cache/storage_parser.hpp
86.9% 213/245 15/16 build/coverage/_deps/nlohmann_json-src/include/nlohmann/detail/conversions/to_chars.hpp
88.1% 273/310 29/35 source/lib/common/environment.hpp
89.1% 49/55 4/4 source/lib/rocprof-sys/library/pmc/collectors/gpu_perf_counter/device.hpp
89.5% 34/38 5/8 build/coverage/_deps/nlohmann_json-src/include/nlohmann/detail/input/input_adapters.hpp
90.0% 54/60 4/4 source/lib/core/trace_cache/buffer_storage.cpp
90.1% 100/111 8/8 source/lib/rocprof-sys/library/pmc/collectors/cpu/device.hpp
90.7% 303/334 28/31 source/lib/core/trace_cache/sample_type.hpp
90.9% 10/11 1/2 build/coverage/_deps/nlohmann_json-src/include/nlohmann/detail/json_ref.hpp
91.0% 243/267 19/20 source/lib/core/trace_cache/unified_memory_processor.cpp
91.3% 178/195 14/18 source/lib/rocprof-sys/library/components/shmem_gotcha.hpp
91.7% 11/12 2/2 source/lib/core/perfetto/session_backend.hpp
92.6% 163/176 9/9 source/lib/rocprof-sys/library/pmc/collectors/gpu/device.hpp
92.7% 38/41 6/11 source/lib/core/demangler.hpp
92.9% 13/14 0/1 source/lib/rocprof-sys/library/pmc/collectors/common/collector_slice.hpp
93.2% 68/73 7/8 source/lib/core/trace_cache/buffer_storage.hpp
94.7% 36/38 7/7 build/coverage/_deps/spdlog-src/include/spdlog/logger.h
94.7% 54/57 6/8 source/lib/rocprof-sys/library/components/pthread_mutex_gotcha.hpp
94.8% 55/58 1/5 source/lib/core/trace_cache/cacheable.hpp
94.8% 92/97 9/10 source/lib/rocprof-sys/library/rocprofiler-sdk/trace_control.cpp
95.0% 19/20 4/6 build/coverage/_deps/nlohmann_json-src/include/nlohmann/detail/string_concat.hpp
95.8% 23/24 2/4 source/lib/common/pci_bdf.hpp
95.9% 162/169 19/22 source/lib/rocprof-sys/library/components/ucx_gotcha.hpp
96.2% 25/26 1/2 source/lib/common/delimit.hpp
96.3% 79/82 11/12 source/lib/core/state.hpp
96.8% 30/31 3/4 source/lib/rocprof-sys/library/pmc/collectors/gpu_perf_counter/sample.hpp
97.3% 73/75 6/6 source/lib/core/common_types.hpp
97.3% 73/75 3/3 source/lib/core/perfetto/packet_framing.hpp
97.5% 39/40 6/7 source/lib/core/trace_cache/rocpd_helpers.hpp
97.8% 45/46 7/7 source/lib/rocprof-sys/library/rocprofiler-sdk/rccl_internal.hpp
97.9% 47/48 3/3 source/lib/rocprof-sys/library/pmc/collectors/nic/device.hpp
98.1% 51/52 7/7 source/lib/rocprof-sys/library/pmc/device_providers/amd_smi/provider.hpp
98.7% 78/79 15/16 source/lib/backends/amd_smi/backend.hpp
99.1% 110/111 25/26 source/lib/backends/rocprofiler_sdk/backend.hpp
100.0% 14/14 1/1 build/coverage/_deps/fmt-src/include/fmt/ostream.h
100.0% 6/6 0/3 build/coverage/_deps/nlohmann_json-src/include/nlohmann/adl_serializer.hpp
100.0% 2/2 0/1 build/coverage/_deps/nlohmann_json-src/include/nlohmann/detail/input/position_t.hpp
100.0% 2/2 0/1 build/coverage/_deps/spdlog-src/include/spdlog/details/backtracer.h
100.0% 2/2 0/1 build/coverage/_deps/spdlog-src/include/spdlog/details/circular_q.h
100.0% 1/1 0/1 build/coverage/include/profiler-hub/reader_types.hpp
100.0% 1/1 0/1 source/bin/common/json_config.hpp
100.0% 107/107 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% 1/1 0/1 source/lib/backends/rocprofiler_sdk/types.hpp
100.0% 12/12 1/1 source/lib/common/join.hpp
100.0% 2/2 0/2 source/lib/core/agent_manager.hpp
100.0% 1/1 0/1 source/lib/core/output_file_registry.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/locked_file_append.hpp
100.0% 9/9 2/3 source/lib/core/perfetto/sinks/polymorphic_sink_view.hpp
100.0% 6/6 2/2 source/lib/core/perfetto/sinks/recording_sink.cpp
100.0% 5/5 0/2 source/lib/core/perfetto/sinks/recording_sink.hpp
100.0% 6/6 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% 9/9 3/3 source/lib/core/trace_cache/type_registry.hpp
100.0% 24/24 4/5 source/lib/core/trace_cache/unified_memory_processor.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% 10/10 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% 2/2 0/2 source/lib/rocprof-sys/library/pmc/common/types.hpp
100.0% 34/34 3/4 source/lib/rocprof-sys/library/rocprofiler-sdk/marker_writer.hpp
100.0% 3/3 1/2 source/lib/rocprof-sys/library/rocprofiler-sdk/trace_control.hpp

Distribution

Range Files
0-20% 203
20-50% 11
50-80% 32
80-100% 72

E2E Tests

Code Coverage: e2e-tests

Lines: 🟡 62.7% — 22,283/35,518 across 318 files
Functions: 🟡 63.3% — 2,303/3,640

🔴 0-20% (51 files)
Lines Functions File
0.0% 0/10 0/2 build/coverage/_deps/nlohmann_json-src/include/nlohmann/byte_container_with_subtype.hpp
0.0% 0/1 0/1 build/coverage/_deps/spdlog-src/include/spdlog/details/log_msg_buffer.h
0.0% 0/1 0/1 build/coverage/_deps/spdlog-src/include/spdlog/sinks/ansicolor_sink.h
0.0% 0/2 0/1 build/coverage/include/profiler-hub/shared_types.hpp
0.0% 0/102 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/15 0/1 source/lib/backends/rocprofiler_sdk/wrapper.hpp
0.0% 0/166 0/2 source/lib/core/agent_info.hpp
0.0% 0/89 0/6 source/lib/core/cpu.cpp
0.0% 0/1 0/1 source/lib/core/cpu.hpp
0.0% 0/53 0/6 source/lib/core/dynamic_library.cpp
0.0% 0/28 0/7 source/lib/core/exception.cpp
0.0% 0/160 0/12 source/lib/core/gpu_metrics.cpp
0.0% 0/79 0/5 source/lib/core/perf.cpp
0.0% 0/13 0/3 source/lib/core/perfetto/sinks/tee_sink.cpp
0.0% 0/1 0/1 source/lib/core/perfetto/sinks/tee_sink.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/164 0/31 source/lib/rocprof-sys/library/components/vaapi_gotcha.cpp
0.0% 0/52 0/9 source/lib/rocprof-sys/library/pmc/collectors/cpu/perfetto_policy.hpp
0.0% 0/100 0/6 source/lib/rocprof-sys/library/pmc/collectors/gpu/cache_policy.hpp
0.0% 0/222 0/36 source/lib/rocprof-sys/library/pmc/collectors/gpu/perfetto_policy.hpp
0.0% 0/25 0/3 source/lib/rocprof-sys/library/pmc/collectors/gpu/sample.hpp
0.0% 0/32 0/3 source/lib/rocprof-sys/library/pmc/collectors/gpu_perf_counter/cache_policy.hpp
0.0% 0/39 0/7 source/lib/rocprof-sys/library/pmc/collectors/gpu_perf_counter/perfetto_policy.hpp
0.0% 0/16 0/2 source/lib/rocprof-sys/library/pmc/collectors/nic/sample.hpp
0.0% 0/2 0/1 source/lib/rocprof-sys/library/rocm.cpp
0.0% 0/111 0/13 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/129 0/9 source/lib/rocprof-sys/library/rocprofiler-sdk/fwd.cpp
0.0% 0/34 0/7 source/lib/rocprof-sys/library/rocprofiler-sdk/fwd.hpp
0.0% 0/265 0/25 source/lib/rocprof-sys/library/rocprofiler-sdk/kfd_events.cpp
0.0% 0/136 0/13 source/lib/rocprof-sys/library/rocprofiler-sdk/rccl.cpp
0.0% 0/112 0/10 source/lib/rocprof-sys/library/rocprofiler-sdk/roctx_client.cpp
0.0% 0/3 0/1 source/lib/rocprof-sys/library/tracing/annotation.cpp
0.0% 0/45 0/4 source/lib/rocprof-sys/library/tracing/annotation.hpp
0.6% 1/166 1/13 source/lib/core/perfetto.cpp
2.5% 33/1312 3/88 source/lib/rocprof-sys/library/rocprofiler-sdk.cpp
6.1% 2/33 1/3 source/lib/core/amd_smi.cpp
7.1% 1/14 0/1 build/coverage/_deps/nlohmann_json-src/include/nlohmann/detail/iterators/primitive_iterator.hpp
7.1% 4/56 1/6 source/lib/core/perfetto.hpp
8.3% 3/36 1/9 source/lib/rocprof-sys/library/rocprofiler-sdk/marker_writer.cpp
11.3% 8/71 4/10 source/lib/rocprof-sys/library/components/callchain.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
17.0% 127/749 6/31 source/lib/core/trace_cache/rocpd_processor.cpp
18.0% 32/178 6/23 source/lib/core/gpu.cpp
🟠 20-50% (26 files)
Lines Functions File
22.0% 75/341 8/22 source/lib/core/rocprofiler-sdk.cpp
22.5% 49/218 5/30 source/lib/rocprof-sys/library/components/backtrace_metrics.cpp
23.6% 122/516 24/71 source/lib/core/trace_cache/metadata_registry.cpp
26.5% 202/763 24/103 source/lib/core/trace_cache/perfetto_processor.cpp
27.8% 27/97 4/8 source/lib/rocprof-sys-rt/src/RTposix.c
30.0% 136/454 7/46 source/python/libpyrocprofsys.cpp
31.7% 59/186 6/12 source/lib/rocprof-sys/library/pmc/collectors/common/settings.hpp
32.1% 52/162 7/17 build/coverage/_deps/nlohmann_json-src/include/nlohmann/detail/input/json_sax.hpp
35.7% 10/28 3/6 source/lib/rocprof-sys/library/components/exit_gotcha.cpp
38.5% 5/13 2/3 source/lib/rocprof-sys/library/components/kill_gotcha.cpp
38.8% 31/80 1/2 source/bin/rocprof-sys-causal/rocprof-sys-causal.cpp
39.8% 37/93 5/11 source/lib/rocprof-sys/library/causal/components/blocking_gotcha.cpp
40.3% 195/484 14/17 build/coverage/_deps/nlohmann_json-src/include/nlohmann/detail/input/lexer.hpp
40.5% 17/42 5/12 build/coverage/_deps/nlohmann_json-src/include/nlohmann/detail/exceptions.hpp
41.3% 26/63 7/12 source/lib/core/agent_manager.cpp
43.8% 21/48 6/9 source/lib/core/perfetto/emitter.hpp
43.9% 36/82 2/4 source/lib/rocprof-sys/timeout.cpp
44.4% 4/9 1/3 source/lib/rocprof-sys/library/components/backtrace_timestamp.cpp
45.0% 27/60 6/16 source/lib/rocprof-sys/library/coverage/impl.hpp
45.6% 72/158 3/7 source/bin/rocprof-sys-instrument/info.hpp
46.2% 36/78 6/19 source/lib/rocprof-sys/library/components/numa_gotcha.cpp
47.7% 31/65 3/4 source/lib/rocprof-sys-rt/src/RTheap.c
47.7% 52/109 12/30 source/lib/rocprof-sys/library/tracing.hpp
48.3% 14/29 5/7 source/lib/core/perfetto/emitter.cpp
48.5% 178/367 16/30 source/lib/rocprof-sys/library/components/comm_data.cpp
49.4% 39/79 6/13 source/lib/rocprof-sys-user/user.cpp
🟡 50-80% (69 files)
Lines Functions File
50.0% 8/16 2/4 source/lib/binary/address_multirange.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.8% 128/252 25/37 source/lib/rocprof-sys/library/kokkosp.cpp
50.8% 215/423 24/46 build/coverage/_deps/fmt-src/include/fmt/format.h
52.0% 13/25 2/3 source/lib/rocprof-sys/library/pmc/collectors/gpu_perf_counter/gpu_perf_counter_traits.hpp
53.2% 41/77 0/1 source/lib/core/trace_cache/sample_processor.hpp
53.4% 79/148 12/18 source/lib/rocprof-sys/library/pmc/sampler.cpp
55.0% 22/40 4/6 build/coverage/_deps/fmt-src/include/fmt/ranges.h
55.6% 5/9 1/3 build/coverage/_deps/fmt-src/include/fmt/chrono.h
55.7% 39/70 13/18 source/lib/rocprof-sys/api.cpp
56.2% 172/306 9/11 build/coverage/_deps/nlohmann_json-src/include/nlohmann/detail/output/serializer.hpp
57.5% 23/40 1/3 source/lib/common/invoke.hpp
58.0% 142/245 20/31 source/lib/rocprof-sys/library/perf.cpp
58.3% 14/24 3/8 build/coverage/_deps/nlohmann_json-src/include/nlohmann/detail/output/output_adapters.hpp
58.3% 7/12 0/4 build/coverage/_deps/spdlog-src/include/spdlog/common.h
60.0% 63/105 5/9 source/bin/common/argument_registration.hpp
60.0% 3/5 1/1 source/lib/core/agent.hpp
61.5% 288/468 21/38 build/coverage/_deps/fmt-src/include/fmt/base.h
61.8% 42/68 5/8 source/lib/rocprof-sys/library/components/fork_gotcha.cpp
61.8% 614/994 51/65 source/lib/rocprof-sys/library/sampling.cpp
62.1% 18/29 1/1 source/lib/core/perfetto/locked_file_append.cpp
62.3% 48/77 4/5 source/lib/core/trace_cache/discovery.cpp
62.5% 50/80 13/18 source/lib/core/binary/address_range.cpp
63.1% 70/111 7/10 source/lib/core/progress/bar.cpp
64.7% 22/34 3/4 source/lib/core/perfetto/sinks/io_helpers.hpp
65.2% 116/178 17/25 source/lib/core/constraint.cpp
65.4% 34/52 4/4 build/coverage/_deps/nlohmann_json-src/include/nlohmann/detail/conversions/from_json.hpp
65.5% 281/429 33/40 build/coverage/_deps/nlohmann_json-src/include/nlohmann/json.hpp
66.1% 37/56 3/4 source/lib/core/mproc.cpp
66.2% 47/71 5/5 source/lib/rocprof-sys/library/pmc/collectors/gpu/gpu_traits.hpp
66.4% 87/131 4/5 build/coverage/_deps/nlohmann_json-src/include/nlohmann/detail/input/parser.hpp
66.9% 79/118 15/20 source/lib/rocprof-sys/library/runtime.cpp
67.1% 106/158 14/22 source/lib/rocprof-sys/library/components/mpi_gotcha.cpp
68.8% 22/32 3/8 source/lib/rocprof-sys/library/pmc/collectors/gpu_perf_counter/types.hpp
69.2% 18/26 2/6 source/lib/core/trace_cache/metadata_registry.hpp
69.2% 9/13 0/1 source/lib/rocprof-sys/library/process_sampler.hpp
69.7% 46/66 7/8 source/lib/rocprof-sys/library/pmc/collectors/base/collector.hpp
70.6% 24/34 5/9 source/lib/rocprof-sys/library/components/pthread_gotcha.cpp
71.1% 69/97 8/8 build/coverage/_deps/nlohmann_json-src/include/nlohmann/detail/iterators/iter_impl.hpp
71.4% 10/14 1/2 source/lib/core/containers/aligned_static_vector.hpp
71.8% 393/547 46/90 source/lib/rocprof-sys-dl/dl.cpp
72.7% 24/33 5/7 source/lib/rocprof-sys/library/causal/components/causal_gotcha.cpp
72.7% 32/44 5/8 source/lib/rocprof-sys/library/causal/components/unblocking_gotcha.cpp
73.7% 28/38 6/7 build/coverage/_deps/nlohmann_json-src/include/nlohmann/detail/iterators/iteration_proxy.hpp
74.0% 409/553 30/33 source/lib/rocprof-sys/library/causal/data.cpp
74.0% 219/296 15/16 source/bin/common/preset_registry.cpp
74.5% 35/47 4/6 source/lib/rocprof-sys/library/pmc/collectors/cpu/cpu_traits.hpp
74.5% 120/161 23/27 source/lib/rocprof-sys/library/thread_info.cpp
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.2% 394/524 30/40 source/bin/common/json_config.cpp
75.6% 90/119 11/12 source/lib/core/trace_cache/post_processor.cpp
75.9% 511/673 35/46 source/bin/rocprof-sys-instrument/details.cpp
76.2% 48/63 5/6 source/bin/rocprof-sys-instrument/log.cpp
76.3% 1172/1537 52/87 source/bin/rocprof-sys-instrument/rocprof-sys-instrument.cpp
76.8% 53/69 5/6 source/lib/binary/link_map.cpp
77.3% 17/22 3/3 source/lib/common/static_object.hpp
77.7% 482/620 27/36 source/lib/rocprof-sys/library.cpp
77.8% 7/9 4/6 source/lib/core/constraint.hpp
77.9% 113/145 26/31 source/lib/rocprof-sys/library/thread_data.hpp
78.0% 209/268 23/25 source/lib/rocprof-sys/library/causal/sampling.cpp
79.0% 327/414 35/37 source/bin/common/common_utils.cpp
79.1% 201/254 24/28 source/bin/common/tool_runner.cpp
79.2% 19/24 2/2 source/lib/core/node_info.cpp
79.9% 211/264 20/22 source/bin/rocprof-sys-instrument/internal_libs.cpp
🟢 80-100% (172 files)
Lines Functions File
80.0% 4/5 0/1 source/bin/rocprof-sys-instrument/log.hpp
80.5% 62/77 9/10 source/lib/rocprof-sys/library/pmc/device_providers/rocprofiler_sdk/provider.hpp
80.5% 1377/1710 264/290 source/lib/core/config.cpp
80.9% 55/68 12/14 source/lib/rocprof-sys/regions.cpp
81.2% 69/85 17/22 source/lib/rocprof-sys/library/causal/components/progress_point.cpp
81.2% 13/16 1/1 source/lib/rocprof-sys-dl/main.c
81.8% 81/99 11/11 source/lib/core/perfetto/engine_impl.hpp
81.8% 428/523 40/40 source/bin/rocprof-sys-instrument/module_function.cpp
82.4% 42/51 5/5 source/lib/core/perfetto/cached_perfetto_session.cpp
82.4% 187/227 22/25 source/bin/rocprof-sys-avail/common.cpp
83.3% 85/102 4/4 source/lib/core/perfetto/sinks/single_file_sink.cpp
84.2% 314/373 18/29 source/lib/rocprof-sys/library/causal/experiment.cpp
84.2% 16/19 3/5 source/lib/rocprof-sys/library/components/comm_data.hpp
84.3% 86/102 8/9 source/lib/binary/dwarf_entry.cpp
84.6% 11/13 2/4 source/lib/rocprof-sys/library/rocprofiler-sdk/roctx_client.hpp
84.8% 134/158 17/18 source/lib/binary/symbol.cpp
85.1% 74/87 14/16 source/lib/rocprof-sys/library/causal/delay.cpp
85.2% 52/61 8/9 source/lib/core/utility.hpp
85.8% 97/113 9/11 source/lib/rocprof-sys/library/process_sampler.cpp
86.0% 135/157 12/12 source/bin/rocprof-sys-instrument/rocprof-sys-instrument.hpp
86.0% 86/100 11/15 source/lib/logger/logger.hpp
86.0% 80/93 5/7 source/bin/rocprof-sys-instrument/module_function.hpp
86.3% 290/336 16/20 source/lib/rocprof-sys/library/components/pthread_create_gotcha.cpp
87.0% 20/23 4/5 source/lib/core/containers/static_vector.hpp
87.0% 47/54 3/3 source/lib/core/trace_cache/cache_manager.cpp
87.5% 42/48 4/5 source/lib/core/output_file_registry.cpp
87.6% 141/161 13/16 source/lib/backends/procfs/backend.hpp
87.6% 99/113 10/11 source/lib/rocprof-sys/library/tracing.cpp
88.4% 389/440 35/47 source/bin/rocprof-sys-causal/impl.cpp
89.0% 129/145 10/10 source/lib/rocprof-sys/library/coverage.cpp
89.0% 276/310 31/35 source/lib/common/environment.hpp
89.1% 49/55 4/4 source/lib/rocprof-sys/library/pmc/collectors/gpu_perf_counter/device.hpp
89.4% 768/859 59/74 source/lib/core/argparse.cpp
89.8% 220/245 15/16 build/coverage/_deps/nlohmann_json-src/include/nlohmann/detail/conversions/to_chars.hpp
90.0% 18/20 5/5 source/bin/rocprof-sys-instrument/function_signature.hpp
90.0% 9/10 1/1 source/lib/binary/scope_filter.cpp
90.0% 9/10 3/3 source/lib/common/synchronized.hpp
90.0% 54/60 4/4 source/lib/core/trace_cache/buffer_storage.cpp
90.0% 9/10 1/1 source/lib/rocprof-sys/library/thread_deleter.cpp
90.1% 64/71 9/11 source/lib/rocprof-sys/library/components/backtrace.cpp
90.6% 106/117 5/5 source/lib/binary/analysis.cpp
90.7% 234/258 11/12 source/bin/rocprof-sys-avail/generate_config.cpp
90.7% 303/334 28/31 source/lib/core/trace_cache/sample_type.hpp
90.9% 10/11 1/2 build/coverage/_deps/nlohmann_json-src/include/nlohmann/detail/json_ref.hpp
90.9% 20/22 2/2 source/lib/common/setup.hpp
91.0% 243/267 19/20 source/lib/core/trace_cache/unified_memory_processor.cpp
91.2% 83/91 6/7 source/bin/rocprof-sys-instrument/function_signature.cpp
91.3% 178/195 14/18 source/lib/rocprof-sys/library/components/shmem_gotcha.hpp
91.7% 11/12 2/2 source/lib/core/perfetto/session_backend.hpp
91.9% 102/111 8/8 source/lib/rocprof-sys/library/pmc/collectors/cpu/device.hpp
92.6% 163/176 9/9 source/lib/rocprof-sys/library/pmc/collectors/gpu/device.hpp
92.8% 873/941 41/48 source/bin/rocprof-sys-avail/avail.cpp
92.9% 13/14 0/1 source/lib/rocprof-sys/library/pmc/collectors/common/collector_slice.hpp
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.2% 68/73 7/8 source/lib/core/trace_cache/buffer_storage.hpp
93.3% 111/119 16/17 source/lib/core/perfetto/engine.cpp
93.3% 14/15 3/3 source/lib/core/perfetto/sinks/per_pid_file_sink.cpp
93.8% 30/32 6/6 source/lib/core/mpi.hpp
93.8% 240/256 28/32 source/lib/rocprof-sys/library/components/category_region.hpp
94.1% 16/17 3/3 source/bin/rocprof-sys-avail/component_categories.hpp
94.6% 105/111 14/15 source/lib/common/path.hpp
94.7% 36/38 7/7 build/coverage/_deps/spdlog-src/include/spdlog/logger.h
94.8% 55/58 1/5 source/lib/core/trace_cache/cacheable.hpp
95.0% 19/20 4/6 build/coverage/_deps/nlohmann_json-src/include/nlohmann/detail/string_concat.hpp
95.1% 58/61 7/8 source/lib/rocprof-sys/library/pmc/collectors/cpu/sample.hpp
95.7% 44/46 10/12 source/lib/core/containers/stable_vector.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
95.9% 162/169 19/22 source/lib/rocprof-sys/library/components/ucx_gotcha.hpp
96.1% 74/77 6/6 source/lib/rocprof-sys/library/causal/components/backtrace.cpp
96.2% 25/26 1/2 source/lib/common/delimit.hpp
96.3% 79/82 11/12 source/lib/core/state.hpp
96.6% 56/58 7/7 build/coverage/_deps/nlohmann_json-src/include/nlohmann/detail/conversions/to_json.hpp
96.8% 30/31 3/4 source/lib/rocprof-sys/library/pmc/collectors/gpu_perf_counter/sample.hpp
96.9% 62/64 14/14 source/lib/core/trace_cache/data_types.cpp
96.9% 94/97 10/10 source/lib/rocprof-sys/library/rocprofiler-sdk/trace_control.cpp
97.0% 32/33 4/4 source/lib/core/perfetto/counter_track.hpp
97.3% 73/75 6/6 source/lib/core/common_types.hpp
97.3% 73/75 3/3 source/lib/core/perfetto/packet_framing.hpp
97.5% 39/40 6/7 source/lib/core/trace_cache/rocpd_helpers.hpp
97.6% 40/41 7/11 source/lib/core/demangler.hpp
97.8% 45/46 7/7 source/lib/rocprof-sys/library/rocprofiler-sdk/rccl_internal.hpp
97.9% 47/48 4/4 source/lib/core/utility.cpp
97.9% 47/48 3/3 source/lib/rocprof-sys/library/pmc/collectors/nic/device.hpp
98.0% 147/150 9/10 source/lib/common/md5sum.hpp
98.1% 51/52 7/7 source/lib/rocprof-sys/library/pmc/device_providers/amd_smi/provider.hpp
98.2% 56/57 6/8 source/lib/rocprof-sys/library/components/pthread_mutex_gotcha.hpp
98.7% 78/79 15/16 source/lib/backends/amd_smi/backend.hpp
99.1% 110/111 25/26 source/lib/backends/rocprofiler_sdk/backend.hpp
100.0% 14/14 1/1 build/coverage/_deps/fmt-src/include/fmt/ostream.h
100.0% 6/6 0/3 build/coverage/_deps/nlohmann_json-src/include/nlohmann/adl_serializer.hpp
100.0% 38/38 7/8 build/coverage/_deps/nlohmann_json-src/include/nlohmann/detail/input/input_adapters.hpp
100.0% 2/2 0/1 build/coverage/_deps/nlohmann_json-src/include/nlohmann/detail/input/position_t.hpp
100.0% 2/2 0/1 build/coverage/_deps/spdlog-src/include/spdlog/details/backtracer.h
100.0% 2/2 0/1 build/coverage/_deps/spdlog-src/include/spdlog/details/circular_q.h
100.0% 1/1 0/1 build/coverage/include/profiler-hub/reader_types.hpp
100.0% 10/10 1/2 build/coverage/include/profiler-hub/writer_types.hpp
100.0% 31/31 4/5 source/bin/common/common_utils.hpp
100.0% 1/1 0/1 source/bin/common/json_config.hpp
100.0% 61/61 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% 10/10 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% 107/107 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% 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% 5/5 1/2 source/lib/binary/scope_filter.hpp
100.0% 8/8 7/8 source/lib/binary/symbol.hpp
100.0% 9/9 2/2 source/lib/common/env_vars.hpp
100.0% 12/12 1/1 source/lib/common/join.hpp
100.0% 3/3 1/1 source/lib/common/units.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% 49/49 10/10 source/lib/core/categories.cpp
100.0% 11/11 11/11 source/lib/core/components/fwd.hpp
100.0% 26/26 3/3 source/lib/core/config.hpp
100.0% 11/11 1/3 source/lib/core/containers/c_array.hpp
100.0% 1/1 0/1 source/lib/core/containers/operators.hpp
100.0% 2/2 2/2 source/lib/core/node_info.hpp
100.0% 1/1 0/1 source/lib/core/output_file_registry.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/locked_file_append.hpp
100.0% 7/7 1/1 source/lib/core/perfetto/sinks/append_mode.hpp
100.0% 9/9 2/3 source/lib/core/perfetto/sinks/polymorphic_sink_view.hpp
100.0% 6/6 2/2 source/lib/core/perfetto/sinks/recording_sink.cpp
100.0% 5/5 0/2 source/lib/core/perfetto/sinks/recording_sink.hpp
100.0% 4/4 2/2 source/lib/core/perfetto/sinks/single_file_sink.hpp
100.0% 1/1 0/1 source/lib/core/progress/bar.hpp
100.0% 6/6 2/2 source/lib/core/progress/tracker.cpp
100.0% 1/1 0/1 source/lib/core/progress/tracker.hpp
100.0% 7/7 1/3 source/lib/core/trace_cache/cache_manager.hpp
100.0% 4/4 0/3 source/lib/core/trace_cache/data_types.hpp
100.0% 9/9 3/3 source/lib/core/trace_cache/type_registry.hpp
100.0% 24/24 4/5 source/lib/core/trace_cache/unified_memory_processor.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% 10/10 1/1 source/lib/logger/logger.cpp
100.0% 7/7 1/2 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 1/2 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 1/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 1/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% 3/3 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% 66/66 5/5 source/lib/rocprof-sys/library/pmc/collectors/cpu/cache_policy.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% 2/2 0/2 source/lib/rocprof-sys/library/pmc/common/types.hpp
100.0% 34/34 3/4 source/lib/rocprof-sys/library/rocprofiler-sdk/marker_writer.hpp
100.0% 3/3 1/2 source/lib/rocprof-sys/library/rocprofiler-sdk/trace_control.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% 51
20-50% 26
50-80% 69
80-100% 172

@lloginov-amd
lloginov-amd marked this pull request as ready for review August 12, 2026 11:22
@lloginov-amd
lloginov-amd requested review from a team and jrmadsen as code owners August 12, 2026 11:22
@lloginov-amd
lloginov-amd force-pushed the users/lloginov-amd/tim-rem-exists branch from 86e22a2 to 6a31562 Compare August 13, 2026 09:16
@dgaliffiAMD

Copy link
Copy Markdown
Contributor

'rocprofiler-sdk" test failures are unrelated

@dgaliffiAMD
dgaliffiAMD merged commit 91acdd0 into develop Aug 14, 2026
147 of 156 checks passed
@dgaliffiAMD
dgaliffiAMD deleted the users/lloginov-amd/tim-rem-exists branch August 14, 2026 01:32
kcossett-amd added a commit that referenced this pull request Aug 17, 2026
## Motivation

<!-- Explain the purpose of this PR and the goals it aims to achieve.
-->

Since #9996 was merged, `trace-time-window` is failing in ASan:

See results from my investigation:
#8749 (comment)

I've investigated the runtime-instrument/binary-rewrite failure. The
condition fix
(https://github.com/ROCm/rocm-systems/pull/9996/changes#diff-7aa9eb486d6498bd67d85737c680f982343d2304dcb9548367fbaebdd2f067d8R137)
in #9996 enabled a
previously-dead branch that now calls closeSymtab on the target binary
before Dyninst opens it for the real rewrite. This is exposing an
existing bug (the PR itself is NOT a problem).

Calling that is destructive: closeSymtab -> ~Symtab ->
MappedFile::closeMappedFile -> munmap of the file image, but hte Elf_X
object survives because Elf_X::end() is a no-op upstream. Dyninst's
DwarfHandle::all_dwarf_handles cache is keyed only on filename, so the
reopen returns the cached handle still pointing at the dead Elf_X. The
crash lands when _fini triggers lazy type parsing and gelf_getehdr reads
the unmapped image

Commenting out closeSymtab is a sound workaround for now
(https://github.com/ROCm/rocm-systems/blame/develop/projects/rocprofiler-systems/source/bin/rocprof-sys-instrument/rocprof-sys-instrument.hpp#L152)
(it leaks one Symtab, mostly harmless), but the real fix belongs in
Dyninst... createDwarfHandle must not reuse a cached handle bound to a
different Elf_X.

I tested the workaround and the problem vanishes. I'll have to get to
work on the dyninst side of things.

## Why only ASan ?

Because without ASan the kernel hands the same address back, so the
dangling pointer accidentally lands on a valid, byte-identical remapping
of the same file. The bug is always present ... ASan just stops it from
being silently benign.

Here's the traced mmap/munmap sequence for the target binary, same
build, same command, ASLR disabled in both:
```
without ASan                                  with ASan
  MMAP   0x7ffff7f76000  (109648)               MMAP   0x7ffff22ab000  (109648)
  MMAP   0x7ffff7082000  (second open)          MMAP   0x7ffff2290000  (second open)
  MUNMAP 0x7ffff7f76000  <- closeSymtab         MUNMAP 0x7ffff22ab000  <- closeSymtab
  MMAP   0x7ffff7f76000  <- SAME ADDRESS        MMAP   0x7fffefc0d000  <- different address
```
Causes failure.

## Technical Details

<!-- Explain the changes along with any relevant GitHub links. -->

As a workaround, until I can handle dyninst, comment out `closeSymtab`.

(Yes there is a `close_symtab_file` function in our code, but that is
unused, so I will not touch it).

## Issue Tracking

<!-- Include a GitHub Issue and/or JIRA ID. Do not post any full JIRA
links here. -->
<!-- GitHub issue: #1234 -->
<!-- JIRA ID: EXAMPLECOMPONENT-1234 -->

JIRA ID: AIPROFSYST-730

## Test Plan

<!-- Explain any relevant testing done to verify this PR. -->

Local + workflows

## Test Result
Local: Error no longer observed, tests pass 100% of the time.
Workflows: See logs
<!-- Briefly summarize test outcomes. -->

<img width="877" height="127" alt="image"
src="https://github.com/user-attachments/assets/69d29547-cfc4-40d5-8266-be0ef4cd049c"
/>


## Submission Checklist

- [x] Look over the contributing guidelines at
https://github.com/ROCm/rocm-systems/blob/develop/CONTRIBUTING.md.
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.

3 participants