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.
next prev 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: linkBe 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).