This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug preprocessor/24039] cpp segfaults when a non-existent include is encountered
- From: "heas at shrubbery dot net" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 23 Sep 2005 21:23:11 -0000
- Subject: [Bug preprocessor/24039] cpp segfaults when a non-existent include is encountered
- References: <20050923180213.24039.heas@shrubbery.net>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Additional Comments From heas at shrubbery dot net 2005-09-23 21:23 -------
Subject: Re: cpp segfaults when a non-existent include is encountered
Fri, Sep 23, 2005 at 08:02:17PM -0000, pinskia at gcc dot gnu dot org:
> -dH but there is a better way to get a backtrace.
> use
> gdb --args /usr/local/libexec/gcc/sparc64-sun-solaris2.9/4.1.0/cc1 -E -quiet -v -D__arch64__
> -D__sparcv9 test.c -mcpu=v9 -mtune=ultrasparc -fpch-preprocess -o test.i
>
nice. here is the trace:
#0 0xffffffff7f23d28c in strlen () from /usr/lib/64/libc.so.1
#1 0xffffffff7f29c318 in fputs () from /usr/lib/64/libc.so.1
#2 0x00000001005ed5f4 in _cpp_begin_message (pfile=Variable "pfile" is not available.
)
at ../../gcc-4.1-20050917/libcpp/errors.c:120
#3 0x00000001005ed8c8 in cpp_error (pfile=0x1, level=3,
msgid=0x1006b71e0 "%s: %s") at ../../gcc-4.1-20050917/libcpp/errors.c:155
#4 0x00000001005f2184 in _cpp_find_file (pfile=0x100903300,
fname=0x100907010 "segfault.h", start_dir=0x1008d1890, fake=28 '\034')
at ../../gcc-4.1-20050917/libcpp/files.c:436
#5 0x00000001005f2e60 in _cpp_stack_include (pfile=0x100903300,
fname=0x100907010 "segfault.h", angle_brackets=1, type=IT_INCLUDE)
at ../../gcc-4.1-20050917/libcpp/files.c:820
#6 0x00000001005eaf70 in do_include_common (pfile=0x100903300,
type=IT_INCLUDE) at ../../gcc-4.1-20050917/libcpp/directives.c:695
I stepped through it, and it appears to be failing with a gettext call.
not the exact location:
(gdb) whe
#0 libintl_dcigettext (domainname=0x1006b71a0 "cpplib",
msgid1=0x1006b71d0 "error: ", msgid2=0x0, plural=0, n=0, category=5)
at ../../gcc-4.1-20050917/intl/dcigettext.c:579
#1 0x00000001005ff234 in libintl_dgettext (domainname=0x1006b71a0 "cpplib",
msgid=0x1006b71d0 "error: ") at ../../gcc-4.1-20050917/intl/dgettext.c:53
#2 0x00000001005ed5dc in _cpp_begin_message (pfile=Variable "pfile" is not available.
)
at ../../gcc-4.1-20050917/libcpp/errors.c:120
...
(gdb)
libintl_dgettext (domainname=0x1006b71a0 "cpplib", msgid=0x1006b71d0 "error: ")
at ../../gcc-4.1-20050917/intl/dgettext.c:54
54 }
(gdb)
_cpp_begin_message (pfile=Variable "pfile" is not available.
) at ../../gcc-4.1-20050917/libcpp/errors.c:125
125 }
(gdb)
120 fputs (_("internal error: "), stderr);
(gdb)
Program received signal SIGSEGV, Segmentation fault.
0xffffffff7f23d28c in strlen () from /usr/lib/64/libc.so.1
if I set the environment variable LANG to "C" (previously unset), it works:
sparc% setenv LANG C
sparc% gcc -E -dH test.c > test.i
gcc: test.c: No such file or directory
gcc: no input files
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24039