From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 3697 invoked by alias); 18 Apr 2003 17:46:02 -0000 Mailing-List: contact gcc-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-prs-owner@gcc.gnu.org Received: (qmail 3672 invoked by uid 71); 18 Apr 2003 17:46:01 -0000 Resent-Date: 18 Apr 2003 17:46:01 -0000 Resent-Message-ID: <20030418174601.3671.qmail@sources.redhat.com> Resent-From: gcc-gnats@gcc.gnu.org (GNATS Filer) Resent-Cc: gcc-prs@gcc.gnu.org, gcc-bugs@gcc.gnu.org Resent-Reply-To: gcc-gnats@gcc.gnu.org, jrumsey@blizzard.com Received: (qmail 1874 invoked by uid 48); 18 Apr 2003 17:40:32 -0000 Message-Id: <20030418174032.1873.qmail@sources.redhat.com> Date: Fri, 18 Apr 2003 17:46:00 -0000 From: jrumsey@blizzard.com Reply-To: jrumsey@blizzard.com To: gcc-gnats@gcc.gnu.org X-Send-Pr-Version: gnatsweb-2.9.3 (1.1.1.1.2.31) Subject: c++/10433: G++ crash using array pointer and sizeof as arguments to same function in template method X-SW-Source: 2003-04/txt/msg00845.txt.bz2 List-Id: >Number: 10433 >Category: c++ >Synopsis: G++ crash using array pointer and sizeof as arguments to same function in template method >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: ice-on-legal-code >Submitter-Id: net >Arrival-Date: Fri Apr 18 17:46:01 UTC 2003 >Closed-Date: >Last-Modified: >Originator: jrumsey@blizzard.com >Release: gcc version 3.4 20030417 (experimental) >Organization: >Environment: Mandrake 7.2 Linux, Kernel=2.4.18-6mdkenterprise #1 SMP >Description: This simple test case causes a segmentation fault in the compiler on the call to strfn(). Replacing the "query" argument with &query[0] causes it to work, as does replacing the "sizeof(query)" with a constant value, E.G. "1024". The same code in a non-template method also compiles correctly. Command line and compiler output: $ g++ -v -save-temps templatetest2.cpp -o templatetest2 Reading specs from /usr/unstable/lib/gcc-lib/i686-pc-linux-gnu/3.4/specs Configured with: ../gcc/configure --prefix=/usr/unstable Thread model: posix gcc version 3.4 20030417 (experimental) /usr/unstable/lib/gcc-lib/i686-pc-linux-gnu/3.4/cc1plus -E -quiet -v -D_GNU_SOURCE templatetest2.cpp templatetest2.ii ignoring nonexistent directory "/usr/unstable/i686-pc-linux-gnu/include" #include "..." search starts here: #include <...> search starts here: /usr/unstable/include/c++/3.4 /usr/unstable/include/c++/3.4/i686-pc-linux-gnu /usr/unstable/include/c++/3.4/backward /usr/local/include /usr/unstable/include /usr/unstable/lib/gcc-lib/i686-pc-linux-gnu/3.4/include /usr/include End of search list. /usr/unstable/lib/gcc-lib/i686-pc-linux-gnu/3.4/cc1plus -fpreprocessed templatetest2.ii -quiet -dumpbase templatetest2.cpp -auxbase templatetest2 -version -o templatetest2.s GNU C++ version 3.4 20030417 (experimental) (i686-pc-linux-gnu) compiled by GNU C version 3.4 20030417 (experimental). GGC heuristics: --param ggc-min-expand=98 --param ggc-min-heapsize=128638 templatetest2.cpp: In member function `void TClass::Load(const char*)': templatetest2.cpp:12: internal compiler error: Segmentation fault >How-To-Repeat: Compile this preprocessed source # 1 "templatetest2.cpp" # 1 "" # 1 "" # 1 "templatetest2.cpp" extern char *strfn(char *dest, const char *src, int destsize); class Record { }; template class TClass { public: void Load(const char *filter) { char query[1024]; strfn(query, "SQL QUERY", sizeof(query)); } }; int main(int argc, char **argv) { TClass db; return 0; } >Fix: >Release-Note: >Audit-Trail: >Unformatted: