Subject: bug#2193: 23.0.90/winxp; crash when closing speedbar

From: Eli Zaretskii <[email-masked]>
Date: Wed, 04 Feb 2009 20:23:15 +0200

> Date: Wed, 4 Feb 2009 14:29:46 +0100
> From: lode leroy <[email-masked]>
> Cc: 
> 
> emacs crashes every time I do the following:
> 
> go to Options->Show/Hide->speedbar
> in the speedbar frame: click modeline->Speedbar->Quit

Confirmed.

For those who (unlike myself) have time to look at this, here's the
crash report from DrMinGW:

emacs.exe caused an Access Violation at location 0115f1cf in module emacs.exe Reading from location 00000104.

Registers:
eax=00000000 ebx=02a2b801 ecx=02a2b801 edx=02bcee00 esi=02a2b801 edi=00000002
eip=0115f1cf esp=0082fbf0 ebp=0082fbf8 iopl=0         nv up ei pl zr na po nc
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00000246

Call stack:
0115F1CF  emacs.exe:0115F1CF  cancel_hourglass  w32fns.c:5283

	...
	   hourglass_hwnd);
	
>	      f->output_data.w32->hourglass_p = 0;
	      SetCursor (f->output_data.w32->current_cursor);
	      hourglass_shown_p = 0;
	...

01052280  emacs.exe:01052280  cancel_hourglass_unwind  keyboard.c:1516

	...
	{
	  cancel_hourglass ();
>	  return Qnil;
	}
	#endif
	...

0100A50A  emacs.exe:0100A50A  unbind_to  eval.c:3429

	...
	    SET_SYMBOL_VALUE (this_binding.symbol, this_binding.old_value);
	  else
>	    set_internal (this_binding.symbol, this_binding.old_value, 0, 1);
	}
	    }
	...

0105F2BF  emacs.exe:0105F2BF  command_loop_1  keyboard.c:1908

	...
	     just because a command in the macro finishes.  */
	  if (NILP (Vexecuting_kbd_macro))
>	            unbind_to (scount, Qnil);
	#endif
	          }
	...

01009FBE  emacs.exe:01009FBE  internal_condition_case  eval.c:1512

	...
	
	  val = (*bfun) ();
>	  catchlist = c.next;
	  handlerlist = h.next;
	  return val;
	...

0105207A  emacs.exe:0105207A  command_loop_2  keyboard.c:1357

	...
	
	  do
>	    val = internal_condition_case (command_loop_1, Qerror, cmd_error);
	  while (!NILP (val));
	
	...

01009EF3  emacs.exe:01009EF3  internal_catch  eval.c:1247

	...
	  /* Call FUNC.  */
	  if (! _setjmp (c.jmp))
>	    c.val = (*func) (arg);
	
	  /* Throw works by a longjmp that comes right here.  */
	...

01051E87  emacs.exe:01051E87  command_loop  keyboard.c:1340

	...
	
	/* End of file in -batch run causes exit here.  */
>	if (noninteractive)
	  Fkill_emacs (Qt);
	      }
	...

01051F20  emacs.exe:01051F20  recursive_edit_1  keyboard.c:952

	...
	
	  val = command_loop ();
>	  if (EQ (val, Qt))
	    Fsignal (Qquit, Qnil);
	  /* Handle throw from read_minibuf when using minibuffer
	...

01052041  emacs.exe:01052041  Frecursive_edit  keyboard.c:1014

	...
	
	  recursive_edit_1 ();
>	  return unbind_to (count, Qnil);
	}
	
	...

01002E47  emacs.exe:01002E47  main  emacs.c:1855

	...
	  /* NOTREACHED */
	  return 0;
>	}
	
	/* Sort the args so we can find the most important ones
	...

0100124B  emacs.exe:0100124B
01001298  emacs.exe:01001298
7C816D4F  kernel32.dll:7C816D4F  RegisterWaitForInputIdle