This is the mail archive of the libc-hacker@sourceware.cygnus.com mailing list for the glibc project.

Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: interesting change


> Mailing-List: contact libc-hacker-help@sourceware.cygnus.com; run by ezmlm
> List-Unsubscribe: <mailto:libc-hacker-unsubscribe-geoffk=discus.anu.edu.au@sourceware.cygnus.com>
> List-Archive: <http://sourceware.cygnus.com/ml/libc-hacker/>
> List-Help: <mailto:libc-hacker-help@sourceware.cygnus.com>,
> 	<http://sourceware.cygnus.com/ml/#faqs>
> Cc: libc-hacker@sourceware.cygnus.com
> Reply-To: drepper@cygnus.com (Ulrich Drepper)
> From: Ulrich Drepper <drepper@cygnus.com>
> Date: 30 Jul 1999 23:56:06 -0700
> 
> Thorsten Kukuk <kukuk@suse.de> writes:
> 
> > 1. One of our malloc function was called before the crash in
> >   a way that __libc_pagesize is not set the first time.
> 
> The value is set in a constructor which runs before any application
> code.  Except if the application somehow inluences the constructors
> which does not only break mallo.c

It's possible that ld.so has started calling the wrong malloc() again.

There's a short window when ld.so musn't call malloc(), because it
will get the application's malloc before it has run the constructors.

The easiest way to find this is to have a small application:

void *malloc(size_t m)
{
  write (STDOUT_FILENO, "malloc called\n", 14);
  return 0;
}

void _start(void)
{ 
  write (STDOUT_FILENO, "ok to call malloc after this\n", 29);
  _exit(0);
}

-- 
Geoffrey Keating <geoffk@cygnus.com>

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]