delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2009/12/02/04:08:13

X-Recipient: archive-cygwin AT delorie DOT com
X-SWARE-Spam-Status: No, hits=-2.5 required=5.0 tests=AWL,BAYES_00,SPF_PASS
X-Spam-Check-By: sourceware.org
Message-ID: <4B162F25.7030906@gmail.com>
Date: Wed, 02 Dec 2009 09:11:01 +0000
From: Dave Korn <dave DOT korn DOT cygwin AT googlemail DOT com>
User-Agent: Thunderbird 2.0.0.17 (Windows/20080914)
MIME-Version: 1.0
To: cygwin AT cygwin DOT com
Subject: Re: odd segfault with my c program using cygwin 1.7
References: <20071202162155 DOT XNVY20104 DOT mta10 DOT adelphia DOT net AT dual-xeon DOT weasel DOT com> <20091202013344138 DOT XZWP20286 AT cdptpa-omta02 DOT mail DOT rr DOT com> <416096c60912012235h2e5290c3q4ad720134d4f0422 AT mail DOT gmail DOT com> <4B161962 DOT 3090108 AT gmail DOT com> <416096c60912012346j43db4597j2590fa3d9e93ffb7 AT mail DOT gmail DOT com>
In-Reply-To: <416096c60912012346j43db4597j2590fa3d9e93ffb7@mail.gmail.com>
Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Id: <cygwin.cygwin.com>
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com

Andy Koppe wrote:
> 2009/12/2 Dave Korn:
>> Andy Koppe wrote:
>>> 2009/12/2 jeffunit:
>>>> My program ran fine under cygwin 1.5 as well as many versions of
>>>> linux including mandriva 2009, mandriva 2009.1 and mandriva 2010.0
>>>>
>>>> When compiled with
>>>> gcc cal.c -o cal
>>>> and run with
>>>> cal 2009
>>>> I get a segmentation fault.
>>>> When I uncomment line 62, the program runs successfully.
>>> It's the line after that that has the bug: it's writing to index 432
>>> of a 432-element array.
>>  Doesn't look like it does to me:
>>
>>>         for(j=0; j<6*72; j++) {
>>>           //printf("joe %d\n", j);
>>>           string[j] = '\0';
>>>       }
>>  That's less than 432, not less than or equal.
> 
> You're right, somehow I'd completely misread that, thinking that the
> string[j]='\0' is outside the loop.


  Still, it could be some other overflow somewhere else; as I'd guess you were
reasoning, that's the commonest reason for this sort of bug that crops up on
some platforms with some stack and memory layouts and not others.

  Jeff, recompile your code, adding the "-g" flag, then run it under gdb, and
when the segfault happens, use the "bt" command to get a backtrace and see
where you are.

    cheers,
      DaveK


--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019