Public bug reported:

After upgrading from Ubuntu 18.04 to Ubuntu 20.04 on my x86_64 desktop
machine, I've noticed a significant regression in the debug experience
with gdb. In particular, function parameters in GDB now seem to reliably
have garbage values on entry to the function until I step once inside
the function. Here is a reproducer:

$ cat test.c
#include <stdio.h>
int f(int x, int y) {
  printf ("%d, %d\n", x, y);
}
int main(void) {
  f(2,3);
}
$ gcc -g3 test.c
$ gdb a.out
GNU gdb (Ubuntu 9.2-0ubuntu1~20.04.1) 9.2
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from a.out...
(gdb) b f
Breakpoint 1 at 0x1149: file test.c, line 2.
(gdb) r
Starting program: /data_sdb/toolchain/a.out 

Breakpoint 1, f (x=21845, y=1431654496) at test.c:2
2       int f(int x, int y) {
(gdb) p x
$1 = 21845
(gdb) p y
$2 = 1431654496
(gdb) n
3         printf ("%d, %d\n", x, y);
(gdb) p x
$3 = 2
(gdb) p y
$4 = 3

I tried compiling GDB from source and noticed that I could reproduce the
problem with GDB 9 but not with GDB 10. A bisection showed that the
following GDB commit fixed the issue:
https://sourceware.org/git/?p=binutils-
gdb.git;a=commit;h=ac4a4f1cd7dceeeb17d0b8c077c874f2247acbf0

Perhaps that patch should be backported to GDB 9, but it's not entirely
clear why the prologue analysis is even necessary in this case.

ProblemType: Bug
DistroRelease: Ubuntu 20.04
Package: gdb 9.2-0ubuntu1~20.04.1
ProcVersionSignature: Ubuntu 5.4.0-139.156-generic 5.4.224
Uname: Linux 5.4.0-139-generic x86_64
NonfreeKernelModules: nvidia_modeset nvidia
ApportVersion: 2.20.11-0ubuntu27.25
Architecture: amd64
CasperMD5CheckResult: skip
Date: Tue Mar  7 16:01:56 2023
SourcePackage: gdb
UpgradeStatus: Upgraded to focal on 2023-03-03 (4 days ago)

** Affects: gdb (Ubuntu)
     Importance: Undecided
         Status: New


** Tags: amd64 apport-bug focal

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to gdb in Ubuntu.
https://bugs.launchpad.net/bugs/2009618

Title:
  GDB: function parameters have garbage values on function entry

Status in gdb package in Ubuntu:
  New

Bug description:
  After upgrading from Ubuntu 18.04 to Ubuntu 20.04 on my x86_64 desktop
  machine, I've noticed a significant regression in the debug experience
  with gdb. In particular, function parameters in GDB now seem to
  reliably have garbage values on entry to the function until I step
  once inside the function. Here is a reproducer:

  $ cat test.c
  #include <stdio.h>
  int f(int x, int y) {
    printf ("%d, %d\n", x, y);
  }
  int main(void) {
    f(2,3);
  }
  $ gcc -g3 test.c
  $ gdb a.out
  GNU gdb (Ubuntu 9.2-0ubuntu1~20.04.1) 9.2
  Copyright (C) 2020 Free Software Foundation, Inc.
  License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
  This is free software: you are free to change and redistribute it.
  There is NO WARRANTY, to the extent permitted by law.
  Type "show copying" and "show warranty" for details.
  This GDB was configured as "x86_64-linux-gnu".
  Type "show configuration" for configuration details.
  For bug reporting instructions, please see:
  <http://www.gnu.org/software/gdb/bugs/>.
  Find the GDB manual and other documentation resources online at:
      <http://www.gnu.org/software/gdb/documentation/>.

  For help, type "help".
  Type "apropos word" to search for commands related to "word"...
  Reading symbols from a.out...
  (gdb) b f
  Breakpoint 1 at 0x1149: file test.c, line 2.
  (gdb) r
  Starting program: /data_sdb/toolchain/a.out 

  Breakpoint 1, f (x=21845, y=1431654496) at test.c:2
  2       int f(int x, int y) {
  (gdb) p x
  $1 = 21845
  (gdb) p y
  $2 = 1431654496
  (gdb) n
  3         printf ("%d, %d\n", x, y);
  (gdb) p x
  $3 = 2
  (gdb) p y
  $4 = 3

  I tried compiling GDB from source and noticed that I could reproduce
  the problem with GDB 9 but not with GDB 10. A bisection showed that
  the following GDB commit fixed the issue:
  https://sourceware.org/git/?p=binutils-
  gdb.git;a=commit;h=ac4a4f1cd7dceeeb17d0b8c077c874f2247acbf0

  Perhaps that patch should be backported to GDB 9, but it's not
  entirely clear why the prologue analysis is even necessary in this
  case.

  ProblemType: Bug
  DistroRelease: Ubuntu 20.04
  Package: gdb 9.2-0ubuntu1~20.04.1
  ProcVersionSignature: Ubuntu 5.4.0-139.156-generic 5.4.224
  Uname: Linux 5.4.0-139-generic x86_64
  NonfreeKernelModules: nvidia_modeset nvidia
  ApportVersion: 2.20.11-0ubuntu27.25
  Architecture: amd64
  CasperMD5CheckResult: skip
  Date: Tue Mar  7 16:01:56 2023
  SourcePackage: gdb
  UpgradeStatus: Upgraded to focal on 2023-03-03 (4 days ago)

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/gdb/+bug/2009618/+subscriptions


-- 
Mailing list: https://launchpad.net/~touch-packages
Post to     : touch-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~touch-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to