<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/124157>124157</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Instrumentation failing: Assertion `!StateStack.empty() && "corrupt CFI stack"' failed
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
estaban
</td>
</tr>
</table>
<pre>
Bolt instrumentation is failing when trying to instrument a shared library.
- It works fine on x86_64
- The binary has been built with Rust 1.84.0 using `-C opt-level=3 -C lto -C codegen-units=1 -C debuginfo=2 -C metadata=9a450637e871382d -Ctarget-cpu=neoverse-n1 '-Clink-args=-Wl,--as-needed -pthread -g' -Clinker=/usr/bin/gcc -Crpath=y -Clink-arg=-Wl,--disable-new-dtags -Clink-arg=-Wl,-rpath,XXX/lib -Clink-args=-static-libgcc -Clink-args=-static-libstdc++ -Clink-arg=-Wl,--emit-relocs`
Failure:
```
$ ./build/bin/llvm-bolt libmybus_jni.so -instrument -o libmybus_jni.so
BOLT-INFO: shared object or position-independent executable detected
BOLT-INFO: Target architecture: aarch64
BOLT-INFO: BOLT version: 0236cb689550ed2dac406443c652efb723cb2602
BOLT-INFO: first alloc address is 0x0
BOLT-INFO: creating new program header table at address 0x600000, offset 0x600000
BOLT-WARNING: debug info will be stripped from the binary. Use -update-debug-sections to keep it.
BOLT-INFO: enabling relocation mode
BOLT-INFO: forcing -jump-tables=move for instrumentation
BOLT-WARNING: ignoring symbol $d at 0x4ed6b0, which lies outside .eh_frame
BOLT-WARNING: ignoring symbol $d at 0x4ed678, which lies outside .eh_frame
BOLT-WARNING: ignoring symbol $d at 0x4ed668, which lies outside .eh_frame
BOLT-WARNING: ignoring symbol $d at 0x4ed658, which lies outside .eh_frame
BOLT-WARNING: ignoring symbol $d at 0x4ed648, which lies outside .eh_frame
BOLT-WARNING: ignoring symbol $d at 0x4ed638, which lies outside .eh_frame
BOLT-WARNING: ignoring symbol $d at 0x4ed628, which lies outside .eh_frame
BOLT-WARNING: ignoring symbol $d at 0x4ed618, which lies outside .eh_frame
BOLT-WARNING: ignoring symbol $d at 0x4ed608, which lies outside .eh_frame
BOLT-WARNING: ignoring symbol $d at 0x4ed5f8, which lies outside .eh_frame
BOLT-WARNING: ignoring symbol $d at 0x4ed5e8, which lies outside .eh_frame
BOLT-WARNING: ignoring symbol $d at 0x4ed5d8, which lies outside .eh_frame
BOLT-WARNING: ignoring symbol $d at 0x4ed5c8, which lies outside .eh_frame
BOLT-WARNING: ignoring symbol $d at 0x4ed5b8, which lies outside .eh_frame
BOLT-WARNING: ignoring symbol $d at 0x4ed5a8, which lies outside .eh_frame
BOLT-WARNING: ignoring symbol $d at 0x4ed598, which lies outside .eh_frame
BOLT-WARNING: ignoring symbol __bss_start__ at 0x5c2e10, which lies outside .bss
BOLT-WARNING: ignoring symbol __bss_start at 0x5c2e10, which lies outside .bss
BOLT-WARNING: reference in the middle of instruction detected in function bignum_copy_row_from_table_32_neon/1 at offset 0xa0c0
llvm-bolt: /home/me/llvm/llvm-project/bolt/lib/Core/BinaryFunction.cpp:2491: void llvm::bolt::BinaryFunction::annotateCFIState(): Assertion `!StateStack.empty() && "corrupt CFI stack"' failed.
#0 0x0000000000e4f9d0 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (.localalias) (/home/me/llvm/build/bin/llvm-bolt+0xe4f9d0)
#1 0x0000000000e4d434 SignalHandler(int) (/home/me/llvm/build/bin/llvm-bolt+0xe4d434)
#2 0x0000ffffb5ca8834 (linux-vdso.so.1+0x834)
#3 0x0000ffffb57c7834 raise (/lib64/libc.so.6+0x32834)
#4 0x0000ffffb57c9140 abort (/lib64/libc.so.6+0x34140)
#5 0x0000ffffb57c0780 __assert_fail_base (/lib64/libc.so.6+0x2b780)
#6 0x0000ffffb57c07fc (/lib64/libc.so.6+0x2b7fc)
#7 0x0000000001608094 llvm::bolt::BinaryFunction::annotateCFIState() (.localalias) (/home/me/llvm/build/bin/llvm-bolt+0x1608094)
#8 0x000000000161f8fc llvm::bolt::BinaryFunction::buildCFG(unsigned short) (/home/me/llvm/build/bin/llvm-bolt+0x161f8fc)
#9 0x0000000000ef1850 std::_Function_handler<void (llvm::bolt::BinaryFunction&, unsigned short), llvm::bolt::RewriteInstance::buildFunctionsCFG()::'lambda'(llvm::bolt::BinaryFunction&, unsigned short)>::_M_invoke(std::_Any_data const&, llvm::bolt::BinaryFunction&, unsigned short&&) (/home/me/llvm/build/bin/llvm-bolt+0xef1850)
#10 0x000000000166ee34 std::_Function_handler<void (), std::_Bind<llvm::bolt::ParallelUtilities::runOnEachFunctionWithUniqueAllocId(llvm::bolt::BinaryContext&, llvm::bolt::ParallelUtilities::SchedulingPolicy, std::function<void (llvm::bolt::BinaryFunction&, unsigned short)>, std::function<bool (llvm::bolt::BinaryFunction const&)>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, unsigned int)::'lambda'(std::_Rb_tree_iterator<std::pair<unsigned long const, llvm::bolt::BinaryFunction> >, std::_Rb_tree_iterator<std::pair<unsigned long const, llvm::bolt::BinaryFunction> >, unsigned short) (std::_Rb_tree_iterator<std::pair<unsigned long const, llvm::bolt::BinaryFunction> >, std::_Rb_tree_iterator<std::pair<unsigned long const, llvm::bolt::BinaryFunction> >, unsigned int)> >::_M_invoke(std::_Any_data const&) (/home/me/llvm/build/bin/llvm-bolt+0x166ee34)
#11 0x0000000000f36dc8 std::_Function_handler<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> (), std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker<std::tuple<std::function<void ()> > >, void> >::_M_invoke(std::_Any_data const&) (/home/me/llvm/build/bin/llvm-bolt+0xf36dc8)
#12 0x0000000000f3770c std::__future_base::_State_baseV2::_M_do_set(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*) (/home/me/llvm/build/bin/llvm-bolt+0xf3770c)
#13 0x0000ffffb5c44c54 __pthread_once_slow (/lib64/libpthread.so.0+0xfc54)
#14 0x0000000000f37580 std::__future_base::_Deferred_state<std::thread::_Invoker<std::tuple<std::function<void ()> > >, void>::_M_complete_async() (/home/me/llvm/build/bin/llvm-bolt+0xf37580)
#15 0x0000000000f3bdd0 std::_Function_handler<void (), std::shared_future<void> llvm::ThreadPoolInterface::asyncImpl<void>(std::function<void ()>, llvm::ThreadPoolTaskGroup*)::'lambda'()>::_M_invoke(std::_Any_data const&) (/home/me/llvm/build/bin/llvm-bolt+0xf3bdd0)
#16 0x000000000244a838 llvm::StdThreadPool::processTasks(llvm::ThreadPoolTaskGroup*) (.localalias) (/home/me/llvm/build/bin/llvm-bolt+0x244a838)
#17 0x000000000244b484 void* llvm::thread::ThreadProxy<std::tuple<llvm::StdThreadPool::grow(int)::'lambda'()> >(void*) (/home/me/llvm/build/bin/llvm-bolt+0x244b484)
#18 0x0000ffffb5c3c230 start_thread (/lib64/libpthread.so.0+0x7230)
#19 0x0000ffffb58707dc thread_start (/lib64/libc.so.6+0xdb7dc)
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Aborted
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzkWl1v47bS_jXMDSFDoj594QvHWfcN0Ldd7KanvRMocmSxoUkdkorjf39ASbFsx0l3s25xgBMYsU0OHz4znBkOKVNrxUYBLFB6i9K7G9q5RpsFWEcrqm4qzfeLWy0dFso6021BOeqEVlhYXFMhhdrgXQMKO7P3n50-ksQU24Ya4FiKylCzn6FwGeB7h3faPFpcCwVYK_xcZGWW9H0PDeBKKGr2uKEWVwAKV52QDu-Ea_CXzjoczYpkFuLO-glRFgYrrFsXSHgCieK7GAcrLJ32b0xz2IAKOiWcRfFd5Bs5VN1GqFqj-I74hi04yqmjKL6b0yQNsziHIo_ignAcrBw1G3ABazsU3ynQT2AsBCrCiOTBSgr1GFCz8ejB7xKRVRBQGygADhwHrWsMUI6DDSI5HsTBoPgOkXVnDSLrSihE1hvGcLAyLXUNiu_2eAI-wuXC0kpCoGAXcEc39qLYAEJWf_zxByJrKSp8xtL6JWSBFNUw6xud1nGGyC0it5fZwFa4wIDUzKIsROEShcs1FbIzgOLl8N13DK9wiUiCZ17hTkh-UFzKp21QeQ-Totruq86WfyoxsxoHR44U6PNuFC5vf_35Ibj_Zf0ripcvjqarP4E5rA1utRXeUwOhOLSguMeBZ2Cd80bEHBwwB_wc6KFfbkwNa4SXGNTB1Df0Tnoi7b9g7xFCK_89JHHGqqyYp2kInHDKkjBLkphlKYG6yknMKpKF5BynFsY6TKXUDFPODVjrQyx8Ds8lmQHqvOcr2OHW6I2hW9wA5WDwoBl1B4jwOQv9HyIrrOvagpuaRtzfl19-uf_lJw_dBwb2kYF3QkpcAbbOiLYFjmujt9gdonOGf7OAg67l1EHQDwwsMG9w65PAI0CLhZudswdFqz5p9I4zpJKt5vDKHtowLxb82W3boNfLu-dWP4HvO09HF5QRG6WNh7D7baUlRiTh3jThcwI8q3qT7BrBGiwFWKw7ZwUHPIOmrA3dwndD5sXVIbPrQ6bXh0yuDxlfH5JcHzK6PmR4dci0vj4kXB-SXx-SXR-yuj4kvT7k_BqQZVlZW1pHjSvLATtlBKI3E2dl7ffBfhzUQA0GFAMsVL8pbQXnErCux42h34gOW7yXqjs1NFZio7ptyXS7L43elX5jK_sNpoxJqUD7qiTy3A4bJg2Z3y4PpYqngMi60VtAZN3_830v1UxrtC9CfInjhfsaDJH1Shsvedvvn-uRzoy1LYqXJJlHHvVJC457rHiJ4uU4GYqXp6OGNqqUdtTBan3_1b8jn-LmHmZpLZheW196kajv_uooe5zBtnX7QRIjkiGSYUQI08Z0rcOr9T22Xg4R4gtWX-ID97s4RiQOfT1y-IOknvPwiK3d2-HDZyOU66d7MJR5XpOQobtSW2eAbvvpV1goN5ApZr4kkFQKaseWy1Z-o4JE5DZ8Hlh5OwycozPOPIkT_FVsFJX_RxWXYBApJgofmdBDThOSccK6rusqZbQo4sQjS6G65-CJWz2zehb1Y4vjgfHJwJzlfqChwsJITIoqS4Z35jGyHiMmJyjJGco8SkJMK23c-yhJlBxZLT1DCfMixGVJe78qvVeUFf0LYqTKiyPI7BVkzf5qfM2m8fnxQkZZWITz5AdD5Vo-N7KZuBanXKO6qNk3c-1nWq1_QqToVH8659g22nzcRUcGE7_5aVDUUZGG2Do-EChf-JTNGCHxqk9MJ4H8phJDVL-i7hsvjf4COyMc3CvrqGJwZIMXRDsYY8ht_kVySbcVp4jkP0Yp_jRq_P-lUE_60fvFZIal2pecOoqZVtaNIB-eLetfH00y_RINC-iTWnjqYBlAnHzbAo4rMcneCsVRvLqk12dqqJQgf3NCCidgTO-mU7-qT5Q1L9P8LlzzmxL_7mDpD7D3_N1VWWnl4Pk9e74x71fWAO_86fGzloLtT_SoDzF0DV-NP70FXum-3PoG8CO3eQVYluz5OYpGAGoFK_1JW21QvGINNSfCvqF0hvZXWEP3GVx_b0CdNlM_HmU83xMdh73uYiRN9L5UpTMApXBgRtxDZ0uF_34AlFptXnT9pviYyP3jE15MqP9Dar8s_tDzfbnvw5tPn52m3HVakdVxxlnxfu46dHZ9kilbd9JalnXnOgN9SfJiWLCddEPLaeC9Lzu03IEEB0MYXUiZFzAeqH0sLTj3Y4TH7PU6XXwf65PBww30KHPfL_UJG9e1Eo4bLqTSyWleXGqk-c_50eAokxuRMzfK85C9b7G-8usb_kUOnLn2y3bM-Uj9_wLH89ZeTol8-QP28xaa7Hd63GBJwtIEl-X4wKLUikFppd69rtFHEV-phwM0S4_iOzlfmLQI37fDnT_OG-Cl7WvzY9_8O3334ANMb1tv95LavWLT2eBDRk6LozotPbNFxfk3FtrnSWd4vjEab0oTR_vAQ2-rz1rLe-XA1PSlmO61ut-28ji7XPT3U5OdbjMTvM91PxndtYM7XiwlPlRdf9jo3qyT0bNjo5MkoUVcHCny1fFJl3GrNZqBtV4xe1Lbvan0tY6OI72JfH5GvkqKZHBYsjxS4jgwRpJGP-8vxca7mm-M3h0uQN5ZySF0ipHIj6jrFZrULU6zUMxI7AOEGleOT07_Ov3kJD5a_fkJYpGHOWd4TGrDteN7lw68yvmYJD___Gn59RO2XbUVDlNcdRtsoNXGYadx41zbn0vIGpH1Rrimq2ZMb9-8CxTWdmARWWOqfCHGZMehv7xkhtoGV5Q9OkMZzFC4XFbaDM8mD09Qb_gi5vN4Tm9gEeVxnqVxmoQ3zWJeRJwwlsx5QSo2T8MsJ5wDZ2nIOaH1jViQkKRh5L0rJtF8VpCCzOu4KOa0iKMiQ0kIWyrkzFOeabO56ckuIpJEaX4jaQXS9r8QIETBDve9iBCU3t2YxbDC3caiJJTCOjvBOOEkLO7Pfjow_m7gb7iovOmMXHx8ZUZ9nxbkPwEAAP__Wq9TfA">