Jlalond wrote: Hey @DavidSpickett thanks for fixing the test.
I think you fixed it the right way, but I wanted to share my understanding of how this probably happened In ProcessElfCore, we check the siginfo status of all the threads ``` if (!siginfo_signal_found) { // If we don't have signal from SIGINFO use the signal from each threads // PRSTATUS note. if (prstatus_signal_found) { for (auto &thread_data : m_thread_data) thread_data.signo = thread_data.prstatus_sig; } else if (m_thread_data.size() > 0) { // If all else fails force the first thread to be SIGSTOP m_thread_data.begin()->signo = GetUnixSignals()->GetSignalNumberFromName("SIGSTOP"); } } ``` So in our case, I've changed this behavior, where `siginfo_signal_found` will always be set to true if we've extracted any bytes from the PT_NOTE even if we can't use them later due to a lack of a platform class. Because we passed the siginfo bytes check we never populate the `signo` from the PRSTATUS Then in ThreadElfCore I think we'd fail to calculate stop info because we don't have a valid SIGNO. I think a few fixes here: Currently, we set the stop reason even for `signo = 0` so you get a confusing stopped with signal 0 in LLDB. We should always stop for ThreadElfCore, but only make stop info dependent on the actual siginfo. This same infinite loop also can happen for Minidump, and I haven't had time to fix it. I think in general we can wrap all of this into a nice postmortem thread and have the postmortem thread know it should always stop, but optionally get the signal description. CC: @labath https://github.com/llvm/llvm-project/pull/142143 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits