<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">