public inbox for gdb-prs@sourceware.org help / color / mirror / Atom feed
From: "palves at redhat dot com" <sourceware-bugzilla@sourceware.org> To: gdb-prs@sourceware.org Subject: [Bug gdb/26754] Race condition when resuming threads and one does an exec Date: Thu, 19 Nov 2020 22:57:55 +0000 [thread overview] Message-ID: <bug-26754-4717-5669xq0dig@http.sourceware.org/bugzilla/> (raw) In-Reply-To: <bug-26754-4717@http.sourceware.org/bugzilla/> https://sourceware.org/bugzilla/show_bug.cgi?id=26754 --- Comment #6 from Pedro Alves <palves at redhat dot com> --- > It looks like other threads are deleted first, and the new address space is set > up second. What you describes implies that it's the other way around. Well, I said "that is reported after all threads in the process are exited". By "all threads" here I was talking about all threads except the leader and the one that exceed, like how PTRACE_EVENT_EXEC event also works. > It looks like other threads are deleted first, and the new address space is set > up second. What you describes implies that it's the other way around. It looks more like you're talking about the order of changing the exec'ing thread's tid to the tgid vs setting up the new address space. OK. > The way I see it could work is like this. Let's say the leader is 100.100 and > the non-leader is 100.101. > > 1. non-leader execs > 2. all other threads are removed > 3. PTRACE_EVENT_ALMOST_EXEC is fired: GDB deletes other threads from its data structures > 4. GDB resumes execution of 100.101 > 5. kernel renames 100.101 into 100.100 and sets up new address space > 6. PTRACE_EVENT_EXEC is fired: GDB updates the ptid from 100.101 to 100.100 in > its data structures, loads the new symbols > 7. GDB resumes execution of 100.100 OK, yeah, the main difference is that I was saying that the new address space would be created between #2 and #3, and GDB would load the new symbols in #3 already. I think what you have should work too, and is nicer in that the PTRACE_EVENT_EXEC handling continues the same and PTRACE_EVENT_ALMOST_EXEC is a smaller incremental change, a pure addition. I like it. In #3, I assume that the leader thread will still exist, but be zombie, like what happens currently with PTRACE_EVENT_EXEC until you reap all threads. GDB is free to delete it from its data structures then, it's what we already do when the leader exits even without considering exec events -- the leader never disappears, it already refuses to die and stays as a zombie when it exits. I would prefer to preserve gdb thread id == 1 before / after exec, but that's a GDB concern, not a kernel interface concern. Ship it! -- You are receiving this mail because: You are on the CC list for the bug.
next prev parent reply other threads:[~2020-11-19 22:57 UTC|newest] Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-10-19 1:19 [Bug gdb/26754] New: " simark at simark dot ca 2020-10-19 1:20 ` [Bug gdb/26754] " simark at simark dot ca 2020-10-19 1:21 ` simark at simark dot ca 2020-11-19 20:05 ` palves at redhat dot com 2020-11-19 20:19 ` simark at simark dot ca 2020-11-19 21:32 ` simark at simark dot ca 2020-11-19 22:57 ` palves at redhat dot com [this message] 2020-11-19 23:11 ` simark at simark dot ca 2020-11-19 23:52 ` palves at redhat dot com 2020-11-19 23:55 ` simark at simark dot ca 2022-09-29 16:58 ` simark at simark dot ca
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-26754-4717-5669xq0dig@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).