<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/97385>97385</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[llvm-cov][MC/DC] "Out-of-bounds Bit access." when run with binary profile correlation
</td>
</tr>
<tr>
<th>Labels</th>
<td>
tools:llvm-cov
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
whentojump
</td>
</tr>
</table>
<pre>
```shell
$ clang --version
clang version 19.0.0git (/media/wd-sn580-2t-1/llvm/trunk/src/clang 91c0ef6f67821eb7298cb05988045e92354ac77b)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /media/wd-sn580-2t-1/llvm/trunk/src/build/bin
Build config: +assertions
```
How to reproduce:
```shell
cat << EOF > test.c
int main(void) {
int a = 0;
int b = 0;
return a && b;
}
EOF
clang -fprofile-instr-generate -fcoverage-mapping -fcoverage-mcdc \
-mllvm -profile-correlate=binary \
test.c -o test.exe
./test.exe
llvm-profdata merge default.profraw --binary-file test.exe -o default.profdata
llvm-cov show --show-mcdc -instr-profile default.profdata test.exe
```
Log
```text
llvm-cov: /media/wd-sn580-2t-1/llvm/trunk/src/llvm/include/llvm/ADT/BitVector.h:450: bool llvm::BitVector::operator[](unsigned int) const: Assertion `Idx < Size && "Out-of-bounds Bit access."' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: llvm-cov "llvm-cov show" --show-mcdc -instr-profile default.profdata test.exe
#0 0x00005a3126ed5daf llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /media/wd-sn580-2t-1/llvm/trunk/src/llvm/lib/Support/Unix/Signals.inc:727:3
#1 0x00005a3126ed3a9f llvm::sys::RunSignalHandlers() /media/wd-sn580-2t-1/llvm/trunk/src/llvm/lib/Support/Signals.cpp:105:20
#2 0x00005a3126ed3df6 SignalHandler(int) /media/wd-sn580-2t-1/llvm/trunk/src/llvm/lib/Support/Unix/Signals.inc:413:1
#3 0x000076aa61a42520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
#4 0x000076aa61a969fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
#5 0x000076aa61a42476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
#6 0x000076aa61a287f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
#7 0x000076aa61a2871b (/lib/x86_64-linux-gnu/libc.so.6+0x2871b)
#8 0x000076aa61a39e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#9 0x00005a3126f6d80b llvm::SmallVectorTemplateCommon<std::array<int, 2ul>, void>::operator[](unsigned long) /media/wd-sn580-2t-1/llvm/trunk/src/llvm/include/llvm/ADT/BitVector.h:450:5
#10 0x00005a3126f6d80b (anonymous namespace)::MCDCRecordProcessor::buildTestVector(llvm::coverage::MCDCRecord::TestVector&, short, int) /media/wd-sn580-2t-1/llvm/trunk/src/llvm/lib/ProfileData/Coverage/CoverageMapping.cpp:412:42
#11 0x00005a3126f6fced findExecutedTestVectors /media/wd-sn580-2t-1/llvm/trunk/src/llvm/lib/ProfileData/Coverage/CoverageMapping.cpp:446:5
#12 0x00005a3126f6fced processMCDCRecord /media/wd-sn580-2t-1/llvm/trunk/src/llvm/lib/ProfileData/Coverage/CoverageMapping.cpp:513:28
#13 0x00005a3126f6fced llvm::coverage::CounterMappingContext::evaluateMCDCRegion(llvm::coverage::CounterMappingRegion const&, llvm::ArrayRef<llvm::coverage::CounterMappingRegion const*>, bool) /media/wd-sn580-2t-1/llvm/trunk/src/llvm/lib/ProfileData/Coverage/CoverageMapping.cpp:533:41
#14 0x00005a3126f727da llvm::Expected<llvm::coverage::MCDCRecord>::takeError() /media/wd-sn580-2t-1/llvm/trunk/src/llvm/include/llvm/Support/Error.h:610:15
#15 0x00005a3126f727da llvm::coverage::CoverageMapping::loadFunctionRecord(llvm::coverage::CoverageMappingRecord const&, llvm::IndexedInstrProfReader&) /media/wd-sn580-2t-1/llvm/trunk/src/llvm/lib/ProfileData/Coverage/CoverageMapping.cpp:901:35
#16 0x00005a3126f73a20 llvm::Error::setChecked(bool) /media/wd-sn580-2t-1/llvm/trunk/src/llvm/include/llvm/Support/Error.h:310:22
#17 0x00005a3126f73a20 llvm::Error::operator bool() /media/wd-sn580-2t-1/llvm/trunk/src/llvm/include/llvm/Support/Error.h:242:15
#18 0x00005a3126f73a20 llvm::coverage::CoverageMapping::loadFromReaders(llvm::ArrayRef<std::unique_ptr<llvm::coverage::CoverageMappingReader, std::default_delete<llvm::coverage::CoverageMappingReader>>>, llvm::IndexedInstrProfReader&, llvm::coverage::CoverageMapping&) /media/wd-sn580-2t-1/llvm/trunk/src/llvm/lib/ProfileData/Coverage/CoverageMapping.cpp:944:71
#19 0x00005a3126f74079 llvm::Error::setChecked(bool) /media/wd-sn580-2t-1/llvm/trunk/src/llvm/include/llvm/Support/Error.h:310:22
#20 0x00005a3126f74079 llvm::Error::operator bool() /media/wd-sn580-2t-1/llvm/trunk/src/llvm/include/llvm/Support/Error.h:242:15
#21 0x00005a3126f74079 llvm::coverage::CoverageMapping::loadFromFile(llvm::StringRef, llvm::StringRef, llvm::StringRef, llvm::IndexedInstrProfReader&, llvm::coverage::CoverageMapping&, bool&, llvm::SmallVectorImpl<llvm::SmallVector<unsigned char, 10u>>*) /media/wd-sn580-2t-1/llvm/trunk/src/llvm/lib/ProfileData/Coverage/CoverageMapping.cpp:1003:66
#22 0x00005a3126f74b1d llvm::Error::setChecked(bool) /media/wd-sn580-2t-1/llvm/trunk/src/llvm/include/llvm/Support/Error.h:310:22
#23 0x00005a3126f74b1d llvm::Error::operator bool() /media/wd-sn580-2t-1/llvm/trunk/src/llvm/include/llvm/Support/Error.h:242:15
#24 0x00005a3126f74b1d llvm::coverage::CoverageMapping::load(llvm::ArrayRef<llvm::StringRef>, llvm::StringRef, llvm::vfs::FileSystem&, llvm::ArrayRef<llvm::StringRef>, llvm::StringRef, llvm::object::BuildIDFetcher const*, bool) /media/wd-sn580-2t-1/llvm/trunk/src/llvm/lib/ProfileData/Coverage/CoverageMapping.cpp:1031:80
#25 0x00005a3126cc1182 llvm::Expected<std::unique_ptr<llvm::coverage::CoverageMapping, std::default_delete<llvm::coverage::CoverageMapping>>>::takeError() /media/wd-sn580-2t-1/llvm/trunk/src/llvm/include/llvm/Support/Error.h:610:15
#26 0x00005a3126cc1182 (anonymous namespace)::CodeCoverageTool::load() /media/wd-sn580-2t-1/llvm/trunk/src/llvm/tools/llvm-cov/CodeCoverage.cpp:486:41
#27 0x00005a3126cc4f02 (anonymous namespace)::CodeCoverageTool::doShow(int, char const**, llvm::function_ref<int (int, char const**)>) (.constprop.0) /media/wd-sn580-2t-1/llvm/trunk/src/llvm/tools/llvm-cov/CodeCoverage.cpp:1143:3
#28 0x00005a3126ccae48 (anonymous namespace)::CodeCoverageTool::run((anonymous namespace)::CodeCoverageTool::Command, int, char const**) /media/wd-sn580-2t-1/llvm/trunk/src/llvm/tools/llvm-cov/CodeCoverage.cpp:980:18
#29 0x00005a3126ccb73f showMain(int, char const**) /media/wd-sn580-2t-1/llvm/trunk/src/llvm/tools/llvm-cov/CodeCoverage.cpp:1348:1
#30 0x00005a3126cad063 std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>::~basic_string() /usr/include/c++/11/bits/basic_string.h:672:19
#31 0x00005a3126cad063 main /media/wd-sn580-2t-1/llvm/trunk/src/llvm/tools/llvm-cov/llvm-cov.cpp:82:5
#32 0x000076aa61a29d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#33 0x000076aa61a29e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#34 0x00005a3126cac5e5 _start (/media/wd-sn580-2t-1/llvm/trunk/src/build/bin/llvm-cov+0x2895e5)
[1] 462045 IOT instruction (core dumped) llvm-cov show --show-mcdc -instr-profile default.profdata test.exe
```
Removing either MC/DC options or binary profile correlation can run successfully.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzMWttv4yoa_2voC0qEwdeHPqRJozPSGc1o2t3XCGOc-NSGLOA23Yf921eAHds5mU7TmWlPVSUOl4_v8vsugKnW1VZwfg2iGxCtrmhrdlJdP-24MPKvttlf5bJ4vgYx8v96x-saoBVAC4BDyGoqtnA2e-RKV1J0He7Td3UdMMjmaI62lYEApwCvG15UFOD1UzHTIkrRDJtZAPC6rh8bgNdGteIB4LVWDOC1J5UFDPEyLuMkxQHPE5ylLEdRlqYojHiGSRRSliQ5wJnn4J6qLTeALOAhjTdxOGvFg5BPYlZXoj3MtqLtxu0UpwVsZMFrO3ovdXXwXZ-ENrSuebGqlO26lPO8rerCfledbm5sA2RSlNXWE7yhWnNlKil0p75e12Nt_iGfoJFQ8b2SRcs4IItx9zn7MGogIEtAlvD2yxoCcgsN12bOfHclDGxoJQBOH2VVAJxBkNz4PgghtP0UArKCCJCT9vxMu-KmVcJOwTHAMcyPvSBZ-YfbL-u_I2RW7pUsq5rPKqGNmm254IoaDmclk49c0S2fNXS_r9zYoYkVDIJoOTBg_2aNNQOc9SSZVIrX1HBAVnklqHoezfHagDPpn_iB-465NeOkxRJ1NAtqKGy42nJY8JK2tZnbZkWf4GzmF5jZhY8ULfXxSEtgRJPJR6h30s62X16qThGdDH-bfsLtWbj8KbfwLD4MP5jp-m-BdddYCVa3BR8aFqt7gNc3lfk3Z0aq-Q6QRRghu0QuZQ3dMLIAZHEc43_KvbW5VD4KAZy2wsWlwsLNQpNJoZ0rL3pvgSBGn4qDhTi8q_7Le9wBjL-0ZibLWS5bUWh4UxlIGeNazwHGACewpFXNi7nXw9c_bxd3t1C3eWMHwrzdWjeTyliH2xmz15ZHvAZ4va3Mrs3nTDaDzD02_uLMWJ1o3XIN8BpSYbl3GoJmxyFTVO9gTtmDUZTxbvk7Q9kDLNpmf3RpNPdg_qrkVtEGUrVtGy6M5QMeYQMwnkAIYPwTKIIAEwTRASGEIkoCHPMiKmg5Mpl-1v7hq6qEcXzfW0EATodBij5tpDaK08bZY9kb8I0Qq6sc4PVdu7cGAXj9L1EdbEO1FbTW80owQBYJTgBZkEGS4EQSQrOzknxrhaf0BxVFzZV2yemXMdtzyfbWuAGKAFlgNLCJT9ksyhhOGAI4fQf9hQGx_A2MkY6xJKY0DmiII4y6xO0Jdgl1SKSug821nMcA36CDm3LMxJZmOKWZxVnJ4N643Lt5qOr6sgXc_MkC0SnTYRLDrXaSXsp8mMQT2vGUNk6TkkCa2yBxEWU3cUI5-RvlIL-YZpBPaKZTmiTjWXwZTTdlQjObYLWMixTlI5e6a2hd-4h-z5u9TblL2TRSALLUpvCDqFL0GZClg_QS4rYG5NY-uQKE3P4oF9RSbH_CFy5IV1Ff4pIAnRMc4JQKKZ4b2WooaMP13kXCzIvweblafuNMquKrkjbz9HnO1YP3XPfJbxw6-9LmlIT_PZ7k4qreOY_-NQH2q88SK1ud4PWy52R4_OwrsC6UhQG2n3jQUnCipZLxApaVKG4PnLWGj4TW78tqGE_tic9xuvdmGpT-rjxGLv7idGCSnGPye1BZylYYrjqaSylckee6-COtW2q4F2xrt2jfh9yUjh_eFV4ecsPEhfXkb7wEZPkWaovO721R-N7YjQhxCB6UHU6VneCkoCNZbw97zgwvXpB17KxdFDP0gd8q5Xz8V8asIZU76i5mxYGNWcEI5NHLIp1aaqIn31hLWqxbwWyp3Yn2EnImFDoXOg-dT6LgB17YnbWypvvGacF9UHtfIGQosFXjSGvxidYIxWgMBGdOX0Fys9xx9sCtVn4Sxa8yMXEmxqOIm7ya2T6hdu722-GIQ3wCx_RlXl8LRyUbjxY9weIoGB1LjVZU_2n5Zm_UiyHqBLYeiUt4JNPtmjYFr7nhF5OyweC2i3Wv8oDlq7XyAf4ShnavNQqcJzVhEqIk-6f6C0avZvbD_QUHL_N6gb-sq3q6Qb8zyuGznILtsuZfhuC-BDiZONpNfGr29cTvRn2ALI97A7ajznUD1PY-t3hvDwkQsrVFHA-WxKeWzIPiH-si5NXMfryLnBZtJ7y-0kW-l0fOecBpGP-ObzyW3eGSdb27Z21487ry-eKVZO7OHP15qt1YflqtuWE7roY6-4OK7AARW1ylaDDYtCRlLAhSfL7K_qkk_kvS95C4P76Wx_E5xf3gAGIpC97LdG_tP0b8T4hgpKx1f-jN5KMDwLBUv-dO4-kWCycnMoQleqMMhbxzh91pd4hk4_4I7oupi5TdDmajnLNVwp3XfXdq5lzPaiedu469kvs5-u0KC4KQDCfYVmHpicIoD9O3KUy1wtn8DVOXsmmoKI6HTGdV9ns1k6XOHYajEZydaCZPSOkuQD77y8yP4jQgYTqcogNMTu5TGC1QTIbYtNmwwyEIunNBqiu20S7OA7Lsi5njYNuwMYpWRvfdPkkMZ6t1LRn1RVHf38ev_03IHwNAq9UkKjGAb9z_OgjcnbWxUo_n-giVuFycDYIG5wRtaCV-ocb7x07bKZ6c6h2vUvpj9KzILryxcFOOR96WJjmlyUMENxs7baMNVWbTyXjRKjycrhKeKI9FPIKe_lvelRi_cTBWoLsoyCIeDYtHNwGIVjCMMQoj-OnLPXRXhi3z16s4ZVJxdzXJ3esB8LdeWX_jjXysxBbyytgS5vMS4PVqCeXevRsBbbHpb_D7VfrLfXewSAVUrYC6dTe9ZVvXz90N61VxTYqMZPSKXwdJkKVZlibJ1e46oGUUYYpLHLM8D5K4pCSNSRZEeYlISK6qa4xwiBKEURQlUTJnaUDygvMgIBEuMwRCxBta1XOrmblU2yt3_XudJSSNrmqa81q7N2sw9pAmw7U7xiBaXalr15C3Ww1CVFfa6IGYqUzt3sw5TopWILrpNGNt94PLbvi0414vT5XZvaC_q1bV12-_6_byPl7j_wcAAP__eJ8OmQ">