Message ID | 20190321214512.11524-1-longman@redhat.com (mailing list archive) |
---|---|
Headers | show |
Series | Signal: Fix hard lockup problem in flush_sigqueue() | expand |
On Thu, Mar 21, 2019 at 05:45:08PM -0400, Waiman Long wrote: > It was found that if a process has accumulated sufficient number of > pending signals, the exiting of that process may cause its parent to > have hard lockup when running on a debug kernel with a slow memory > freeing path (like with KASAN enabled). I appreciate these are "reliable" signals, but why do we accumulate so many signals to a task which will never receive them? Can we detect at signal delivery time that the task is going to die and avoid queueing them in the first place?
On 03/22, Matthew Wilcox wrote: > > On Thu, Mar 21, 2019 at 05:45:08PM -0400, Waiman Long wrote: > > It was found that if a process has accumulated sufficient number of > > pending signals, the exiting of that process may cause its parent to > > have hard lockup when running on a debug kernel with a slow memory > > freeing path (like with KASAN enabled). > > I appreciate these are "reliable" signals, but why do we accumulate so > many signals to a task which will never receive them? Can we detect at > signal delivery time that the task is going to die and avoid queueing > them in the first place? A task can block the signal and accumulate up to RLIMIT_SIGPENDING signals, then it can exit. Oleg.