Subject: bug#58144: 29.0.50; [noverlay] Abort when committing in Magit

From: Gerd Möllmann <[email-masked]>
Date: Wed, 28 Sep 2022 16:29:39 +0200

An attempt to commit changes in Magit led to an abort in
interval_tree_iter_start 

frame #9: 0x00000001002e2900 emacs`interval_tree_iter_start(tree=0x0000600003034870, begin=5464, end=2730898, order=ITREE_ASCENDING, file="buffer.c", line=2937) at itree.c:441:5
   438 				  const char* file, int line)
   439 	{
   440 	  if (tree->iter_running)
-> 441 	    emacs_abort ();
   442 	  interval_generator_reset (tree->iter, begin, end, order);
   443 	  tree->iter_running = 1;
   444 	  tree->file = file;

Because this wasn't debuggable, I've changed the code to record where an
iteration starts, which is, in this case, 

static bool
strings_with_newlines (ptrdiff_t startpos, ptrdiff_t endpos, struct window *w)
{
  struct interval_node *node;
  /* Process overlays before the overlay center.  */
  buffer_overlay_iter_start (current_buffer,
                             startpos, endpos, ITREE_DESCENDING);

I'll fix that, and also put the location recording in, to make debugging
such cases easier.