public inbox for gdb-prs@sourceware.org
help / color / mirror / Atom feed
* [Bug gdb/31528] New: [gdb, kernel.yama.ptrace_scope=1] FAIL: gdb.base/attach-deleted-exec.exp: attach to process with deleted executable
@ 2024-03-22 10:15 vries at gcc dot gnu.org
  2024-03-22 14:15 ` [Bug gdb/31528] " vries at gcc dot gnu.org
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: vries at gcc dot gnu.org @ 2024-03-22 10:15 UTC (permalink / raw)
  To: gdb-prs

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

            Bug ID: 31528
           Summary: [gdb, kernel.yama.ptrace_scope=1] FAIL:
                    gdb.base/attach-deleted-exec.exp: attach to process
                    with deleted executable
           Product: gdb
           Version: HEAD
            Status: NEW
          Severity: normal
          Priority: P2
         Component: gdb
          Assignee: unassigned at sourceware dot org
          Reporter: vries at gcc dot gnu.org
  Target Milestone: ---

When kernel.yama.ptrace_scope is set to 1, we have limited ptrace attach
capability, and run into:
...
(gdb) attach 27383^M
Attaching to process 27383^M
ptrace: Operation not permitted.^M
(gdb) FAIL: gdb.base/attach-deleted-exec.exp: attach to process with deleted
executable
...

We need to be either root or use some special commands to acquire ptrace
capability (see PR31520).

With root, we have:
...
(gdb) attach 28678^M
Attaching to process 28678^M
Reading symbols from /proc/28678/exe...^M
Reading symbols from /lib64/libm.so.6...^M
(No debugging symbols found in /lib64/libm.so.6)^M
Reading symbols from /lib64/libc.so.6...^M
(No debugging symbols found in /lib64/libc.so.6)^M
Reading symbols from /lib64/ld-linux-x86-64.so.2...^M
(No debugging symbols found in /lib64/ld-linux-x86-64.so.2)^M
0x00007fc13de420ca in clock_nanosleep@GLIBC_2.2.5 () from /lib64/libc.so.6^M
(gdb) PASS: gdb.base/attach-deleted-exec.exp: attach to process with deleted
executable
...

But with the script from PR31520, we run into:
...
(gdb) attach 29113^M
Attaching to process 29113^M
No executable file now.^M
warning: Could not load vsyscall page because no executable was specified^M
0x00007f92f00ae0ca in ?? ()^M
(gdb) FAIL: gdb.base/attach-deleted-exec.exp: attach to process with deleted
executable
...
because:
...
access("/proc/29113/exe", R_OK)         = -1 EACCES (Permission denied)
...

If we modify the code to skip the access check:
...
diff --git a/gdb/nat/linux-procfs.c b/gdb/nat/linux-procfs.c
index b17e3120792..2b890ce1387 100644
--- a/gdb/nat/linux-procfs.c
+++ b/gdb/nat/linux-procfs.c
@@ -352,9 +352,8 @@ linux_proc_pid_to_exec_file (int pid)
   else
     buf[len] = '\0';

-  /* Use /proc/PID/exe if the actual file can't be read, but /proc/PID/exe
-     can be.  */
-  if (access (buf, R_OK) != 0 && access (name, R_OK) == 0)
+  /* Use /proc/PID/exe if the actual file can't be read.  */
+  if (access (buf, R_OK) != 0)
     strcpy (buf, name);

   return buf;
...
the test passes:
...
(gdb) attach 29927^M
Attaching to process 29927^M
Reading symbols from /proc/29927/exe...^M
Reading symbols from /lib64/libm.so.6...^M
(No debugging symbols found in /lib64/libm.so.6)^M
Reading symbols from /lib64/libc.so.6...^M
(No debugging symbols found in /lib64/libc.so.6)^M
Reading symbols from /lib64/ld-linux-x86-64.so.2...^M
(No debugging symbols found in /lib64/ld-linux-x86-64.so.2)^M
0x00007f686bb670ca in clock_nanosleep@GLIBC_2.2.5 () from /lib64/libc.so.6^M
(gdb) PASS: gdb.base/attach-deleted-exec.exp: attach to process with deleted
executable
...

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

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug gdb/31528] [gdb, kernel.yama.ptrace_scope=1] FAIL: gdb.base/attach-deleted-exec.exp: attach to process with deleted executable
  2024-03-22 10:15 [Bug gdb/31528] New: [gdb, kernel.yama.ptrace_scope=1] FAIL: gdb.base/attach-deleted-exec.exp: attach to process with deleted executable vries at gcc dot gnu.org
@ 2024-03-22 14:15 ` vries at gcc dot gnu.org
  2024-03-22 14:21 ` vries at gcc dot gnu.org
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: vries at gcc dot gnu.org @ 2024-03-22 14:15 UTC (permalink / raw)
  To: gdb-prs

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

--- Comment #1 from Tom de Vries <vries at gcc dot gnu.org> ---
I've filed a PR ( https://bugzilla.suse.com/show_bug.cgi?id=1221867 ), hoping
to get some feedback on whether the kernel behaves as expected or not.

Regardless, it seems that using readlink in linux_proc_pid_to_exec_file may be
a problem in itself, see:
- https://bugzilla.suse.com/show_bug.cgi?id=1216352 
- https://bugzilla.kernel.org/show_bug.cgi?id=211593
so maybe this needs fixing first.

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

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug gdb/31528] [gdb, kernel.yama.ptrace_scope=1] FAIL: gdb.base/attach-deleted-exec.exp: attach to process with deleted executable
  2024-03-22 10:15 [Bug gdb/31528] New: [gdb, kernel.yama.ptrace_scope=1] FAIL: gdb.base/attach-deleted-exec.exp: attach to process with deleted executable vries at gcc dot gnu.org
  2024-03-22 14:15 ` [Bug gdb/31528] " vries at gcc dot gnu.org
@ 2024-03-22 14:21 ` vries at gcc dot gnu.org
  2024-03-22 14:26 ` vries at gcc dot gnu.org
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: vries at gcc dot gnu.org @ 2024-03-22 14:21 UTC (permalink / raw)
  To: gdb-prs

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

--- Comment #2 from Tom de Vries <vries at gcc dot gnu.org> ---
(In reply to Tom de Vries from comment #1)
> Regardless, it seems that using readlink in linux_proc_pid_to_exec_file may
> be a problem in itself, see:
> - https://bugzilla.suse.com/show_bug.cgi?id=1216352 
> - https://bugzilla.kernel.org/show_bug.cgi?id=211593
> so maybe this needs fixing first.

Which would be fixed by:
...
diff --git a/gdb/nat/linux-procfs.c b/gdb/nat/linux-procfs.c
index b17e3120792..2f8a3b961f7 100644
--- a/gdb/nat/linux-procfs.c
+++ b/gdb/nat/linux-procfs.c
@@ -342,20 +342,7 @@ const char *
 linux_proc_pid_to_exec_file (int pid)
 {
   static char buf[PATH_MAX];
-  char name[PATH_MAX];
-  ssize_t len;
-
-  xsnprintf (name, PATH_MAX, "/proc/%d/exe", pid);
-  len = readlink (name, buf, PATH_MAX - 1);
-  if (len <= 0)
-    strcpy (buf, name);
-  else
-    buf[len] = '\0';
-
-  /* Use /proc/PID/exe if the actual file can't be read, but /proc/PID/exe
-     can be.  */
-  if (access (buf, R_OK) != 0 && access (name, R_OK) == 0)
-    strcpy (buf, name);
+  xsnprintf (buf, PATH_MAX, "/proc/%d/exe", pid);

   return buf;
 }
...

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

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug gdb/31528] [gdb, kernel.yama.ptrace_scope=1] FAIL: gdb.base/attach-deleted-exec.exp: attach to process with deleted executable
  2024-03-22 10:15 [Bug gdb/31528] New: [gdb, kernel.yama.ptrace_scope=1] FAIL: gdb.base/attach-deleted-exec.exp: attach to process with deleted executable vries at gcc dot gnu.org
  2024-03-22 14:15 ` [Bug gdb/31528] " vries at gcc dot gnu.org
  2024-03-22 14:21 ` vries at gcc dot gnu.org
@ 2024-03-22 14:26 ` vries at gcc dot gnu.org
  2024-03-25 13:47 ` vries at gcc dot gnu.org
  2024-03-25 13:48 ` vries at gcc dot gnu.org
  4 siblings, 0 replies; 6+ messages in thread
From: vries at gcc dot gnu.org @ 2024-03-22 14:26 UTC (permalink / raw)
  To: gdb-prs

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

Tom de Vries <vries at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |aburgess at redhat dot com

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

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug gdb/31528] [gdb, kernel.yama.ptrace_scope=1] FAIL: gdb.base/attach-deleted-exec.exp: attach to process with deleted executable
  2024-03-22 10:15 [Bug gdb/31528] New: [gdb, kernel.yama.ptrace_scope=1] FAIL: gdb.base/attach-deleted-exec.exp: attach to process with deleted executable vries at gcc dot gnu.org
                   ` (2 preceding siblings ...)
  2024-03-22 14:26 ` vries at gcc dot gnu.org
@ 2024-03-25 13:47 ` vries at gcc dot gnu.org
  2024-03-25 13:48 ` vries at gcc dot gnu.org
  4 siblings, 0 replies; 6+ messages in thread
From: vries at gcc dot gnu.org @ 2024-03-25 13:47 UTC (permalink / raw)
  To: gdb-prs

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

--- Comment #3 from Tom de Vries <vries at gcc dot gnu.org> ---
(In reply to Tom de Vries from comment #0)
> If we modify the code to skip the access check:
> ...
> diff --git a/gdb/nat/linux-procfs.c b/gdb/nat/linux-procfs.c
> index b17e3120792..2b890ce1387 100644
> --- a/gdb/nat/linux-procfs.c
> +++ b/gdb/nat/linux-procfs.c
> @@ -352,9 +352,8 @@ linux_proc_pid_to_exec_file (int pid)
>    else
>      buf[len] = '\0';
>  
> -  /* Use /proc/PID/exe if the actual file can't be read, but /proc/PID/exe
> -     can be.  */
> -  if (access (buf, R_OK) != 0 && access (name, R_OK) == 0)
> +  /* Use /proc/PID/exe if the actual file can't be read.  */
> +  if (access (buf, R_OK) != 0)
>      strcpy (buf, name);
>  
>    return buf;
> ...
> the test passes:

Fix submitted:
https://sourceware.org/pipermail/gdb-patches/2024-March/207532.html

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

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug gdb/31528] [gdb, kernel.yama.ptrace_scope=1] FAIL: gdb.base/attach-deleted-exec.exp: attach to process with deleted executable
  2024-03-22 10:15 [Bug gdb/31528] New: [gdb, kernel.yama.ptrace_scope=1] FAIL: gdb.base/attach-deleted-exec.exp: attach to process with deleted executable vries at gcc dot gnu.org
                   ` (3 preceding siblings ...)
  2024-03-25 13:47 ` vries at gcc dot gnu.org
@ 2024-03-25 13:48 ` vries at gcc dot gnu.org
  4 siblings, 0 replies; 6+ messages in thread
From: vries at gcc dot gnu.org @ 2024-03-25 13:48 UTC (permalink / raw)
  To: gdb-prs

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

--- Comment #4 from Tom de Vries <vries at gcc dot gnu.org> ---
(In reply to Tom de Vries from comment #2)
> (In reply to Tom de Vries from comment #1)
> > Regardless, it seems that using readlink in linux_proc_pid_to_exec_file may
> > be a problem in itself, see:
> > - https://bugzilla.suse.com/show_bug.cgi?id=1216352 
> > - https://bugzilla.kernel.org/show_bug.cgi?id=211593
> > so maybe this needs fixing first.
> 
> Which would be fixed by:
> ...
> diff --git a/gdb/nat/linux-procfs.c b/gdb/nat/linux-procfs.c
> index b17e3120792..2f8a3b961f7 100644
> --- a/gdb/nat/linux-procfs.c
> +++ b/gdb/nat/linux-procfs.c
> @@ -342,20 +342,7 @@ const char *
>  linux_proc_pid_to_exec_file (int pid)
>  {
>    static char buf[PATH_MAX];
> -  char name[PATH_MAX];
> -  ssize_t len;
> -
> -  xsnprintf (name, PATH_MAX, "/proc/%d/exe", pid);
> -  len = readlink (name, buf, PATH_MAX - 1);
> -  if (len <= 0)
> -    strcpy (buf, name);
> -  else
> -    buf[len] = '\0';
> -
> -  /* Use /proc/PID/exe if the actual file can't be read, but /proc/PID/exe
> -     can be.  */
> -  if (access (buf, R_OK) != 0 && access (name, R_OK) == 0)
> -    strcpy (buf, name);
> +  xsnprintf (buf, PATH_MAX, "/proc/%d/exe", pid);
>  
>    return buf;
>  }
> ...

This turned out to be more complicated that I thought, so I've recorded this as
a fixme in the submitted patch.

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

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2024-03-25 13:48 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-03-22 10:15 [Bug gdb/31528] New: [gdb, kernel.yama.ptrace_scope=1] FAIL: gdb.base/attach-deleted-exec.exp: attach to process with deleted executable vries at gcc dot gnu.org
2024-03-22 14:15 ` [Bug gdb/31528] " vries at gcc dot gnu.org
2024-03-22 14:21 ` vries at gcc dot gnu.org
2024-03-22 14:26 ` vries at gcc dot gnu.org
2024-03-25 13:47 ` vries at gcc dot gnu.org
2024-03-25 13:48 ` vries at gcc dot gnu.org

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).