<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/126611>126611</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[orcjit] Creating a orc::LLJIT on multiple threads fails with UNW_ENOMEM error on Darwin
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
cianciosa
</td>
</tr>
</table>
<pre>
I have a situation where I'm trying to create JIT c++ code from multiple independent threads.
Minimum test case:
```
#include <iostream>
#include <thread>
#include <vector>
#include "llvm/Support/TargetSelect.h"
#include "llvm/ExecutionEngine/Orc/LLJIT.h"
int main(int argc, const char * argv[]) {
std::vector<std::thread> threads(std::thread::hardware_concurrency());
for (size_t i = 0, ie = threads.size(); i < ie; i++) {
threads[i] = std::thread([] (const size_t thread_number) -> void {
llvm::InitializeNativeTarget();
llvm::InitializeNativeTargetAsmPrinter();
auto jit_try = llvm::orc::LLJITBuilder().create();
if (auto jiterror = jit_try.takeError()) {
std::cerr << toString(std::move(jiterror)) << std::endl;
exit(-1);
}
}, i);
}
for (std::thread &t : threads) {
t.join();
}
}
```
When running the above code, I get an error reported from multiple threads
```
Could not register function via __unw_add_find_dynamic_unwind_sections, error code = -6541
```
It appears this broke some time during the week starting on February 3rd but I have not been able to narrow it down to a specific commit. I have only checked this on macOS 15 and 14. Additionally llvm was built from top of tree `main` branch.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJyMVV1v4joT_jXmZlQUnELhggsoRWK1H6_UfbWXyLEHMm1iI3sCy_76o0kILe0e6VgRMuP5eJ6Z8dikRHuPOFfjpRqvBqbhMsS5JeMthWQGRXDn-QZKc0QwkIgbwxQ8nEqMCBulH2rgeCa_Bw5gIxpG-LL5CVbppdJLsMEh7GKooW4qpkOFQN7hAb1Dz8BlROPSUGULlS2-kae6qYExMViTUOUiVpPs8mULpXPytmocgsofKSSOaGqVP30661z_7eSIlkO8nNweal1Vx1rp9XNzOITISq9_mrhHfsYKLQ9LpfW_mTz9RttIdp78njwqvf4RrdLrr1-_bH5eLbMFeYbakFd6KlsT91bpR7DBC-vSRFB6IeJjVxWlZ6AelipbAAAkdpKVfNGzeLxKroz7tCo9_XQo-9JEdzIRtzZ428SI3p6Vnio9ky_vQ-2CQJkm-oNbBgKVryATqITtvi-eKFzM82WrJyrtvuuCWwayeoDjJanxqvX2EamedvQFQpebC5DufOubusAoru-E8jGQuwSROG1NWncbT0ymoj_43TAdsavnFe9_UV6k-n-RPEu4N7N3dGSZhgO8EG85nltCb15DtN2mbYVlQ5XrXQ27O3MD592indDvXWOMUpJ81ccZsnnFJ5Fey_ch0f26ZtdiFBePUiQOzxzJ79_3SR2OgqaP1jvtDK5a6F31Ga0s_E2S3LvRGx_1sLpNlwikjW4od1rv--62IUDpCYPKF2_dfSXLw5fQXqi_eLz8vp8h2eJXiR5i4307uUoEU4QjttNKkG1gjwzGQ5fxiDIL0H0YZD2OW--Poakc-MAQcU-JMcKu8bYdm0cysN02_rQ1zm135N3Wnb2pyYpQ_iZsNZOg6IK3E1RqfjcZ348-U9kwmMMBTUzAJSUoYnhFSKFGYKoRXBN7kifEV0hsIoskeFhjERsTz5BHB0XDcBn1gr5A9GAK4RnAmxjDCYjBhZMXiYF0QEs7smBDXRMPe-PgqzPYEu0rug5S8FAb--MZRmMw3sHofggL50iYmqo6t1cFTiZB0VDFXZo5HCDsgCMiqEnWTsxJBkU03pbDgZvnbpbPzADno4d8pvVklM0G5XyCZpzbBz1y2YPLLOba6Ow-nyFmk2K6swOa60yPMz3KtNaj--lwZvMHdLux3rlxNjVO3WdYG6qGgmoY4n5AKTU4H-nJZDQaVKbAKrUvptYeT9CeynQfrwZxLkZ3RbNP6j6rKHF6c8PEVfvUhmhfiGW2Pcrtl2IYuB0Sbc4-NBrsDFUJTsQl_P_7r-3T9x_fnr5d2iR4WJl4Ij9oYjUvmQ9J3Om10us9cdkUQxvkmbq8Vi3OQwwvaOWVa0kkpdcXlse5_icAAP__Ae58hg">