public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
From: "Gerwin, Joshua A" <joshua.a.gerwin@intel.com>
To: nobody@gcc.gnu.org
Cc: gcc-prs@gcc.gnu.org,
Subject: RE: preprocessor/6084: cpp Segmentation Fault
Date: Fri, 12 Apr 2002 16:06:00 -0000	[thread overview]
Message-ID: <20020412230602.6810.qmail@sources.redhat.com> (raw)

The following reply was made to PR preprocessor/6084; it has been noted by GNATS.

From: "Gerwin, Joshua A" <joshua.a.gerwin@intel.com>
To: "'Phil Edwards'" <phil@jaj.com>, joshg@hf.intel.com, gcc-gnats@gcc.gnu.org,
   rnesius@ichips.intel.com, "Nguyen, Tuan"<tuan.nguyen@intel.com>,
   gcc-bugs@gcc.gnu.org, neil@daikokuya.demon.co.uk
Cc:  
Subject: RE: preprocessor/6084: cpp Segmentation Fault
Date: Fri, 12 Apr 2002 15:57:12 -0700

 > -----Original Message-----
 > From: Phil Edwards [mailto:phil@jaj.com]
 > Sent: Friday, April 12, 2002 1:27 PM
 > To: joshg@hf.intel.com; gcc-gnats@gcc.gnu.org; 
 > rnesius@ichips.intel.com;
 > tuan.nguyen@intel.com; gcc-bugs@gcc.gnu.org; 
 > neil@daikokuya.demon.co.uk
 > Subject: Re: preprocessor/6084: cpp Segmentation Fault
 > 
 > 
 > I haven't been able to reproduce this using today's 3.1 
 > sources.  (More at
 > the end.)
 > 
 My hunch is that this is either a 3.0 problem, perhaps fixed in your version
 of 3.1, or that the libc.so we're linking during compile is significantly
 different.  Note that I could produce a segfault in strlen with minimal
 options and no source at all, simply by having both -dD and -DM present.
 
 %cat empty.c
 /* no source */
 %which cpp
 /path/to/gcc/3.0.3-64/bin/cpp
 %cpp -dM -dD empty.c
 cpp: Internal error: Segmentation Fault (program cpp0)
 Please submit a full bug report.
 See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.
 
 Running gcc, I observe
 
 (gdb) file /path/to/gcc/3.0.3-64/lib/gcc-lib/sparcv9-sun-solaris2/3.0.3/cpp0
 Load new symbol table from
 "/path/to/gcc/3.0.3-64/lib/gcc-lib/sparcv9-sun-solaris2/3.0.3/cpp0"? (y or
 n) y
 
 Reading symbols from
 /path/to/gcc/3.0.3-64/lib/gcc-lib/sparcv9-sun-solaris2/3.0.3/cpp0...done.
 (gdb) run -dM -dD empty.c
 Starting program:
 /path/to/gcc/3.0.3-64/lib/gcc-lib/sparcv9-sun-solaris2/3.0.3/cpp0 -dM -dD
 empty.c
 
 Program received signal SIGSEGV, Segmentation fault.
 0xffffffff7f44035c in strlen () from /usr/lib/64/libc.so.1
 (gdb) bt
 #0  0xffffffff7f44035c in strlen () from /usr/lib/64/libc.so.1
 #1  0xffffffff7f48d6d4 in _doprnt () from /usr/lib/64/libc.so.1
 #2  0xffffffff7f48f180 in fprintf () from /usr/lib/64/libc.so.1
 #3  0x100003d28 in maybe_print_line ()
 #4  0x100003e1c in cb_define ()
 #5  0x100004904 in do_define ()
 #6  0x100004778 in run_directive ()
 #7  0x100011d20 in init_builtins ()
 #8  0x100012344 in cpp_start_read ()
 #9  0x100003680 in do_preprocessing ()
 #10 0x10000349c in main ()
 (gdb) 
 
 Also noteworthy, reversing the parameters fixes the segfault!
 
 (gdb) run -dD -dM
 The program being debugged has been started already.
 Start it from the beginning? (y or n) y
 Starting program:
 /usr/intel/pkgs/gcc/3.0.3-64/lib/gcc-lib/sparcv9-sun-solaris2/3.0.3/cpp0 -dD
 -dM
 ^D
 #define __USER_LABEL_PREFIX__
 #define __HAVE_BUILTIN_SETJMP__ 1
 #define __REGISTER_PREFIX__
 #define __VERSION__ "3.0.3"
 
 Program exited normally.
 (gdb) run -dM -dD
 Starting program:
 /usr/intel/pkgs/gcc/3.0.3-64/lib/gcc-lib/sparcv9-sun-solaris2/3.0.3/cpp0 -dM
 -dD
 ^D
 Program received signal SIGSEGV, Segmentation fault.
 0xffffffff7f44035c in strlen () from /usr/lib/64/libc.so.1
 
 Here's the maybe_print_line function and related symbols, for handy
 reference:
 
 static void
 maybe_print_line (line)
      unsigned int line;
 {
   /* End the previous line of text (probably only needed until we get
      multi-line tokens fixed).  */
   if (print.printed)
     {
       putc ('\n', print.outf);
       print.lineno++;
       print.printed = 0;
     }
 
   if (options->no_line_commands)
     {
       print.lineno = line;
       return;
     }
 
   /* print.lineno is zero if this is the first token of the file.  We
      handle this specially, so that a first line of "# 1 "foo.c" in
      file foo.i outputs just the foo.c line, and not a foo.i line.  */
   if (line >= print.lineno && line < print.lineno + 8 && print.lineno)
     {
       while (line > print.lineno)
         {
           putc ('\n', print.outf);
           print.lineno++;
         }
     }
   else
     {
       print.lineno = line;
       print_line ("");
     }
 }
 
 static void
 print_line (special_flags)
   const char *special_flags;
 {
   /* End any previous line of text.  */
   if (print.printed)
     putc ('\n', print.outf);
   print.printed = 0;
 
   fprintf (print.outf, "# %u \"%s\"%s%s\n",
            print.lineno, print.last_fname, special_flags,
 print.syshdr_flags);
 }
 
 (gdb) whatis print
 type = struct printer
 (gdb) ptype struct printer
 type = struct printer {
     FILE *outf;
     char *last_fname;
     char *syshdr_flags;
     unsigned int lineno;
     unsigned char printed;
 }
 
 This is about all the source diving I can do for it today.
 
 Josh Gerwin, System Programmer/Analyst
 joshua.a.gerwin@intel.com
 Intel Corp.
 NorthWest Engineering Computing


             reply	other threads:[~2002-04-12 23:06 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-04-12 16:06 Gerwin, Joshua A [this message]
  -- strict thread matches above, loose matches on Subject: below --
2002-05-21 13:34 neil
2002-05-21 13:33 neil
2002-04-17 23:52 neil
2002-04-15 19:46 Gerwin, Joshua A
2002-04-15 18:06 Richard Henderson
2002-04-15 12:06 'Neil Booth'
2002-04-15 11:36 Gerwin, Joshua A
2002-04-15 11:16 'Neil Booth'
2002-04-15 11:06 Gerwin, Joshua A
2002-04-13  1:26 Phil Edwards
2002-04-13  1:16 Phil Edwards
2002-04-12 22:16 Neil Booth
2002-04-12 13:36 Phil Edwards
2002-04-03 22:36 'Neil Booth'
2002-04-03 17:06 Gerwin, Joshua A
2002-04-02 22:36 Neil Booth
2002-03-29 12:16 Neil Booth
2002-03-29 11:36 Gerwin, Joshua A
2002-03-29  0:20 neil

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=20020412230602.6810.qmail@sources.redhat.com \
    --to=joshua.a.gerwin@intel.com \
    --cc=gcc-prs@gcc.gnu.org \
    --cc=nobody@gcc.gnu.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: link
Be 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).