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