[vox-tech] gdb segfaults when printing long double complex variables

Peter Jay Salzman p at dirac.org
Thu Jun 10 08:21:55 PDT 2004


Bug: GDB segfaults when printing long double complex variables.

Sample Code:

1       #include <tgmath.h>
2       #include <stdio.h>
3
4       int main(void)
5       {
6               complex a;
7               double complex b;
8               long double complex c;
9
10              a = 5 + 2I;
11              printf("%f + %fi\n", __real__ a, __imag__ a);
12
13              b = 5.0 + 2.0I;
14              printf("%f + %fi\n", __real__ b, __imag__ b);
15
16              c = 5.0L + 2.0LI;
17              printf("%Lf + %Lfi\n", __real__ c, __imag__ c);
18
19              return 0;
20      }



The program runs fine:

   p at satan$ gcc-3.3 -g -W -Wall blah.c 
   p at satan$ ./a.out 
   5.000000 + 2.000000i
   5.000000 + 2.000000i
   5.000000 + 2.000000i

The program runs fine under gdb:

   (gdb) run
   Starting program: /home/p/a.out 
   5.000000 + 2.000000i
   5.000000 + 2.000000i
   5.000000 + 2.000000i

   Program exited normally.

But GDB itself cannot print long double complex variables without
segfaulting:

   (gdb) break 18
   Breakpoint 1 at 0x8048436: file blah.c, line 18.
   (gdb) run
   Starting program: /home/p/a.out 
   5.000000 + 2.000000i
   5.000000 + 2.000000i
   5.000000 + 2.000000i

   Breakpoint 1, main () at blah.c:19
   19              return 0;
   (gdb) p a
   $1 = 5 + 2 * I
   (gdb) p b
   $2 = 5 + 2 * I
   (gdb) p c
   Segmentation fault (core dumped)

This is very reproducible, unfortunately.  This bug showed up at the
worst possible moment...

Pete

-- 
In theory, theory and practise are the same.  In practise, they aren't.
GPG Instructions: http://www.dirac.org/linux/gpg
GPG Fingerprint: B9F1 6CF3 47C4 7CD8 D33E 70A9 A3B9 1945 67EA 951D


More information about the vox-tech mailing list