On Fri, 2021-10-22 at 15:13 +0100, Pavel Begunkov wrote: > On 6/9/21 21:17, Eric W. Biederman wrote: > > > > Folks, > > > > Olivier Langlois has been struggling with coredumps getting > > truncated in > > tasks using io_uring. He has also apparently been struggling with > > the some of his email messages not making it to the lists. > > Looks syzbot hit something relevant, see > https://lore.kernel.org/io- > uring/0000000000000012fb05cee99477@xxxxxxxxxx/ > > In short, a task creates an io_uring worker thread, then the worker > submits a task_work item to the creator task and won't die until > the item is executed/cancelled. And I found that the creator task is > sleeping in do_coredump() -> wait_for_completion() > > 0xffffffff81343ccb is in do_coredump (fs/coredump.c:469). > 464 > 465 if (core_waiters > 0) { > 466 struct core_thread *ptr; > 467 > 468 freezer_do_not_count(); > 469 wait_for_completion(&core_state->startup); > 470 freezer_count(); > > > A hack executing tws there helps (see diff below). > Any chance anyone knows what this is and how to fix it? > > > diff --git a/fs/coredump.c b/fs/coredump.c > index 3224dee44d30..f6f9dfb02296 100644 > --- a/fs/coredump.c > +++ b/fs/coredump.c > @@ -466,7 +466,8 @@ static int coredump_wait(int exit_code, struct > core_state *core_state) > struct core_thread *ptr; > > freezer_do_not_count(); > - wait_for_completion(&core_state->startup); > + while (wait_for_completion_interruptible(&core_state- > >startup)) > + tracehook_notify_signal(); > freezer_count(); > /* > * Wait for all the threads to become inactive, so that > > > > Pavel, I cannot comment on the merit of the proposed hack but my proposed patch to fix the coredump truncation issue when a process using io_uring core dumps that I submitted back in August is still unreviewed! https://lore.kernel.org/lkml/1625bc89782bf83d9d8c7c63e8ffcb651ccb15fa.1629655338.git.olivier@xxxxxxxxxxxxxx/ I have been using it since then I must have generated many dozens of perfect core dump files with it and I have not seen a single truncated core dump files like I used to have prior to the patch. I am bringing back my patch to your attention because one nice side effect of it is that it would have avoided totally the problem that you have encountered in coredump_wait() since it does cancel io_uring resources before calling coredump_wait()! Greetings, Olivier