public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Steven Rostedt <rostedt@goodmis.org>
To: Ingo Molnar <mingo@elte.hu>
Cc: linux-kernel@vger.kernel.org,
	Thomas Gleixner <tglx@linutronix.de>,
	"Paul E. McKenney" <paulmck@us.ibm.com>
Subject: Re: 2.6.13-rc6-rt9
Date: Fri, 19 Aug 2005 02:39:46 -0400	[thread overview]
Message-ID: <1124433586.5186.119.camel@localhost.localdomain> (raw)
In-Reply-To: <20050818060126.GA13152@elte.hu>

Deadlock finally found!!! 

I've been debugging this all week. And at 2:30 in the morning I finally
found where it is. It really sucks when you need to debug on something
that doesn't have a serial, and netconsole doesn't work that reliably.

This also explains why this only happened on my laptop. It is caused by
the dependent_sleeper, which is used quite a bit when you have SCHED_HT
turned on.  Although I wouldn't be surprised if this deadlock exists
elsewhere.

The dependent_sleeper (used by SCHED_HT) grabs all the run queue locks
for the physical CPU.  Then it calls trace_stop_sched_switched. So this
is the calling chain.

dependent_sleeper
    +==> grabs CPU0 rq and CPU1 rq lock (saying CPU 0 and 1 are on the
same physical CPU)
   -> trace_stop_sched_switched
      -> check_wakeup_timing
          -> down_trylock(max_mutex)
                -> rt_down_trylock
                    -> __down_trylock
                       +==> grabs trace_lock

Now lets look at something at the same time that is unlocking.

rt_up
  -> __up_mutex_nosavestate_inline
    ->  ___up_mutex_nosavestate
       -> ____up_mutex
          +==> grabs trace_lock
         -> __up_mutex_waiter_nosavestate
            -> wake_up_process
               -> try_to_wake_up
                 +==> grabs rq lock

Here we can see that there's a reverse order here and we have a
deadlock.  I actually witness this using my logger to show the traces.
All I needed was the last few lines, so the console was fine here.

Ingo, can't you get rt.c to be more confusing. I mean it is too simple.
We need to add a few more underscores here and there :-)  Seriously,
that rt.c is mind boggling. It was nice before, now it is just screaming
for a cleanup (come now, do we really need the four underscores?).  Same
with latency.c. 

Well, there's the deadlock, I'm too tired to figure out all the paths,
and what the heck is going on. So I'll give you the honour of writing
the patch. ;-)

Thanks,

-- Steve




  parent reply	other threads:[~2005-08-19  6:40 UTC|newest]

Thread overview: 67+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-08-18  6:01 2.6.13-rc6-rt9 Ingo Molnar
2005-08-18 15:24 ` 2.6.13-rc6-rt9 Thomas Gleixner
2005-08-18 16:08   ` 2.6.13-rc6-rt9 Thomas Gleixner
2005-08-18 21:17   ` 2.6.13-rc6-rt9 Thomas Gleixner
2005-08-18 22:54 ` [2.6.13-rc6-rt9 patch] fix DECNET_ROUTER=y compile Adrian Bunk
2005-08-22  7:59   ` Ingo Molnar
2005-08-18 22:54 ` 2.6.13-rc6-rt9: compile errors Adrian Bunk
2005-08-22  8:44   ` Ingo Molnar
2005-08-19  0:05 ` 2.6.13-rc6-rt9 Chuck Harding
2005-08-19  6:39 ` Steven Rostedt [this message]
2005-08-19 13:00   ` 2.6.13-rc6-rt9 Steven Rostedt
2005-08-19 15:36     ` 2.6.13-rc6-rt9 Steven Rostedt
2005-08-22  7:57       ` 2.6.13-rc6-rt9 Ingo Molnar
2005-08-22  7:58     ` 2.6.13-rc6-rt9 Ingo Molnar
2005-08-23 12:36   ` 2.6.13-rc6-rt9 Ingo Molnar
2005-08-23 12:50     ` 2.6.13-rc6-rt9 Steven Rostedt
2005-08-23 12:56       ` 2.6.13-rc6-rt9 Ingo Molnar
2005-08-19 16:56 ` 2.6.13-rc6-rt9 Peter Zijlstra
2005-08-19 18:30   ` 2.6.13-rc6-rt9 Peter Zijlstra
2005-08-19 18:43     ` 2.6.13-rc6-rt9 Paul E. McKenney
2005-08-20 19:27       ` 2.6.13-rc6-rt9 Peter Zijlstra
2005-08-20 21:24         ` 2.6.13-rc6-rt9 Jeff Dike
2005-09-29  7:54           ` 2.6.13-rc6-rt9 Peter Zijlstra
2005-09-30  1:00             ` 2.6.13-rc6-rt9 Paul E. McKenney
2005-09-30  1:07               ` 2.6.13-rc6-rt9 Thomas Gleixner
2005-09-30  1:46                 ` 2.6.13-rc6-rt9 Paul E. McKenney
2005-09-30  6:17                   ` 2.6.13-rc6-rt9 Thomas Gleixner
2005-08-19 21:50 ` 2.6.13-rc6-rt9 Darren Hart
2005-08-25  6:24   ` 2.6.13-rc6-rt9 Ingo Molnar
2005-08-19 22:13 ` 2.6.13-rc6-rt9 Darren Hart
2005-08-19 23:00   ` 2.6.13-rc6-rt9 Thomas Gleixner
2005-08-20 15:13     ` 2.6.13-rc6-rt9 Darren Hart
2005-08-19 23:48 ` [PATCH 2.6.13-rc6-rt9] PI aware dynamic priority adjustment Thomas Gleixner
2005-08-20  0:19   ` George Anzinger
2005-08-20  0:36     ` Thomas Gleixner
2005-08-20  1:36       ` George Anzinger
2005-09-26 21:03         ` Roland McGrath
2005-08-20 14:10   ` Oleg Nesterov
2005-08-20 16:04     ` Thomas Gleixner
2005-08-20 17:50       ` Oleg Nesterov
2005-08-22 21:37       ` George Anzinger
2005-08-20 16:58   ` [PATCH] fix send_sigqueue() vs thread exit race Oleg Nesterov
2005-08-21  9:44     ` Thomas Gleixner
2005-08-21 10:41       ` Oleg Nesterov
2005-08-21 12:38         ` Thomas Gleixner
2005-08-21 10:59       ` Oleg Nesterov
2005-08-21 21:24         ` Thomas Gleixner
2005-08-21 21:50           ` Thomas Gleixner
2005-08-22  6:39             ` Oleg Nesterov
2005-08-22  8:08               ` Thomas Gleixner
2005-08-22  8:52                 ` Oleg Nesterov
2005-08-22 10:06                   ` Thomas Gleixner
2005-08-22 16:45                     ` Oleg Nesterov
2005-08-23 10:13                       ` Thomas Gleixner
2005-08-23 16:17                         ` Oleg Nesterov
2005-08-23 18:29                           ` Thomas Gleixner
2005-09-24 13:42                           ` [PATCH] fix exit_itimers() vs posix_timer_event() AB-BA deadlock Oleg Nesterov
2005-09-25  5:44                             ` Andrew Morton
2005-09-25 14:07                               ` [PATCH] fix exit_itimers() vs posix_timer_event() AB-BAdeadlock Oleg Nesterov
2005-10-23 16:50                                 ` Oleg Nesterov
2005-08-23 10:42                       ` [PATCH] fix send_sigqueue() vs thread exit race Thomas Gleixner
2005-08-22  7:38   ` [PATCH 2.6.13-rc6-rt9] PI aware dynamic priority adjustment Ingo Molnar
2005-08-22  7:41     ` Ingo Molnar
  -- strict thread matches above, loose matches on Subject: below --
2005-08-19 10:41 2.6.13-rc6-rt9 Karsten Wiese
2005-08-19 22:42 ` 2.6.13-rc6-rt9 Chuck Harding
2005-08-19 23:12   ` 2.6.13-rc6-rt9 Chuck Harding
2005-08-22  7:47 ` 2.6.13-rc6-rt9 Ingo Molnar

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=1124433586.5186.119.camel@localhost.localdomain \
    --to=rostedt@goodmis.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=paulmck@us.ibm.com \
    --cc=tglx@linutronix.de \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox