[Lldb-commits] [PATCH] D64647: [lldb] [Process/NetBSD] Implement per-thread execution control

Michał Górny via Phabricator via lldb-commits lldb-commits at lists.llvm.org
Fri Jul 12 23:31:01 PDT 2019

mgorny marked an inline comment as done.
mgorny added a comment.

In D64647#1583429 <https://reviews.llvm.org/D64647#1583429>, @krytarowski wrote:

> Something that we do not cover here is that once a tracee reports a signal (like someone poked it with SIGUSR1) and we want to pass it over to the tracee, we will reset siginfo.
> This scenario should be covered by a test and we should handle it properly..
> The solution in NetBSD for passing over signals without changing siginfo, is to not calling PT_SET_SIGINFO as the default one will be kept by the kernel. Optionally pick old siginfo with PT_GET_SIGINFO and optionally change destination lwp.

How is 'properly'? Should we reject resuming with a signal when there's already another signal pending?

Comment at: lldb/source/Plugins/Process/NetBSD/NativeProcessNetBSD.cpp:354
+      if (signal != LLDB_INVALID_SIGNAL_NUMBER && signal != action->signal)
+        return Status("NetBSD does not support passing multiple signals simultaneously");
labath wrote:
> krytarowski wrote:
> > mgorny wrote:
> > > labath wrote:
> > > > Is this "passing multiple signals simultaneously", or "passing multiple *distinct* signals simultaneously". (E.g,. thread 1 gets a SIGALRM, thread 2 gets SIGIO, etc.).
> > > The former. Basically there's one siginfo slot, so you can either put a signal for whole process, or for one LWP.
> > Once we emit a single signal to all threads, it's still technically a single signal that hits the process.
> Ok, that makes sense. But I don't think that's what the code does right now (IIUC, this line will only fire if the current signal is different that the signal sent to the previous thread).
There's a second `if` on line 400 that verifies the number of threads signaled.

The idea is that we have either:
* exactly one thread signaled,
* all threads signaled with the same signal.

Here we check for the 'same signal' condition.



More information about the lldb-commits mailing list