[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: please set both MALLOC_PERTURB_ and MALLOC_CHECK_ envvars
From: |
Jim Meyering |
Subject: |
Re: please set both MALLOC_PERTURB_ and MALLOC_CHECK_ envvars |
Date: |
Fri, 27 May 2011 23:57:40 +0200 |
Jim Meyering wrote:
> Now, bootstrapping emacs on Fedora 15 x86_64
> (with env settings as below) fails with a segfault.
>
> If you develop emacs, or even if you just build from sources regularly,
> on a glibc-based system, do us all a favor and build with these envvar
> settings:
>
> export MALLOC_PERTURB_=$((RANDOM % 255 + 1))
> export MALLOC_CHECK_=3
>
> Why? Because that helps you expose malloc-related problems far earlier.
> I've found numerous bugs that way. The trouble is that you have to
> be ready to debug, or at least ready to retry with
>
> env MALLOC_PERTURB_=0 MALLOC_CHECK_=0 make ...
>
> to see if things work better without protection.
>
> Until recently, I've been building like this to work around
> a problem that I traced back to a commit in emacs several years ago:
>
> make bootstrap RUN_TEMACS='MALLOC_CHECK_=0 ./temacs'
>
> However, today, even with that, make bootstrap is failing with a
> segfault (in various places) that goes away when I turn off malloc
> robustness checking via both variables for the whole process
> and not just one of them when running temacs:
>
> MALLOC_PERTURB_=0 MALLOC_CHECK_=0 make bootstrap
>
> That suggests a very recent change (within the last 24 hrs)
> makes emacs act to differently when MALLOC_PERTURB_=N causes glibc
> to scribble nonzero (N) bytes into each just freed buffer.
Most of that argument is valid, but I have to confess this time
a compiler problem appears to be at fault. To get "make" to succeed,
I have to build like this:
env MALLOC_CHECK_=0 make CFLAGS=-O0
Use CFLAGS=-O or MALLOC_CHECK_=4 (or anything else in 1..255)
and the build segfaults when using the just-built temacs
to compile .el files.
Re: please set both MALLOC_PERTURB_ and MALLOC_CHECK_ envvars, Paul Eggert, 2011/05/29