<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=http://email.email.llvm.org/c/eJy1Gdtyo7jya5wXlSku5uKHPNixk0ltHHuDs1PnySVAxJzByCsJT7Jff1oSYHBwnMzOoRKQUavv3eoWEU3eru9TlOdJhDKOSk4SJCjCQuB4K0diS9AeM1IItGc0JpwP7BuUUobIK97tcyKBYOaQJQRhFOH4h2A4JhJKrdWL0M8sz1GKsxxGYos43RFUFoBHlAUWBHG5nqQpiQU3BuZsYE70fQ1IGOFlLjja4gNBtMjfUERIgWjECTsAxwpleL9CpMBRTpIOgoFn6r-4-m07WRHnJdAbODdcJBk1tgNn3jdbFhkAnJ3m2UuB8_PTgmXFywfTSZ5F7Wl1P9AsQRrzZouLJCdsYAcZGEC-LHcDe1yB-1M9QHDtgZRIAXBg22CA_Z7USNDAdhMDYf4DmNGWbpmsMZhhGAP3poDl0nRHUs60zZwkFW8xA6STmO52wB-IMkOPzw8PDagEwrzFkVeBSsxAQPEwjOQQAc3jInnBy-ES7j4nQgDHHMEA8bddRHNuaAMPyasgDGQb5pT-KPfgWDkHl_PPo6QSZe2MlXsP90o3l9dFAuE8vwz3d5kJeGgdnsJIE4JCX4jYZ4lSy_gI0q_pLJXr-BsXBGwRNFocS51LtQ-tDhZ5pY3ewb8IY5XOYxCgsb-MQ5I05u4jnTJCOiSPMP6sDSwdc4ezoi1RxzMhCspYOS-ORUYLBI-Oq-zIDkysHUXOAcOm9sF_CJWCqJfjfj5hzuC4DhTli4DmJHza1Bo-AHF4f7eePy20imraypV7aTGcSS87LusFIqJkBUjwXl91ImovGSKZfnFZxFuI2JTRHVoTtsuAfclMPdb5M2aYb1G13J3Wk0PbBA80raHlD63Ach3TyPbc-CfbD9wZ8LsVYs8HDqSfW_h7gWRZRgZYFn7k-aF-DCE6_kukDm5TcA_I87d-EDjByIXRJ0jVxu-RKJPLbbUf1DsL_kEgDlFOwSdFtlP7hcrsOjclZQywBcqKA84hH3b2FZl0AFcB-0Hx0qvbkwxouZ_Lf1WSDiSQjLKvp6BTDO8zjuX7rqfhVtWkegVxQiXPNYoJiMgIhvRqO5YKB5gH78IcQki6eSUbOGO4Xq7akYthb4VV4IITZL6mJ1e1rWIGmQgpGOD3kcJ-TuJSSNnQDvSfE0OpQHPV2VEnLN5mAlylZESpRlCJ5r3-qrz57yT6nDwtqioLn4-4WSl35Y4zblt-AE7FT8oLcJeIyPjpQypVvtnQPSzQSR7Bpq5T9uYHeAjJjeQNXqmsbU-RZQKcOzVffeDdc_1kFJm2jNMGm4pJoOZMAI0epNVTkrmF4FTS1lDrn1lBUEwLDrHrScWqnUaNPsB1A5qXeXCW8T3lmU6JH66QlCdxXQN-ALiUbOb4RcGVhbQrqFHvf7WWHh5m01ontjWulGJZZkosexR9VSO3lD2Bb_0OxXS4P8KFO_Dlv8DrKbuHwhcKOFkIyeLNnpyRaxS0xEpSc2SeEWvOGGVLpotC_WqzsfQAatC_S7LZCzl9XPKdZSpYF2RH2du0hNKZ6aA6RZCQFEP5vElITgS5jMSZo_ofUoQyevn6mWUXlK9yvbx1vOITbyNK8-OzV9Ou29J0QOzEP6PpftblTCVrmGfxpfj6OvO9TDtmh2nfJSdMJ9EGqrkDFuQYgKGuBo8hTGZY4Nr-v4ntXnYtv6VkPCbOOL3A7zKSBYVKWOr3HRELtbWEexJnaRarBMSr3N0jK4D9suLfozzSfsgqlL2CjlthGzmWH5zm537EnXGfSEf6LaF6OfBtp6VqK7Vd51MsKLlqVYeQnkjyVX76MghXmJoUdE78eZNbzxlT8lfTmvxbWpNjeE0uRJplBy2bYjuwRsEFheoCqVHmkulg-7o66-z1fkEosCj5-e0Dqu-WI6Z-Or7kBbO3Au-y-IFiaP1mmEEKqA1QJFoizeWt3MTwC7kvUtorzFlMrWXe--R8ThQvaOWOOEjNcfKrojzvEwBSGQTnU2hKWEb4LbQZj-RnwxzX_e-Jbx3U7t3rV5-Rt89doSagkMZ-Haveac-nAtexWpob22nadYIOiQWOl2FFmt4XUNThXJG6JSLe6ha91zwjv22eOPVP989PSzbLkokqq89Ts2yzTY1E5FIwVp1StetRee4oyEUyI9trxQ92cHIpkXfoaPwVNdinvtWnCQqSsJSy3aQ-SvhyIpsfCBSjH1neaRc1wP4ouRT-HfY1uys9r6n9X9i0nI6WbfNr1nwqi4pHmQ7JWrWIQOWjbO5YHZKeF42-QrKXnjx2PZ-_bKtN0E1s9wLBb5SLRyhvDhWFKeb1xqJ-691kDb3tnuZQqF3kwDLbJQG2vJMSFyyoEG-4wEy870Wr6ZNmtOlQdDcajH3idUX7FazuCVIncI4NXW9Trnv324RE5Yvqupk-4VFkOeL7rCjqrv1m9QydOyjEHIAZmra8D_nqfiZluFkuFpPHWX0S60oMaH2_mFcvnPW3avD9T_VYLZ_WaDFfyLer56c7iWOxekKru6cVvFFow_VkrRBMl8twHdbnrxX-DSCvRsv1t6cQPcs1t5PnBw16s_yuoBfhXTh_XOvR0_zmLxiF_wmnoeIWRovJjWTuJvxe4V9N7ub3j4DkfvYwly9Xy-_zJy2vPEnytTs2_ICeDBOZNmjKHhmOjxxQtCVnTHmzR_I-9rzgD3gzVUvUQ59K6TsrtfrlsT_0sFMLrNkQQIBfXs0TLtcECoFpuxUPvqdGlhNUa1yz4c-qoRygVM0G8oSoYqYh0xboKC9gbLsNGo8NwGc6IK8J8jpo1JVXcRD49h_ovbwB0hr8NXk9eYyhLr8S0xvVa-xacAQNRSNILa9vjd2z8kqBer07VB_gOKKpigvxk9bnjURmOtQJDHcqvcIQr-J3HAr7ngKoEDbn_u60ZYrfRsvtZoYuSXW_Sq6dZOyM8RUuxZayayjIMCsOVyXLr79MPeO8VORdx3ZHV9tr24psy7VIFCWj8cgKoihwkwQTM0oCL42dqxxHJOfXIP_AtgvyEykU8uOKO7v69xxk1_LY3bQsH3pwzxkZpmclxIHaaRRh4o3jwcgkO5zlhsRjUPZyxa4VSqk0mMyh7-LHScxVw0wUw8ChyEROrptPQ7z7Cfj959_6e2ymj-D191edj1V2Lrk-z2f6i4WMpPoDgoH3-ysl3rWS7X9-8OJl>53254</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            lldb fails to attach to parent process, results in hang with 100% CPU use, or crashing Terminal.app
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          torarnv
      </td>
    </tr>
</table>

<pre>
    If lldb is used to attach to the parent process, for example to provide a backtrace, the process will fail with some unfortunate side effects.

The results have only been observed with SIP enabled.

```c
#include <stdio.h>
#include <unistd.h>
#include <signal.h>
#include <string.h>
#include <stdlib.h>

void signal_handler(int signum)
{
    printf("trapped signal %d. asking lldb to provide backtrace...\n", signum);

    char *command = NULL;
    asprintf(&command, "lldb -b " \
        "-O 'settings set symbols.enable-external-lookup false' " \
        "-o 'process attach -p %d' " \
        "-o 'bt all' " \
        "-o 'quit'",
        (int)getpid()
    );

    if (system(command) == -1)
        fprintf(stderr, "calling lldb failed\n");

    free(command);
}

int main()
{
    struct sigaction act;
    memset(&act, 0, sizeof(act));

    act.sa_handler = &signal_handler;
    sigaction(SIGTERM, &act, NULL);

    raise(SIGTERM);

    return 0;
}
```

- If launched from Terminal, Terminal will crash 
[Terminal-2022-01-17-181530.ips.zip](https://github.com/llvm/llvm-project/files/7883845/Terminal-2022-01-17-181530.ips.zip)
- If launched from iTerm2 the attach takes a long time, only to produce an invalid backtrace, and then hang
```
trapped signal 15. asking lldb to provide backtrace...
(lldb) settings set symbols.enable-external-lookup false
(lldb) process attach -p 17756
Process 17756 stopped
* thread #1, stop reason = signal SIGSTOP
    frame #0: 0xffffffffffffffff
Target 0: (No executable module.) stopped.

Architecture set to: .
(lldb) bt all
* thread #1, stop reason = signal SIGSTOP
  frame #0: 0xffffffffffffffff
(lldb) quit
```

During the attach the backtrace has been observed to be:
```
    __open  (in libsystem_kernel.dylib) + 10  [0x7fff657d4b02]
    llvm::sys::fs::openFile(llvm::Twine const&, int&, llvm::sys::fs::CreationDisposition, llvm::sys::fs::FileAccess, llvm::sys::fs::OpenFlags, unsigned int)  (in LLDB) + 219  [0x110fe124b]
    llvm::sys::fs::openFileForRead(llvm::Twine const&, int&, llvm::sys::fs::OpenFlags, llvm::SmallVectorImpl<char>*)  (in LLDB) + 48  [0x110fdf040]
    llvm::ErrorOr<std::__1::unique_ptr<llvm::WritableMemoryBuffer, std::__1::default_delete<llvm::WritableMemoryBuffer> > > getFileAux<llvm::WritableMemoryBuffer>(llvm::Twine const&, long long, unsigned long long, unsigned long long, bool, bool)  (in LLDB) + 55  [0x110f8e2d7]
    llvm::WritableMemoryBuffer::getFileSlice(llvm::Twine const&, unsigned long long, unsigned long long, bool)  (in LLDB) + 30  [0x110f8e75e]
    lldb_private::FileSystem::CreateDataBuffer(llvm::Twine const&, unsigned long long, unsigned long long)  (in LLDB) + 175  [0x110a9e39f]
    lldb_private::ObjectFile::GetModuleSpecifications(lldb_private::FileSpec const&, unsigned long long, unsigned long long, lldb_private::ModuleSpecList&)  (in LLDB) + 98  [0x110b31782]
    lldb_private::Module::Module(lldb_private::ModuleSpec const&)  (in LLDB) + 723  [0x110a1f253]
    lldb_private::ModuleList::GetSharedModule(lldb_private::ModuleSpec const&, std::__1::shared_ptr<lldb_private::Module>&, lldb_private::FileSpecList const*, std::__1::shared_ptr<lldb_private::Module>*, bool*, bool)  (in LLDB) + 1288  [0x110a28148]
    lldb_private::Target::GetOrCreateModule(lldb_private::ModuleSpec const&, bool, lldb_private::Status*)  (in LLDB) + 883  [0x110bf7f93]
    lldb_private::DynamicLoaderDarwin::FindTargetModuleForImageInfo(lldb_private::DynamicLoaderDarwin::ImageInfo&, bool, bool*)  (in LLDB) + 685  [0x110c8f09d]
    lldb_private::DynamicLoaderDarwin::UpdateSpecialBinariesFromNewImageInfos(std::__1::vector<lldb_private::DynamicLoaderDarwin::ImageInfo, std::__1::allocator<lldb_private::DynamicLoaderDarwin::ImageInfo> >&)  (in LLDB) + 531  [0x110c92ff3]
    DynamicLoaderMacOS::DoInitialImageFetch()  (in LLDB) + 647  [0x110c8cf77]
    lldb_private::DynamicLoaderDarwin::DidAttach()  (in LLDB) + 120  [0x110c8ebe8]
    lldb_private::Process::CompleteAttach()  (in LLDB) + 1426  [0x110ba3ad2]
    lldb_private::Process::AttachCompletionHandler::PerformAction(std::__1::shared_ptr<lldb_private::Event>&)  (in LLDB) + 355  [0x110ba34d3]
    lldb_private::Process::HandlePrivateEvent(std::__1::shared_ptr<lldb_private::Event>&)  (in LLDB) + 136  [0x110ba20e8]
    lldb_private::Process::RunPrivateStateThread(bool)  (in LLDB) + 1316  [0x110ba66b4]
    lldb_private::Process::PrivateStateThread(void*)  (in LLDB) + 21  [0x110ba5d25]
    lldb_private::HostNativeThreadBase::ThreadCreateTrampoline(void*)  (in LLDB) + 103  [0x110aa16d7]
    _pthread_start  (in libsystem_pthread.dylib) + 148  [0x7fff65897e65]
    thread_start  (in libsystem_pthread.dylib) + 15  [0x7fff6589383b]
```

lldb/debugserver then starts spinning the CPU at 100%:

```
PID    COMMAND      %CPU  TIME     #TH    #WQ  #PORT MEM    PURG   CMPR PGRP  PPID  STATE    BOOSTS         %CPU_ME %CPU_OTHRS UID  FAULTS    COW     MSGSENT   MSGRECV   SYSBSD    SYSMACH   CSW       PAGEINS  IDLEW   POWER
17757  lldb         100.0 02:24.37 3/1    0    24    9668K  0B     0B   17756 17756 running  *0[1]          0.00000 0.00000    501  8025      1765    138       50        1125      356       5831+     0        0       100.0
17758  debugserver  99.5  03:04.33 4/1    0    28    872K   0B     0B   17758 17757 running  *0[1]          0.00000 0.00000    501  619       78      64        28        317       106       7195+     0        0       99.5
```
Samples of the two processes: 

[lldb.txt](https://github.com/llvm/llvm-project/files/7883876/lldb.txt)
[debugserver.txt](https://github.com/llvm/llvm-project/files/7883875/debugserver.txt)


</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy1WVtzozgW_jXOi8oUd_BDHuzYSacmjj3Bma59cgkQMdsYGEm4k_n1eyQBBgfHSU8vlYCMjs79fLoQFvHb9X2CsiwOUcpQxUiMeIEw5zjaiRbfEVRiSnKOSlpEhLGReYOSgiLyivdlRgQR9BzSmCCMQhz94BRHRFDJsWoQ-plmGUpwmkGL7xAr9gRVOfDhVY45QUyMJ0lCIs60kT4f6VN13wATSliVcYZ2-EBQkWdvKCQkR0XICD2AxpJlcL9GJMdhRuIeg5Grq7-o_m1aaR5lFcgbWTeMx2mh7UbWYqi3ylMgONvN0pccZ-e7OU3zlw-64ywNu93yfijSGCnO2x3O44zQkemnEADxstqPzElN7s1UA8FVgiieAOHINCEAZUkaJmhkOrGGMPsByqhId0LWBkzTtJFzk8NwEbqjKGvWVU6IinaYAtNpVOz3oB-YMkePzw8PLakgwqyjkVuTCs4gQOowDkUTgczjIHHBy_EK7h4jnIPGDEEDsbd9WGRMUwEek1dOKNg2zoriR1VCYmUMUs47z7IQLJtkrNN7XErfXB4XcoSz7DLd31XK4aF8eEojQggOfSG8TGPplsmRZNjTaSLGsTfGCcTCb704ET4Xbh8bPS7iSlq_Q34RSmufR2BAG39RhyRuwz0kOqGE9EQeabx5l1gk5h6nedeiXmZCFVSRTF4c8bTIETx6qbInewixShTRBwrrKgf_IYUwRL6cDOsJfRrDTaHIXAQ2J-XTldbqAYyD-7vN4mmpXNTIlqk8KIviVGTZcdggEeEVzcGC9_5qgKg7ZIwE_OIqj3ZQsQkt9mhD6D4F9YUyTVvhZ0Qx26F6uDNrOsemDhmoG2PDGxu-4Vi6lpZM-yctR84c9N1xXrKRBfBzC38vAJZVqEFk4UeWHZrHGKrjv0T44DaB9ACcv_V83_JtB1qfENUEf8CiVAw35XzQzCz4B4E6RFkBOcnTvZwvJLIrbIqrCGhzlOYHnAEe9uYVATrAK4f5IH8Z9O0JAhrO5_CvBmlfEIkq-zoEnXJ4jziG5zmuolvXnfIV1EkhdG5YTMFESjDAq2kZshygH7ILMyghkea1bZCMwWa17lYuhrkVRkEKTpH-mpxc9bSKKSARkjSg72MB8zmJKi5sQ3vwf0Y06QKlVW9GndJol3JIlYoS6RpeCDbv_Vfj5r-z6HP2dKRKFD5fcfNKzMq9ZNx18gCSip0sLyBdQiLqZ4ipcPl2W5QwQIE8gkldQfb2B2QIybT4DV5J1DZnyNCBzpnprx7o7jpebIe6Keq05SZrEqRZU2CjGkn9FGJuoTiltQ3V5meaExQVOYPadYVj5UwjWx_wugHPCxycp6wsWKog8cMRQvI0ataAHxCuhJoZfpF0VS7iCm5U81_jpYeH-azxiWlMaqcYhp4Qw7TDr3rktqBPkFu_wzE97Y90wR5y-S_I-oLew8IXFnBiISQWb-b0jF223zErTnRbP2PWgtKCrqhaFKpX262hGrAG_bsi25KL7uOQ7zSVxbok-4K-zSpYOlNVVKcMYpJgWD5vY5IRTi4zsRao-QeIkEGvXj8z7ILzJdaLWy8rPvE2LIrs-Bz0tON0PO0TM_bOeHpYddFT2xpkaXSpvr6u_KDSlt5T2nPIidJxuIXV3AFzcizAQK0GjyVM5pjjJv6_Se1BdQ2v42Q8IdYkuaDvKhQLCglY8vcd4Us5tQQlidIkjSQAsRq7B2wFsl92_HuWR9kPac1y0NBJp2xDy_D8U3weZtxrD5l0lN8xalADz7Q6rjYS07E-pYK0q3F1APBE4q_qM4QgTHJqIeic-YsWW88FU-jXyJr-W1nTY3lNL1SaYfqdmGLTN2z_gkPVAql15oqqYvu6Oxv0ej8g4JhX7Pz0AavvTiImXjK5lAXztxzv0-ihwLD1m2MKENAEII-VRUrLWzGJ4RdynyfFoDFnOXWGue_B-Zwprt_BjshP9En8q6Y8lzEQSQTB2Qw2JTQl7Ba2GY_kZ6scU_vfk9w6yNl7MK8-Y-9QusKaoAAY-3WuaqY9DwWOZXQ8NzGTpJ8EPRFLHK2CWnRxn8OiDmdS1C3h0U5t0QfDY3vd8ESJdzp_ftqyeRpP5bL6vDTD1LvSSEguFWO9U6pnvUKcO3JyUYxtup36wRaOLwF5T47iX0uDeepbc5ogKQlNCrqfNkcJXwayxYHAYvSjyFvdRQ2ob8eXyr-nvlJ3rfqVtP-LmobV87Kpfy2aT1Ve6yjgkGzkFhGkfITmltET6bqh_RWRg_LEset5_DKNrkAnNp0LAr8VjD_C8uZQS5hh1kws8reaTTawty2LDBZqFzUw9O6SABvuyRIXIigZbxnHlL_fi9bdJ5vRdoeidqP-xCNu37Rf4eqcMLV867ihG9yUq737bUzC6kXuuqk64ZFiGWJlmufNrv1m_Qw7d3CIPoIwtNvyIebr-7mw4Wa1XE4f581JrCM4oM39clG_sDbf6sb3P-VjvXraoOViKd6un5_uBI_l-gmt757W8EayDTbTjWQwW62CTdCcv9b8t8C8bq02354C9CzG3E6fHxTpzeq7pF4Gd8HicaNaT4ubv6AV_CeYBVJbaC2nN0K5m-B7zX89vVvcPwKT-_nDQrxcr74vnpS94iTJU-nY6gN-0nSkm-Ap09YsD1ngaEP06OJm2uI-cV3_D3gzk0PkQ51KqTutlPvFsT_sYWcGRLMVgIC_uNonXI4OEnzddGodPFe2DMuvxzh6q5_RUFkgqe71xQlRrUwrpmvQ0V7g2E0bNJlowE-3wF4d7LWQ3bdXauB75h_ovb0-Uh78NXtdcYwhL68207WbMWZjOIINRWtIY69nTJyz9gqDBrM7kB_gGCoSWRf8Z9GcNxKBdKhXGM5MZIXGX_nvOBT2XElQM2zP_Z1ZJxS_TZbTR4a-SHm_iq-teGJN8BVPeUau268crP818_2XzObTYqpOk9WnRAUtEmgqpo6mqTp8F0nRnIVruCyvKppdf9m8lLFK2udYpmNf7a5d350kYajbpmnYLjGwZ-NYN0zPJACgoX6V4ZBk7BocPDLNnPxEkoX4euPMr9JrcSqvG4YHW3TXsjXdNWJiwdLKDjFxJ9HI1skevKEJPbSCvlzRa6mS8Cl0ZrAtY8dOzOR-mkhxwB9XfFfQa1jkYpofrqToa6n6_wD4CcwE">