Reproduce
aorta sweep run --recipe recipes/sanitizers/daily-consan-lds-dispatch.yamlSet ROCJITSU_PREBUILT (unpacked rocjitsu bundle supplying rj_waitcheck and the ConSan hook) before running. aorta sets HSA_TOOLS_LIB, HSA_TOOLS_DISABLE_REGISTER, RJ_CONSAN_MODE, RJ_CONSAN_POLICY for you from the recipe's policy block.
Rebuild the fixtures
fixtures/isa/lds.hsaco
a gfx code object built from fixtures/kernels/lds_reduce.hip
export PATH="$(python -c "from aorta.instrumentation.rocm_paths import resolve_rocm_roots; print(resolve_rocm_roots().llvm_bin_dir)"):${PATH}"
export LD_LIBRARY_PATH="${LD_LIBRARY_PATH:+${LD_LIBRARY_PATH}:}$(python -c "import os; from aorta.instrumentation.rocm_paths import resolve_rocm_roots as r; x = r(); print(os.pathsep.join(dict.fromkeys([str(x.core_lib_dir), str(x.lib_dir)])))")"
mkdir -p recipes/sanitizers/fixtures/isa
hipcc --genco --offload-arch=gfx950 recipes/sanitizers/fixtures/kernels/lds_reduce.hip -o tmp.o
if head -c 24 tmp.o | grep -qF __CLANG_OFFLOAD_BUNDLE__; then clang-offload-bundler --type=o --unbundle --input=tmp.o --targets=hipv4-amdgcn-amd-amdhsa--gfx950 --output=recipes/sanitizers/fixtures/isa/lds.hsaco; else cp tmp.o recipes/sanitizers/fixtures/isa/lds.hsaco; fi && rm -f tmp.oThe conditional matters: --genco emits a raw code object on some ROCm builds and a clang-offload bundle on others, and the recorded digest is of the unbundled object.
fixtures/bin/lds_dispatch
a host repro binary built from fixtures/kernels/lds_dispatch.hip
export PATH="$(python -c "from aorta.instrumentation.rocm_paths import resolve_rocm_roots; print(resolve_rocm_roots().llvm_bin_dir)"):${PATH}"
export LD_LIBRARY_PATH="${LD_LIBRARY_PATH:+${LD_LIBRARY_PATH}:}$(python -c "import os; from aorta.instrumentation.rocm_paths import resolve_rocm_roots as r; x = r(); print(os.pathsep.join(dict.fromkeys([str(x.core_lib_dir), str(x.lib_dir)])))")"
mkdir -p recipes/sanitizers/fixtures/bin
hipcc --offload-arch=gfx950 -DLDS_HSACO="\"$(pwd)/recipes/sanitizers/fixtures/isa/lds.hsaco\"" recipes/sanitizers/fixtures/kernels/lds_dispatch.hip -o recipes/sanitizers/fixtures/bin/lds_dispatchThe -DLDS_HSACO define is required: it is how the binary learns which code object to load.
The exact invocations the nightly used are in .github/workflows/sanitizers-nightly.yml.
Artifacts not published
| Path | SHA-256 |
|---|---|
| fixtures/isa/lds.hsaco | 582fda52d20d902ba652d6550f55f6beabd9b41c7799d3cd678fde9da3a0340c |
| fixtures/bin/lds_dispatch | ded4e7b336e6fea0b95c7f59f219c26dcd3a19ec83cbcdd5e8e5df30090ba708 |
Recorded digests
| Key | Value |
|---|---|
| code_object:lds.hsaco | 582fda52d20d902ba652d6550f55f6beabd9b41c7799d3cd678fde9da3a0340c |
| command | /workspace/aorta/recipes/sanitizers/fixtures/bin/lds_dispatch |
| command_sha256 | ded4e7b336e6fea0b95c7f59f219c26dcd3a19ec83cbcdd5e8e5df30090ba708 |
| hook | /workspace/aorta/.sanitizer-nightly/rocjitsu-prebuilt/lib/librocjitsu_dbi_hooks.so |
| hook_sha256 | 228b3dee0b4315534682fe2f86e95998ef0a5e70c0174b4fd06f3504bb82f871 |
| selected_identity_sha256 | d6e1a5bc8ab7b5ca2426b9bdf7ae4fe2e280c7c0c8e6cd62965d2f2276a60e5c |
| selected_kernel | lds_reduce |
Every file published for this case. Logs are gzipped. It is not the whole recipe: 2 required inputs are CI-built and excluded by design, listed under artifacts not published with their SHA-256s.
| File | Size |
|---|---|
| REPRODUCE.md | 4.7 KB |
| consan/consan.log.gz | 7.6 KB |
| env.json | 4.7 KB |
| inputs/fixtures/kernels/lds_dispatch.hip | 2.3 KB |
| inputs/fixtures/kernels/lds_reduce.hip | 719 B |
| recipe.yaml | 1.4 KB |
| sanitizer_report.json | 5.8 KB |