All of lore.kernel.org
 help / color / mirror / Atom feed
From: Joe Korty <joe.korty@concurrent-rt.com>
To: lgoncalv@redhat.com
Cc: linux-kernel@vger.kernel.org, linux-rt-users@vger.kernel.org
Subject: [PATCH 5.10.162-rt78] Restore initialization of wake_q_sleeper.next in fork.c
Date: Mon, 20 Mar 2023 15:37:31 -0400	[thread overview]
Message-ID: <20230320193731.GA36840@zipoli.concurrent-rt.com> (raw)

In the transition from 5.10.158-rt77 to 5.10.162-rt78,
the initialization of task_struct::wake_q_sleeper.next
was dropped.  Restore it.

This appears to be only a problem in 5.10.  5.15 does not
have wake_q_sleeper; 4.19 does have it but its initialization
there is still present.

The 5.10.162-rt78 patch that damaged fork.c is:

   0170-locking-rtmutex-add-sleeping-lock-implementation.patch

I do not have a simple test that brings out this problem.
My test consists of a shell script and eight binaries,
all of which were written in Ada.  strace shows that it
does a few thousand forks in rapid succession.  One of the
forks stalls out, after which no fork after that returns.
Eventually the 122 second stallout occurs and a large
number of threads are shown to be waiting for tasklist
lock, either in do_exit or in copy_process.  The kernel
.config has rt and many debug features enabled, lockdep
included.

Signed-off-by: Joe Korty <joe.korty@concurrent-rt.com

Index: b/kernel/fork.c
===================================================================
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -960,6 +960,7 @@ static struct task_struct *dup_task_stru
 	tsk->splice_pipe = NULL;
 	tsk->task_frag.page = NULL;
 	tsk->wake_q.next = NULL;
+	tsk->wake_q_sleeper.next = NULL;
 	tsk->pf_io_worker = NULL;
 
 	account_kernel_stack(tsk, 1);

             reply	other threads:[~2023-03-20 19:42 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-03-20 19:37 Joe Korty [this message]
2023-03-20 20:00 ` [PATCH 5.10.162-rt78] Restore initialization of wake_q_sleeper.next in fork.c Luis Claudio R. Goncalves
2023-03-20 20:04   ` Joe Korty

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230320193731.GA36840@zipoli.concurrent-rt.com \
    --to=joe.korty@concurrent-rt.com \
    --cc=lgoncalv@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-rt-users@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.