Subject: Re: bug#7952: 24.0.50; crash in find_interval

From: Romain Francoise <[email-masked]>
Date: Sat, 19 Mar 2011 14:56:21 +0100

Andreas Schwab <[email-masked]> writes:

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

Thanks, that helped.

(gdb) p tree
$1 = (INTERVAL) 0x102cdc8
(gdb) p *tree
$2 = {
  total_length = 222096,
  position = 129685,
  left = 0x11f4d58,
  right = 0x1059098,
  up = {
    interval = 0xeee915,
    obj = 15657237
  },
  up_obj = 1,
  gcmarkbit = 0,
  write_protect = 0,
  visible = 0,
  front_sticky = 0,
  rear_sticky = 0,
  plist = 20446582
}
(gdb) p relative_position
$3 = 222657
(gdb) p TOTAL_LENGTH (tree)
$4 = 222096
(gdb) l
630           if (BUFFERP (parent))
631             relative_position -= BUF_BEG (XBUFFER (parent));
632         }
633
634       if (relative_position > TOTAL_LENGTH (tree))
635         abort ();                   /* Paranoia */
636
637       if (!handling_signal)
638         tree = balance_possible_root_interval (tree);
639
(gdb)

> Probably your toolchain is too old to be able to produce complete
> unwind information.

It happens with GCC 4.4.3 (fencepost) and 4.5.2 (my machine), both
are x86_64.