<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/70965>70965</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
llvm-profdata segfault when merging profiles
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
jmayclin
</td>
</tr>
</table>
<pre>
Hello! We use source-based code coverage for out project, and recently encountered a segfault when merging profiles
```
[Container] 2023/10/31 23:57:47.165149 Running command $CB_BIN_DIR/coverage_report.sh
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
#0 0x00007f493ee5d281 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/usr/lib/llvm-15/bin/../lib/libLLVM-15.so.1+0xf07281)
#1 0x00007f493ee5af9e llvm::sys::RunSignalHandlers() (/usr/lib/llvm-15/bin/../lib/libLLVM-15.so.1+0xf04f9e)
#2 0x00007f493ee5d7a6 (/usr/lib/llvm-15/bin/../lib/libLLVM-15.so.1+0xf077a6)
#3 0x00007f493da50cf0 (/lib/x86_64-linux-gnu/libc.so.6+0x3bcf0)
#4 0x00007f493db979a0 __memchr_evex ./string/../sysdeps/x86_64/multiarch/memchr-evex.S:327:0
#5 0x00007f493edf2709 llvm::StringRef::find(llvm::StringRef, unsigned long) const (/usr/lib/llvm-15/bin/../lib/libLLVM-15.so.1+0xe9c709)
#6 0x00007f493edf2fdb llvm::StringRef::split(llvm::SmallVectorImpl<llvm::StringRef>&, llvm::StringRef, int, bool) const (/usr/lib/llvm-15/bin/../lib/libLLVM-15.so.1+0xe9cfdb)
#7 0x00007f4941b09036 llvm::readPGOFuncNameStrings(llvm::StringRef, llvm::InstrProfSymtab&) (/usr/lib/llvm-15/bin/../lib/libLLVM-15.so.1+0x3bb3036)
#8 0x00007f4941b17fe3 llvm::RawInstrProfReader<unsigned long>::createSymtab(llvm::InstrProfSymtab&) (/usr/lib/llvm-15/bin/../lib/libLLVM-15.so.1+0x3bc1fe3)
#9 0x00007f4941b16c60 llvm::RawInstrProfReader<unsigned long>::readHeader(llvm::RawInstrProf::Header const&) (/usr/lib/llvm-15/bin/../lib/libLLVM-15.so.1+0x3bc0c60)
#10 0x00007f4941b170b9 llvm::RawInstrProfReader<unsigned long>::readNextHeader(char const*) (/usr/lib/llvm-15/bin/../lib/libLLVM-15.so.1+0x3bc10b9)
#11 0x00007f4941b16d50 llvm::RawInstrProfReader<unsigned long>::readNextRecord(llvm::NamedInstrProfRecord&) (/usr/lib/llvm-15/bin/../lib/libLLVM-15.so.1+0x3bc0d50)
#12 0x0000560f07bfa01d (/usr/lib/llvm-15/bin/llvm-profdata+0x2b01d)
#13 0x0000560f07bf7f0b (/usr/lib/llvm-15/bin/llvm-profdata+0x28f0b)
#14 0x0000560f07bfc6f2 (/usr/lib/llvm-15/bin/llvm-profdata+0x2d6f2)
#15 0x00007f493edf8e79 llvm::ThreadPool::processTasks(llvm::ThreadPoolTaskGroup*) (/usr/lib/llvm-15/bin/../lib/libLLVM-15.so.1+0xea2e79)
#16 0x00007f493edf98f3 (/usr/lib/llvm-15/bin/../lib/libLLVM-15.so.1+0xea38f3)
#17 0x00007f493daa5402 start_thread ./nptl/pthread_create.c:442:8
#18 0x00007f493db33744 clone ./misc/../sysdeps/unix/sysv/linux/x86_64/clone.S:102:0
./codebuild/bin/coverage_report.sh: line 18: 5412 Segmentation fault (core dumped) llvm-profdata merge -failure-mode=all -sparse tests/unit/ut_*.profraw -o merged.profdata
```
We are running our tests through CMake: https://github.com/aws/s2n-tls/blob/main/codebuild/spec/buildspec_unit_coverage.yml#L41
The build options that we set for our coverage builds are here: https://github.com/aws/s2n-tls/blob/main/CMakeLists.txt#L247-L248
The `llvm-profdata` is being invoked here: https://github.com/aws/s2n-tls/blob/main/codebuild/bin/coverage_report.sh#L18
This does not happen deterministically, and seems to be relatively rare (guesstimate: 1 in 100 runs)
Let me know if there is any other information I can provide!
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy8WF1v27gS_TX0y8AGRerDevCDk9S7AbK9RVLsPhoUObK5oUiDpJL4319QSmLLt10s0uAWhSKJ5JlzZobUjEUIemcRV6S4IsXNTPRx7_zq704cpdF21jh1XP2OxjjCMvgLoQ8IwfVe4rwRARVIpxCke0Ivdgit8-D6CAfv_kYZCbsGYRV4lGijOQJa6Xob0aMCAQF3rehNhOc9WujQ77TdpbWtNhgIvSF0_Xot6ev_8bG4unY2Cm3Rk-IGGGWcsE1GCdvwDBgnfF1UhK_zapGVRZbXcN9bm9Cl67pEibD8-mp7dft1e3N7T9jmTcLW48H5uAj70dS3uy_rhy8Q-qbTEQQ0_Q7GKRAd7GM8BMLXhG0I2-x03PfNQrqOsI0xT29_5u_u2OgQegyEbQa_aCtNrxDiHkF6EfbQCPkYvZC4GM0DYZwCfaGU0qrNa45YKLbMYIDna8LX4RjGm29e2_gQhXz8nhAIW54mefG8dSF6FB1hZYqLtpGwGghbErbpg09cdfPGOCsI2zTaErZZLE5Durm7-_OPeVYsgltkhF3Rl5ZWbJkRVp8IZxeERVvjjwjf9_ZB76wwvwurDPowkPkUTnlb44QTu3RiJcpPEV-JcmKInxtSoqCypa-GRpyXZbkt87nRtn-Z72w_DsgEWg6gvJEtnWDmE8ymrmpBYbvtsJN7v8UnfIHEM0Sv7e6NdTgGhYfwbpGwTdebqIWX-3Q_LJ6nxYsHwtecpQ1DT0aLicdUyypan0XxYTB2j-342GqrJhl3GmfX0NvhnFFgXCJYg3Q2xF_3P9ayovXEV-Ul7VY1P6cdDkbHKe9OGPMnyuj8bXcwhF__cPGX1230E8HD7rqGxjnzuXJb1UzkVmdy86yhNeXlGSmPQn377T-b3sqvosORY_h5oE6vb22I_pt37cOxi6IZ5H7C1uRNwymfbpnlVENWtcjPmNyL53cy9ygUesKvpxnFv4xTpUcR8Y3x8v-gRmYt8oma-kJNKUv6MTUpeL-PU861nCOMb8ZJY5Z9ojQqy9M5lM51ehko2tQfl_YVX-K7PLkX7wLWnxYb2tQTAdllbFTxC7FJAu5ROj89-dJGU2c444TPi4oqplF5-7QVJW1p1bSCZupfWHqrTFolohjAWUMzNYHmF9BVS5uPQS9b2kyg8wtoWbbsY9CqbNkE-vLLtcTqPE2_74dTMR3Nw_PBO4khfBfhcXoyniamsd-86w-flZwoGFbT3Lz8cNXLln-GIb5s-cRQNa1QRJFTBiEKH7dxUDwUE_YQDWGbw_hqO56sC5mK6pwRvl6eAJfT8oTzKs9BGmdxQOp0kP9blPRWv4wvngbqtn85L1WG5UNhklF2KkwWQ6musOm1Ue8--EHxztdgtEXIlukWijxj8IC7Dm0UUTsLY-cx_EvHj_MIqu8OmDYATLJs6EwQ5q3Qpvc475xCwm-EMTAPB-EDQsQQX0WlKr-PW8LWiwTgxTPM3QihFu-J-8OuZrj-hSA8gn_tV1zvR3SIe-_63R6u_xCPmET9Q_MhnhObwOw8mnTXGJcSpBOv7jo5MBwwBWd4TPfbJGH75tDFsTOE8bs8O6f4fY8wLAB3SL5M3ESEZ4SA8bUH9KemcMQeVO3R_xr1QfydDjEs4ktM1Fheze9YvrwkSEo6PStKCjpAg8mr2j65R1S_zudf5SLjd9kFPx1AOQxgXYS9OBzQgsKIvtNWh6ilMOb41j0HxC6kbrNB8GhE1E9ojuCTQwlb7noMIepOxEFKBtpCRmnKoHDa98P1DiN0CI_WPYNuU9vpMTlF2CO49ATats534w65BSlsaseftELCJikwUyuual6LGa6ysl4uy4zWbLZfKVlWpcp5QxkvZZVXyGuhqKryvM3rgs_0KnXrWUazrCoyni0KRJoVdcElVqrlS5JT7IQ2ixS-hfO72dA0rypal8XMiAZNGH6vYMziMwyDhDFS3Mz8agh50-8CyakZ0uQdJepocDXd2f_8C8Ss92b18RZ_IPzfAAAA__-jhD6N">