diff options
author | Pedro Alves <pedro@palves.net> | 2021-11-30 19:52:11 +0000 |
---|---|---|
committer | Pedro Alves <pedro@palves.net> | 2023-11-13 14:16:11 +0000 |
commit | 7ac958f267898ba87ae67ea04f94a3fda24567dc (patch) | |
tree | d085d38a04a17dbd2e4f14d18b6f62a5cb2b6647 /gdb/doc | |
parent | ef980d654ba22aad6b5b301179dd105f522b56a1 (diff) | |
download | gdb-7ac958f267898ba87ae67ea04f94a3fda24567dc.zip gdb-7ac958f267898ba87ae67ea04f94a3fda24567dc.tar.gz gdb-7ac958f267898ba87ae67ea04f94a3fda24567dc.tar.bz2 |
Don't resume new threads if scheduler-locking is in effect
If scheduler-locking is in effect, e.g., with "set scheduler-locking
on", and you step over a function that spawns a new thread, the new
thread is allowed to run free, at least until some event is hit, at
which point, whether the new thread is re-resumed depends on a number
of seemingly random factors. E.g., if the target is all-stop, and the
parent thread hits a breakpoint, and GDB decides the breakpoint isn't
interesting to report to the user, then the parent thread is resumed,
but the new thread is left stopped.
I think that letting the new threads run with scheduler-locking
enabled is a defect. This commit fixes that, making use of the new
clone events on Linux, and of target_thread_events() on targets where
new threads have no connection to the thread that spawned them.
Testcase and documentation changes included.
Approved-By: Eli Zaretskii <eliz@gnu.org>
Reviewed-By: Andrew Burgess <aburgess@redhat.com>
Change-Id: Ie12140138b37534b7fc1d904da34f0f174aa11ce
Diffstat (limited to 'gdb/doc')
-rw-r--r-- | gdb/doc/gdb.texinfo | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo index 4cbaaa6..79b7431 100644 --- a/gdb/doc/gdb.texinfo +++ b/gdb/doc/gdb.texinfo @@ -7123,7 +7123,9 @@ the following: There is no locking and any thread may run at any time. @item on -Only the current thread may run when the inferior is resumed. +Only the current thread may run when the inferior is resumed. New +threads created by the resumed thread are held stopped at their entry +point, before they execute any instruction. @item step Behaves like @code{on} when stepping, and @code{off} otherwise. |