public inbox for gdb-prs@sourceware.org
help / color / mirror / Atom feed
From: "cvs-commit at gcc dot gnu.org" <sourceware-bugzilla@sourceware.org>
To: gdb-prs@sourceware.org
Subject: [Bug testsuite/31312] attach-many-short-lived-threads gives inconsistent results
Date: Tue, 30 Apr 2024 02:37:14 +0000	[thread overview]
Message-ID: <bug-31312-4717-ZB0lvkdklf@http.sourceware.org/bugzilla/> (raw)
In-Reply-To: <bug-31312-4717@http.sourceware.org/bugzilla/>

https://sourceware.org/bugzilla/show_bug.cgi?id=31312

--- Comment #28 from Sourceware Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Thiago Bauermann
<bauermann@sourceware.org>:

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=c930a077225ec042287379d8e49b4d547f97d1ba

commit c930a077225ec042287379d8e49b4d547f97d1ba
Author: Thiago Jung Bauermann <thiago.bauermann@linaro.org>
Date:   Sun Mar 17 02:40:05 2024 -0300

    gdb/nat/linux: Fix attaching to process when it has zombie threads

    When GDB attaches to a multi-threaded process, it calls
    linux_proc_attach_tgid_threads () to go through all threads found in
    /proc/PID/task/ and call attach_proc_task_lwp_callback () on each of
    them.  If it does that twice without the callback reporting that a new
    thread was found, then it considers that all inferior threads have been
    found and returns.

    The problem is that the callback considers any thread that it hasn't
    attached to yet as new.  This causes problems if the process has one or
    more zombie threads, because GDB can't attach to it and the loop will
    always "find" a new thread (the zombie one), and get stuck in an
    infinite loop.

    This is easy to trigger (at least on aarch64-linux and powerpc64le-linux)
    with the gdb.threads/attach-many-short-lived-threads.exp testcase, because
    its test program constantly creates and finishes joinable threads so the
    chance of having zombie threads is high.

    This problem causes the following failures:

    FAIL: gdb.threads/attach-many-short-lived-threads.exp: iter 8: attach
(timeout)
    FAIL: gdb.threads/attach-many-short-lived-threads.exp: iter 8: no new
threads (timeout)
    FAIL: gdb.threads/attach-many-short-lived-threads.exp: iter 8: set
breakpoint always-inserted on (timeout)
    FAIL: gdb.threads/attach-many-short-lived-threads.exp: iter 8: break
break_fn (timeout)
    FAIL: gdb.threads/attach-many-short-lived-threads.exp: iter 8: break at
break_fn: 1 (timeout)
    FAIL: gdb.threads/attach-many-short-lived-threads.exp: iter 8: break at
break_fn: 2 (timeout)
    FAIL: gdb.threads/attach-many-short-lived-threads.exp: iter 8: break at
break_fn: 3 (timeout)
    FAIL: gdb.threads/attach-many-short-lived-threads.exp: iter 8: reset timer
in the inferior (timeout)
    FAIL: gdb.threads/attach-many-short-lived-threads.exp: iter 8: print
seconds_left (timeout)
    FAIL: gdb.threads/attach-many-short-lived-threads.exp: iter 8: detach
(timeout)
    FAIL: gdb.threads/attach-many-short-lived-threads.exp: iter 8: set
breakpoint always-inserted off (timeout)
    FAIL: gdb.threads/attach-many-short-lived-threads.exp: iter 8: delete all
breakpoints, watchpoints, tracepoints, and catchpoints in delete_breakpoints
(timeout)
    ERROR: breakpoints not deleted

    The iteration number is random, and all tests in the subsequent iterations
    fail too, because GDB is stuck in the attach command at the beginning of
    the iteration.

    The solution is to make linux_proc_attach_tgid_threads () remember when it
    has already processed a given LWP and skip it in the subsequent iterations.

    PR testsuite/31312
    Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=31312

    Reviewed-By: Luis Machado <luis.machado@arm.com>
    Approved-By: Pedro Alves <pedro@palves.net>

-- 
You are receiving this mail because:
You are on the CC list for the bug.

  parent reply	other threads:[~2024-04-30  2:37 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-01-29 18:06 [Bug testsuite/31312] New: " cel at linux dot ibm.com
2024-01-29 18:08 ` [Bug testsuite/31312] " cel at linux dot ibm.com
2024-01-29 18:20 ` tromey at sourceware dot org
2024-01-29 20:55 ` vries at gcc dot gnu.org
2024-01-29 21:35 ` cel at linux dot ibm.com
2024-01-29 21:44 ` cel at linux dot ibm.com
2024-01-29 22:38 ` cel at linux dot ibm.com
2024-01-30  7:21 ` vries at gcc dot gnu.org
2024-01-30 10:13 ` vries at gcc dot gnu.org
2024-01-31 16:14 ` cel at linux dot ibm.com
2024-02-06 18:59 ` cel at linux dot ibm.com
2024-02-12 18:58 ` tromey at sourceware dot org
2024-02-12 18:59 ` tromey at sourceware dot org
2024-02-16  4:42 ` cel at linux dot ibm.com
2024-03-09  0:45 ` tromey at sourceware dot org
2024-03-09  1:29 ` cel at linux dot ibm.com
2024-03-09  6:59 ` brobecker at gnat dot com
2024-03-09 16:43 ` tromey at sourceware dot org
2024-03-15 16:41 ` cel at linux dot ibm.com
2024-03-15 21:57 ` thiago.bauermann at linaro dot org
2024-03-16  1:37 ` thiago.bauermann at linaro dot org
2024-03-16 17:42 ` tromey at sourceware dot org
2024-03-18 18:45 ` thiago.bauermann at linaro dot org
2024-03-19 15:14 ` cel at linux dot ibm.com
2024-03-19 15:35 ` thiago.bauermann at linaro dot org
2024-03-19 15:57 ` cel at linux dot ibm.com
2024-03-19 19:10 ` thiago.bauermann at linaro dot org
2024-03-21 23:17 ` thiago.bauermann at linaro dot org
2024-04-14 17:56 ` brobecker at gnat dot com
2024-04-16  4:56 ` thiago.bauermann at linaro dot org
2024-04-17 14:52 ` pedro at palves dot net
2024-04-30  2:37 ` cvs-commit at gcc dot gnu.org [this message]
2024-05-10 22:14 ` brobecker at gnat dot com
2024-05-10 22:28 ` cel at linux dot ibm.com
2024-05-11 23:48 ` thiago.bauermann at linaro dot org
2024-05-13 19:03 ` tromey at sourceware dot org
2024-05-14 15:24 ` cel at linux dot ibm.com
2024-05-17 16:26 ` tromey at sourceware dot org
2024-05-17 16:33 ` cel at linux dot ibm.com
2024-05-17 17:10 ` vries at gcc dot gnu.org
2024-05-17 19:54 ` cel at linux dot ibm.com
2024-05-17 19:58 ` pedro at palves dot net
2024-05-17 23:02 ` cel at linux dot ibm.com

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=bug-31312-4717-ZB0lvkdklf@http.sourceware.org/bugzilla/ \
    --to=sourceware-bugzilla@sourceware.org \
    --cc=gdb-prs@sourceware.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).