This is the mail archive of the
mailing list for the GDB project.
Re: Single stepping and threads
- From: "Mark Kettenis" <mark dot kettenis at xs4all dot nl>
- To: gdb at sourceware dot org
- Date: Wed, 29 Nov 2006 13:40:49 +0100 (CET)
- Subject: Re: Single stepping and threads
- References: <20061129052942.GA16029@nevyn.them.org>
> Ulrich's message earlier reminded me of something I've been meaning to
> discuss for a while. This isn't specific to software single stepping,
> but to single step in general for threaded programs.
> We have a knob "set scheduler-locking". It offers three values:
> Set mode for locking scheduler during execution.
> off == no locking (threads may preempt at any time)
> on == full locking (no thread except the current thread may run)
> step == scheduler locked during every single-step operation.
> In this mode, no other thread may run during a step command.
> Other threads may run while stepping over a function call
> The default is "off". Should it be "step" instead? The example I used
> to use whenever someone asked me about this was single stepping through
> something like a barrier or mutex; if other threads don't run, you
> won't advance, because no other thread will have a chance to release
> the lock. That much is true. But it seems like a reasonable thing to
> document and reference "set scheduler-locking". And having threads
> run during single stepping has surprised a lot of users who've asked
> me about the current behavior.
> What do you all think?
Are you talking about stepi or step?
For step we should be very careful, since on some platforms the dynamic
linker may play games with locks and we risk a deadlock if we don't let
the other threads run.