public inbox for gcc-prs@sourceware.org help / color / mirror / Atom feed
From: Zack Weinberg <zack@codesourcery.com> To: nobody@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org, Subject: Re: c++/8511: (hopefully) reproducible cc1plus SIGSEGV. Date: Sun, 10 Nov 2002 12:46:00 -0000 [thread overview] Message-ID: <20021110204603.1780.qmail@sources.redhat.com> (raw) The following reply was made to PR c++/8511; it has been noted by GNATS. From: Zack Weinberg <zack@codesourcery.com> To: wwieser@gmx.de Cc: gcc-gnats@gcc.gnu.org Subject: Re: c++/8511: (hopefully) reproducible cc1plus SIGSEGV. Date: Sun, 10 Nov 2002 12:43:03 -0800 On Sat, Nov 09, 2002 at 12:33:14PM -0000, wwieser@gmx.de wrote: > Compiling the attached code, I am able to reproducible > SIGSEGV the GNU C++ compiler. > > I am sorry for not reducing code size very much but after spending more > than an hour on stripping it down, gcc-3.2.1 crashed while 3.3 did not. > Also, removing lines which I think have little to do with the problem > also turns the crash into "just" an internal compiler error. That is an expected effect for the sort of bug you have found. > First of all, I patched toplev.c to not call signal(SIGSEGV,crash_signal) > but die of SIGSEGV instead. This makes it possible to find the crash > with gdb. [BTW, to ease debugging, I suggest you do not _exit(1) on > SIGSEGV/ILL/... and ICE but terminate the program by killing itself via > SIGABRT. This way, it gets much easier to debug internal errors.] I do not understand why you need this. When I run cc1(plus) under GDB and it takes a fatal signal, GDB recovers control at the point of the signal, before signal handlers have a chance to run. For debugging 'plain' ICEs, the thing to do is set a breakpoint on internal_error() before running the program. > if (type == 0 || TREE_CODE (type) != REFERENCE_TYPE) > { > ==> if (TREE_CODE (TREE_TYPE (val)) == ARRAY_TYPE > || TREE_CODE (TREE_TYPE (val)) == FUNCTION_TYPE > || TREE_CODE (TREE_TYPE (val)) == METHOD_TYPE) > val = default_conversion (val); > } > > if (val == error_mark_node) > return error_mark_node; > > ... > > (Neither type nor val are NULL.) There's not enough information here to know what went wrong. Probably TREE_TYPE (val) was an invalid pointer. > ==> switch (TREE_CODE (t)) > { > case IDENTIFIER_NODE: > return do_identifier (t, 0, NULL_TREE); > > Crash with t=0xa5a5a5a5 (uh, looks suspicious...) Yeah. That means the garbage collector ate a piece of live data. These are a pain to debug -- even slight changes in the input will make the problem vanish. Unfortunately, using the code you posted, I cannot reproduce the crash; I see same the ICE in c_expand_expr that Volker Reichelt did. This is very likely to be because the libstdc++ headers have changed just enough to perturb the bug into going away; I don't see any logged changes that could plausibly have fixed the bug. We need you to give us a preprocessed source file. Using your installation, issue this command: g++ -V3.3 -v -save-temps -I. -Wno-non-template-friend -Wno-unused \ -ftemplate-depth-30 -c -o spline.o spline.cpp That should provoke the same crash, but it will produce a file named spline.i as a side effect. Send us that file (compressed! it will be huge) and the complete output of the command. zw
next reply other threads:[~2002-11-10 20:46 UTC|newest] Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top 2002-11-10 12:46 Zack Weinberg [this message] -- strict thread matches above, loose matches on Subject: below -- 2002-11-22 10:46 Wolfgang Wieser 2002-11-20 18:16 Zack Weinberg 2002-11-20 18:12 Wolfgang Wieser 2002-11-19 18:25 Zack Weinberg 2002-11-19 18:16 Wolfgang Wieser 2002-11-10 13:16 Volker Reichelt 2002-11-10 5:26 wwieser 2002-11-09 15:54 reichelt 2002-11-09 4:36 wwieser
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=20021110204603.1780.qmail@sources.redhat.com \ --to=zack@codesourcery.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: linkBe 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).