[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");
> 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.
CHANGES SINCE LAST ACTION
More information about the lldb-commits