From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 27316 invoked by alias); 11 Apr 2011 11:49:23 -0000 Received: (qmail 27303 invoked by uid 22791); 11 Apr 2011 11:49:23 -0000 X-SWARE-Spam-Status: No, hits=-3.1 required=5.0 tests=AWL,BAYES_00,TW_BF,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from cantor2.suse.de (HELO mx2.suse.de) (195.135.220.15) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 11 Apr 2011 11:49:18 +0000 Received: from relay2.suse.de (charybdis-ext.suse.de [195.135.221.2]) by mx2.suse.de (Postfix) with ESMTP id 20666867E2; Mon, 11 Apr 2011 13:49:17 +0200 (CEST) Date: Mon, 11 Apr 2011 11:49:00 -0000 From: Michael Matz To: Dominique Dhumieres Cc: paul.richard.thomas@gmail.com, gcc-patches@gcc.gnu.org, fortran@gcc.gnu.org Subject: Re: Implement stack arrays even for unknown sizes In-Reply-To: <20110410132925.5B1493BE18@mailhost.lps.ens.fr> Message-ID: References: <20110409100809.BF9CD3BE18@mailhost.lps.ens.fr> <20110410132925.5B1493BE18@mailhost.lps.ens.fr> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-IsSubscribed: yes Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org X-SW-Source: 2011-04/txt/msg00743.txt.bz2 Hi, On Sun, 10 Apr 2011, Dominique Dhumieres wrote: > > I find that both nf.f90 and capacita.f90 segfault in runtime for any stack size. > > On x86_64-apple-darwin10, nf.f90 "works". However if I run it through > valgrind I get > > ==64815== Memcheck, a memory error detector > ==64815== Copyright (C) 2002-2010, and GNU GPL'd, by Julian Seward et al. > ==64815== Using Valgrind-3.6.1 and LibVEX; rerun with -h for copyright info > ==64815== Command: a.out --max-stackframe=2118496 > ==64815== > ==64815== Warning: set address range perms: large range [0x7ffe6c000000, 0x7fff5bc01000) (defined) > ==64815== Warning: client switching stacks? SP change: 0x7fff5bffe410 --> 0x7fff5be0cef0 > ==64815== to suppress, use: --max-stackframe=2037024 or greater See? That's whay I meant with having to use a large ulimit for stack size. Usually stack overflows symptom is a simple segfault. What ulimit -s have you used for your capacita tests? > The segfault for capacita.f90 occurs in the subroutine fourir at the line > > write(unit=*, fmt=*) "error in fourier: n=", ntot > > AFAICT the problem occurs in the loop > > do m=1,ntot/4-1 > E(m) = exp(m*h) > end do > > If I print ntot, loc(ntot) before it I get > > 2048 140734799794712 > > After the loop loc(ntot) is > > 9205357642636066816 > > and any attemp to print its values yields a segfault. I'll poke at polyhedron somewhat. Ciao, Michael.