www.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1998/02/07/00:28:29

Date: Fri, 6 Feb 1998 21:27:45 -0800 (PST)
Message-Id: <199802070527.VAA19144@adit.ap.net>
Mime-Version: 1.0
To: cterry AT plinet DOT com, djgpp AT delorie DOT com
From: Nate Eldredge <eldredge AT ap DOT net>
Subject: Re: Seg fault

At 08:16  2/5/1998 -0800, Charles Terry wrote:
>David Mikesell wrote:
>> 
>> ...I'm also using Allegro 3.0
>> 
>> >
>> > I'm using djgpp 2.01 on dos 6.22 and am trying to work through
>> > a particularly nasty seg fault bug.  I will purposely keep
>> > the problem statement general here, but will be happy to
>> > drill down to the source if nobody can point me in the right
>> > direction to begin looking.
>> >
>> > I get the seg fault immediately after returning from a function
>> > that allocates memory...I can't seem to narrow the bug down to
>> > an offending pointer reference or a free() of a NULL pointer, etc.
>> > None of the malloc()'s returns a NULL pointer.  Any ideas
>> > on where to start looking?
>> >
>> > --
>If you crash on a return from malloc chances are that malloc is
>overwriting the stack.  This situation can occcur when another part of
>your own code overwrits part of mallocs internal tables.  Its a tough
>bug because the overwrite could have happend somewhere that seems
>totally unrelated.
>My own solution to this was to get the malloc source and compile it with
>debugging on. Then step through it at the point of the error and check
>the "bucket" it uses for not pointer type values.  Then get the address
>of the corupted value and put a watch on it and restart and step thru
>the program again watching fo when the pointer is overwritten.
>Sorry for such a complex answer but hope it helps.
Incidentally, if you do this, you can also compile `malloc' with `RCHECK'
defined. This includes some sanity checking in `malloc'/`free', like magic
number that verify the pointer you `free' was `malloc'ed, and that you
haven't overwritten its bounds.
There are various packages which replace/wrap `malloc' and check for such
errors, as well as others. One is called Fortify.

Nate Eldredge
eldredge AT ap DOT net



- Raw text -


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