<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/119404>119404</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[unittests][ExecutionEngine][Orc] The JITLinkRedirectionManagerTest test case segfaults on older linux distributions
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
pawosm-arm
</td>
</tr>
</table>
<pre>
Not sure how to raise this issue properly. The RHEL8 distro is quite old nowadays (yet has all the gcc, cmake, python things in sufficient versions to build LLVM), it is still widely used, and there is a need for building LLVM for it to the point all of the `check-all` tests are passing. And most of them do. One of the failing ones is ExecutionEngine/Orc/./OrcJITTests/80/82. It fails as such:
```
Note: This is test shard 81 of 82.
[==========] Running 2 tests from 2 test suites.
[----------] Global test environment set-up.
[----------] 1 test from ObjectLinkingLayerTest
[ RUN ] ObjectLinkingLayerTest.ClaimLateDefinedWeakSymbols
[ OK ] ObjectLinkingLayerTest.ClaimLateDefinedWeakSymbols (0 ms)
[----------] 1 test from ObjectLinkingLayerTest (0 ms total)
[----------] 1 test from JITLinkRedirectionManagerTest
[ RUN ] JITLinkRedirectionManagerTest.BasicRedirectionOperation
#0 0x0000000000e0e990 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (toolchain/build/stage/bootstrap_compiler/unittests/ExecutionEngine/Orc/./OrcJITTests+0xe0e990)
#1 0x0000000000e0c8a0 llvm::sys::RunSignalHandlers() (toolchain/build/stage/bootstrap_compiler/unittests/ExecutionEngine/Orc/./OrcJITTests+0xe0c8a0)
#2 0x0000000000e0c9ec SignalHandler(int) Signals.cpp:0:0
#3 0x0000ffff95af07a0 (linux-vdso.so.1+0x7a0)
#4 0x0000000000cbaf3c llvm::orc::InProcessMemoryAccess::writePointersAsync(llvm::ArrayRef<llvm::orc::tpctypes::PointerWrite>, llvm::unique_function<void (llvm::Error)>) (toolchain/build/stage/bootstrap_compiler/unittests/ExecutionEngine/Orc/./OrcJITTests+0xcbaf3c)
#5 0x0000000000cbff38 llvm::orc::JITLinkRedirectableSymbolManager::redirect(llvm::orc::JITDylib&, llvm::DenseMap<llvm::orc::SymbolStringPtr, llvm::orc::ExecutorSymbolDef, llvm::DenseMapInfo<llvm::orc::SymbolStringPtr, void>, llvm::detail::DenseMapPair<llvm::orc::SymbolStringPtr, llvm::orc::ExecutorSymbolDef>> const&) (toolchain/build/stage/bootstrap_compiler/unittests/ExecutionEngine/Orc/./OrcJITTests+0xcbff38)
#6 0x0000000000802d48 JITLinkRedirectionManagerTest_BasicRedirectionOperation_Test::TestBody() (toolchain/build/stage/bootstrap_compiler/unittests/ExecutionEngine/Orc/./OrcJITTests+0x802d48)
#7 0x00000000011b7dfc testing::Test::Run() (.part.1161) gtest-all.cc:0:0
#8 0x00000000011c7ca4 testing::TestInfo::Run() (toolchain/build/stage/bootstrap_compiler/unittests/ExecutionEngine/Orc/./OrcJITTests+0x11c7ca4)
#9 0x00000000011cce34 testing::TestSuite::Run() (.part.1163) gtest-all.cc:0:0
#10 0x00000000011cd5ec testing::internal::UnitTestImpl::RunAllTests() (toolchain/build/stage/bootstrap_compiler/unittests/ExecutionEngine/Orc/./OrcJITTests+0x11cd5ec)
#11 0x00000000011cdc84 testing::UnitTest::Run() (toolchain/build/stage/bootstrap_compiler/unittests/ExecutionEngine/Orc/./OrcJITTests+0x11cdc84)
#12 0x000000000070e998 main (toolchain/build/stage/bootstrap_compiler/unittests/ExecutionEngine/Orc/./OrcJITTests+0x70e998)
#13 0x0000ffff955f0d64 __libc_start_main (/lib64/libc.so.6+0x20d64)
#14 0x0000000000757770 _start (toolchain/build/stage/bootstrap_compiler/unittests/ExecutionEngine/Orc/./OrcJITTests+0x757770)
--
exit: -11
--
shard JSON output does not exist: toolchain/build/stage/bootstrap_compiler/unittests/ExecutionEngine/Orc/./OrcJITTests-LLVM-Unit-2503282-80-82.json
********************
Testing: 0.. 10.. 20.. 30.. 40.. 50.. 60.. 70.. 80.. 90..
1 warning(s) in tests
********************
Failed Tests (1):
LLVM-Unit :: ExecutionEngine/Orc/./OrcJITTests/80/82
Testing Time: 230.30s
Total Discovered Tests: 111932
Skipped : 209 (0.19%)
Unsupported : 40103 (35.83%)
Passed : 71547 (63.92%)
Expectedly Failed: 72 (0.06%)
Failed : 1 (0.00%)
FAILED: CMakeFiles/check-all
```
I've started `OrcJITTests` in gdb:
```
[----------] 1 test from JITLinkRedirectionManagerTest
[ RUN ] JITLinkRedirectionManagerTest.BasicRedirectionOperation
Thread 1 "OrcJITTests" received signal SIGSEGV, Segmentation fault.
0x0000aaaad29ad650 in llvm::orc::InProcessMemoryAccess::writePointersAsync(llvm::ArrayRef<llvm::orc::tpctypes::PointerWrite>, llvm::unique_function<void (llvm::Error)>) ()
Missing separate debuginfos, use: yum debuginfo-install glibc-2.28-251.el8_10.5.aarch64
(gdb) bt
#0 0x0000aaaad29ad650 in llvm::orc::InProcessMemoryAccess::writePointersAsync(llvm::ArrayRef<llvm::orc::tpctypes::PointerWrite>, llvm::unique_function<void (llvm::Error)>) ()
#1 0x0000aaaad247042c in llvm::orc::ExecutorProcessControl::MemoryAccess::writePointers(llvm::ArrayRef<llvm::orc::tpctypes::PointerWrite>) ()
#2 0x0000aaaad29b0d00 in llvm::orc::JITLinkRedirectableSymbolManager::redirect(llvm::orc::JITDylib&, llvm::DenseMap<llvm::orc::SymbolStringPtr, llvm::orc::ExecutorSymbolDef, llvm::DenseMapInfo<llvm::orc::SymbolStringPtr, void>, llvm::detail::DenseMapPair<llvm::orc::SymbolStringPtr, llvm::orc::ExecutorSymbolDef> > const&) ()
#3 0x0000aaaad24c3ff4 in JITLinkRedirectionManagerTest_BasicRedirectionOperation_Test::TestBody() ()
#4 0x0000aaaad2e31fa0 in testing::Test::Run() ()
#5 0x0000aaaad2e333f4 in testing::TestInfo::Run() ()
#6 0x0000aaaad2e340b8 in testing::TestSuite::Run() ()
#7 0x0000aaaad2e43f20 in testing::internal::UnitTestImpl::RunAllTests() ()
#8 0x0000aaaad2e438c4 in testing::UnitTest::Run() ()
#9 0x0000aaaad2e18ccc in main ()
(gdb)
```
The `llvm::orc::InProcessMemoryAccess::writePointersAsync` isn't very long:
```
void InProcessMemoryAccess::writePointersAsync(
ArrayRef<tpctypes::PointerWrite> Ws, WriteResultFn OnWriteComplete) {
if (IsArch64Bit) {
for (auto &W : Ws)
*W.Addr.toPtr<uint64_t *>() = W.Value.getValue();
} else {
for (auto &W : Ws)
*W.Addr.toPtr<uint32_t *>() = static_cast<uint32_t>(W.Value.getValue());
}
OnWriteComplete(Error::success());
}
```
The failing instruction on AArch64 is marked with `=>`:
```
Dump of assembler code for function _ZN4llvm3orc21InProcessMemoryAccess18writePointersAsyncENS_8ArrayRefINS0_8tpctypes12PointerWriteEEENS_15unique_functionIFvNS_5ErrorEEEE:
0x0000aaaad29ad620 <+0>: sub sp, sp, #0x20
0x0000aaaad29ad624 <+4>: stp x29, x30, [sp, #16]
0x0000aaaad29ad628 <+8>: add x29, sp, #0x10
0x0000aaaad29ad62c <+12>: ldrb w8, [x0, #8]
0x0000aaaad29ad630 <+16>: cmp w8, #0x1
0x0000aaaad29ad634 <+20>: b.ne 0xaaaad29ad65c <_ZN4llvm3orc21InProcessMemoryAccess18writePointersAsyncENS_8ArrayRefINS0_8tpctypes12PointerWriteEEENS_15unique_functionIFvNS_5ErrorEEEE+60> // b.any
0x0000aaaad29ad638 <+24>: cbz x2, 0xaaaad29ad6c4 <_ZN4llvm3orc21InProcessMemoryAccess18writePointersAsyncENS_8ArrayRefINS0_8tpctypes12PointerWriteEEENS_15unique_functionIFvNS_5ErrorEEEE+164>
0x0000aaaad29ad63c <+28>: lsl x8, x2, #4
0x0000aaaad29ad640 <+32>: add x9, x1, #0x8
0x0000aaaad29ad644 <+36>: ldp x11, x10, [x9, #-8]
0x0000aaaad29ad648 <+40>: subs x8, x8, #0x10
0x0000aaaad29ad64c <+44>: add x9, x9, #0x10
=> 0x0000aaaad29ad650 <+48>: str x10, [x11]
```
Where `x11` holds non-null value `0xffffba960000`.
I've tried two different RHEL8 machines and an RHEL8 docker container installed in one bigger modern Linux host on which this test case passes.
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWt9T67az_2vMy048svwjzgMPgSQtvRw4A7TM3JeMLMuJiiK5kgzk_vV3JDk_CfS0p1_a6XwzwTG29Nndj1brXVnEGL6QjJ1H-UWUT85IZ5dKn7fkRZnVgOjVWaXq9fmNsmA6zWCpXsAq0IQbBnbJDXBjOgatVi3TYh3Dw5LB3Y_T6xJqbqxWwA381nHLQIkapHohNVkbiHC5ZhaWxAARAuySwYLSCF8CXZEn5k7atV0q6aTIhQEuwXRNwyln0sIz04YraZwyVcdFDdfXv3yJ8Mh15NYJNZYLAS-8ZmINnWG1u0Vk7WRp5loQkIzV0CgdMLhceBh_hVuH7fRqFZfWa6kafyEqEF0y-jQgQkQFAsuMNUA0g9bxKRcxjGUNK2Vs32UFtYrhVrINREO4cOKUZI5CmL4y2lmu5FQuuGQRnt1qGuFZHM5-unp4cEIiPCuRO-AYrqxHMUAMmI4uo3QcIf8tUP9F4xtlWZSO4SEMlVcVzJLoGsrEKVPi2HXJL6J08tE3n8BdJ6XTGfcGN1qt-n_AuBE2PdRg-3HdfhCqIiI0Y_KZayVXbggNs4OuPdklCa29gNvqV0btNZdPXC6uyZppx0ToBXc_34D_uF6nW8aXgvDVNbFswhouWf3IyNP9elUpYXqU8Ln9nz-J4nwZwco47_tTxmwAwCpLRA_zO0g_XT04mDtWc82o85wvRJLF--x82CG-IIbTvXu3LdPEnURoDBFOEaBXtP0wxEYjBEI8r5zXpWOzNuHkq-bS3ltCnx40oSzC5a6RJi9zZaxmZBXhwk9UaSM8cuZbpQRdEi4jPPNzMcIzY8nCzYRKKWusJu2cqlXLBdMRnnWSW9tPiW-ePBfoNageOHaGJUeG0ZKcNOyuk_d8IYn4kchaMG0iXH6-7k67ne74WPcRo3CgZYTLnuNw2cS0baN0jPxfQEl7lKZpmlFOGjQkyJkluOxeB8-1UbFRceI1GO6Lzw7E04o0Kd2jTmkaTq7kV60oM-YLWym9HlN3Hm69aG7ZVxdfmTZjs5b0wGPGWpP1HWui9PIErm2pXbds43kB5dEhRunUudeuTyf5bx2bN5303h2ll8-K13AgbKq10s461_lzBzZwt2M2P2K2adLyFLNHc5pUgoWY1E_tft71tw-s3ceYrAWv-im5azFh0rAvpD1NfpBzbzWXi69WH3bdtgokKB1aT1hzWsSVbNQ3i3Ej92aAa2YJF4eoXwnXf63y6TRKp0CVNNbT9dle4vxg5yXFgZeUCNdZ-XGYn78b5uf-seHNdmcXql7_DQEu2LCzcLhvYZJUw7qh_hnI5WKn7DZA7zSOW6JtnCRF4i4sXBeXrMWUHgW_8lACHVKSvZUQ_PONlE_jpVdsR8zoSG3K0hNq33c-Fr7PTvoBO-7ZiI7E1Dk74t_HXEn6mfez5NbztWrFVu5YiN6Sv4M3p3KfUeE0SY4NouURbxsT_ubhdort1D580A9dClPCinD5qWoFuTutDhOHvEF1kcF8LnhF58YSbecbFSM8E7wqsvBLXT5ReEjs-uwQDzOKYT4cDhEErM-11EveJuKDQYTG7JU7p4BBkmwuhTrqp_vbG1CdbTsLtWIGpLLAXrn3IfgMnQeuaB04zx3gHKW4xIMSDUoc_2p8Ah_h7_giH0rC_AAUx5C4A3aH1B0yd8jdoXCHoTuU7jBCcRz4S-CFaFc6Rrh0VZKr5YOJ363bjHDBavA0OBdJfALn7gBsWYEwmf94kd3XYVsK4IGvfDmNUxSnyPQ3XdUGE26oemZ6o41rliTJKMVemfsn3rashu3H3QfAyIcWFCejCOd9gIefpenaVmnLat8uQwlKXbs0j8t0r-FXYsw-qG89TPJs6FoXaTzCe62nry2jltViDYG3oAMMcdABFXuNe2aPFQZI-sZo23g2vrqeTtz9yy_kic24YI7E3RrJ4ZpEhMZXER4-M_Az29lYoH3-C-Q8ZFFXJ5c0_pKy-PsqYjfoS81I7cnAB76DQTPK-DOrwfiaC-6vfrif_vCLyzLv2WLFpPU40JBOWDdFQtAjhJAaj0hd5N7-f1MlFfzkC_erY2BYSzSxDGpWdQsuG2WckM74ubXuVrsbAy6NJULAwj04BjjG5QDnScxEOU9QnMeEaLosMh9JSucyeASVDc-TTfry72fWL2QcWJsNUYbpO9ZuKpve5kslrVZ9xvY7BPx1th-qjw_VH1WoRu8N1n_L3s8ue-FE3bsduvTI82jaNJkbuv9ELbqVmh1KZWnSELTJLH6vPtyi5McoaRp0_9YacItUHCNlqCpPIr1Xlm2hhkdQWdrgt6b9qdJrK6N8I6Okbw3_oBraIo2OkJKSUh94dtn_aD88v80GHsI7le8Oyy5vMDLCQ_9-aA1CBTvepBA-sP7RkO-yor2A92F0g0f_RPP_3jHTCTuTcCv9_5dq1QpmmedxeOGTLd44oq7M2D_MLrjdvwn-fVSES9JZBREuHn0u9mg2qZrPzvD4MR7XtY6tcnM7vey4tEU2d5XT2AeOMHLpBB7jX4joWLxg1p_0Y5QGcdFwAkwY9s3yT4tO8SnRxuU-dE6J86ltu9DmHbW2mkXDSRhKeEtlGZ6MYc2-C0N52L3v_dbzNq_iXKahOx-KQEkYh7EAbmBF9BOr4YXbpfNT_0Zs6k9O-NakW7WgGnCZ-aoSTANVNfMUbh7tMP_fm8x5e6o0xclJR0zKt044vbmflxsXvLq5R_Ny44UJ3vfA6dQ1TfKjlOJq9nxzP889VdPpdNoXSsdJEkYQpZeuEPYLnsHBTFeF39Y5dji6FOsVo-Akb1CyHiXbR7Gt_30NL2pfU-Rx8ostYFJE-eQdxLJHLPcQSV1v0PaUSt5TivYQCd5hiFp7217KXplX1AOVvS7HMOmGoaTYwdBVsK2H8Wqc1iLdUIM3DFexZOBb7uWqXtd_iqvgC-fvU4jwLMIzqGIi1-9YtxkmvDfytPq_fuAdOftm0uyfZWZSeLVPjfrGefCeAwojgmF-1IN5Ljs5zU22cZx0z_-cC3uIMCeSrfuU74Bs3Cct9p24n1lJElA2MyugRjgdlO_OrGwzZNnelDddZfYsK48m1xuMDTtZ9q5po0OMEEhPFWk90h7Pxurevq1hSRIM2o--j35vR1Qgd7dAsFSiNiCVHMhOCHh2zxV3G702TdNUZFQ42VGB4oOFCas5q8G-KKh50zDNpO03tawIXXLJjN9JQuRmq4uiTz7SS0u4ZBr6spXVLhFSkkHFFwumYaVqpiVcc9m9wtJvEJHwsuR0GXbT-JUMSkzYStLvqNgz8aw-T-tROiJn7DwZpmmZFcNsdLY8b3CJ8rpOaZrmZV4OcZKhIh2SnGS4pLg44-cY4SzBCUoKlGejuEirUVrRguCM5SNWRhliK8JF7OZhrPTizG_tOU-SUYayM0EqJozfJ4SxZC9h40-EcZRPzvS56zSouoWJMiS4sWYHY7kVfoPRbmkzn0T5xfFynL94q2mUT_wuog_Lhz2mDFv4pRTjuFSiZhr8u-uwAYlXXoY567Q4X1rb-ozNR7EFt8uuiqlaRXjms8_wM2i1-tVXjjNvpInwrGfh-Rz_fwAAAP__zUFAvQ">