Subject: bug#7952: 24.0.50; crash in find_interval

From: Eli Zaretskii <[email-masked]>
Date: Sat, 19 Mar 2011 14:51:25 +0200

> From: Andreas Schwab <[email-masked]>
> Cc: Romain Francoise <[email-masked]>,  [email-masked]
> Date: Sat, 19 Mar 2011 13:14:48 +0100
> 
> Eli Zaretskii <[email-masked]> writes:
> 
> > There's nothing in this code that modifies `tree' in any way.  (I even
> > disassembled the code to make sure.)  So how come a non-NULL value
> > becomes NULL here?
> 
> It isn't, otherwise you would get a crash.

Unless it happens after the place where `tree' is dereferenced.

> > Since this value is passed in a register by the caller and kept in a
> > register from the very beginning of the function, not even some
> > missing GCPRO somewhere could explain this.  What am I missing?
> 
> Probably your toolchain is too old to be able to produce complete unwind
> information.

I doubt that, since it's GDB 7.2.  Maybe it's a GCC problem.

> Try setting a breakpoint at the abort line to get a better picture.

It's a core file.  Romain, could you try that, perhaps?

In any case, we could look at TOTAL_LENGTH of the pointer in the frame
where it has a non-NULL value.