delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2004/12/10/11:21:17

Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
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
From: "Dave Korn" <dave DOT korn AT artimi DOT com>
To: <cygwin AT cygwin DOT com>
Subject: RE: cygwin-gcc-fopen bug?
Date: Fri, 10 Dec 2004 16:18:54 -0000
MIME-Version: 1.0
In-Reply-To: <20041210161422.GA2636@ingber.com>
Message-ID: <NUTMEGf0MjkatwD43oF0000060e@NUTMEG.CAM.ARTIMI.COM>
X-OriginalArrivalTime: 10 Dec 2004 16:18:55.0046 (UTC) FILETIME=[F1DCC660:01C4DED3]

> -----Original Message-----
> From: cygwin-owner On Behalf Of Lester Ingber
> Sent: 10 December 2004 16:14

> I have a good-sized vanilla-C code that was running just fine a month
> or two ago under XPPro/Cygwin and under SPARC/Solaris9, and STILL runs
> just fine under SPARC/Solaris9.

> All my other Cygwin files are the most current.  I use gcc OR g++ to
> run my code, with OR without -mno-cygwin, and they were running fine a
> month or two ago.
> 
> My C code under Cygwin (not under Solaris9) now bombs after 4 calls to
>     if ((ptr_positions = fopen (dataFile, "r")) == NULL) {
>        ...
> Under DDD I can see that dataFile has gotten mangled and a NULL is now
> in the middle of its name.
> 
> I tried this again, using the DOS cmd to replace cygwin1.dll with the
> most current (not the snapshot cygwin1-20041117.dll), and now the code
> bombs at the very first use of fopen, a DIFFERENT place than above:
>   if ((Portfolio->ptr_err = fopen (infoFile, "a")) == NULL) {
>      ...
> 
> Any suggestions would be appreciated.


  Your code has a bug: a stray pointer or array overwrite that is trashing some
memory.  The only reason you get away with it on Solaris is by sheer luck;
either the stack or heap layout is different, or the random uninitialised
contents of a variable point somewhere harmless or something like that.

  Since you can see a NUL (heh, NULL != NUL you know!) appearing in the middle
of the name string, you could always set a gdb watchpoint on it to see exactly
when it gets stomped and what instruction is doing it.


    cheers, 
      DaveK
-- 
Can't think of a witty .sigline today....


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

- Raw text -


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