Subject: 25.1; Assertion failure in attach_marker

From: martin rudalics <[email-masked]>
Date: Mon, 05 Sep 2016 09:25:21 +0200

To reproduce, put the following code into *scratch* of emacs -Q:

(defvar old-state nil)
(defvar new-state nil)

(progn
   (setq display-buffer-alist
	'(("\\*\\(?:help\\)\\*" display-buffer-in-side-window
	   (side . bottom) (slot . -1))))

   (temp-buffer-resize-mode 1)
   (add-to-list 'window-persistent-parameters '(window-preserved-size . t))
   (add-to-list 'window-persistent-parameters '(window-side . t))
   (add-to-list 'window-persistent-parameters '(window-slot . t))
   (describe-function 'describe-function)
   (other-window 1))

(defun old ()
   (interactive)
   (setq old-state (window-state-get (frame-root-window)))
   (delete-window))

(defun new ()
   (interactive)
   (setq new-state (window-state-get (frame-root-window)))
   (window-state-put old-state (frame-root-window) t)
   (window-state-put new-state (window--major-non-side-window)))

;; (eval-buffer)

Evaluate *scratch* - this should get you two windows, one showing
*scratch* and one showing *Help*.  Now do M-x old which should get you
one window showing *scratch* followed by M-x new.  The latter gets me an
assertion failure with the following backtrace:

(gdb) bt
#0  terminate_due_to_signal (sig=22, backtrace_limit=2147483647) at emacs.c:354
#1  0x011f1adf in die (msg=0x164b8c2 "charpos == bytepos", file=0x164b760 "marker.c", line=434) at alloc.c:7223
#2  0x011a21de in attach_marker (m=0x186b888, b=0x170a978, charpos=271, bytepos=275) at marker.c:434
#3  0x011a2765 in set_marker_internal (marker=..., position=..., buffer=..., restricted=true) at marker.c:517
#4  0x011a2835 in set_marker_restricted (marker=..., position=..., buffer=...) at marker.c:538
#5  0x010b898d in Fset_window_start (window=..., pos=..., noforce=...) at window.c:1679
#6  0x0122094a in Ffuncall (nargs=3, args=0x82cbf8) at eval.c:2700
#7  0x0127d425 in exec_byte_code (bytestr=..., vector=..., maxdepth=..., args_template=..., nargs=0, args=0x0) at bytecode.c:880
#8  0x01221d16 in funcall_lambda (fun=..., nargs=2, arg_vector=0x82d1d0) at eval.c:2921
#9  0x01220cc2 in Ffuncall (nargs=3, args=0x82d1c8) at eval.c:2742
#10 0x0127d425 in exec_byte_code (bytestr=..., vector=..., maxdepth=..., args_template=..., nargs=0, args=0x0) at bytecode.c:880
#11 0x01221d16 in funcall_lambda (fun=..., nargs=3, arg_vector=0x82d660) at eval.c:2921
#12 0x012211ae in apply_lambda (fun=..., args=..., count=15) at eval.c:2794
#13 0x0121ec64 in eval_sub (form=...) at eval.c:2211
#14 0x0121742d in Fprogn (body=...) at eval.c:426
#15 0x01221c18 in funcall_lambda (fun=..., nargs=0, arg_vector=0x82de40) at eval.c:2914
#16 0x01220e4e in Ffuncall (nargs=1, args=0x82de38) at eval.c:2754
#17 0x01212ce6 in Ffuncall_interactively (nargs=1, args=0x82de38) at callint.c:252
#18 0x01220763 in Ffuncall (nargs=2, args=0x82de30) at eval.c:2673
#19 0x0121f088 in Fapply (nargs=3, args=0x82de30) at eval.c:2274
#20 0x012134c2 in Fcall_interactively (function=..., record_flag=..., keys=...) at callint.c:389
#21 0x0122094a in Ffuncall (nargs=4, args=0x82e018) at eval.c:2700
#22 0x0127d425 in exec_byte_code (bytestr=..., vector=..., maxdepth=..., args_template=..., nargs=2, args=0x82e608) at bytecode.c:880
#23 0x012216b4 in funcall_lambda (fun=..., nargs=2, arg_vector=0x82e5f8) at eval.c:2855
#24 0x01220cc2 in Ffuncall (nargs=3, args=0x82e5f0) at eval.c:2742
#25 0x0127d425 in exec_byte_code (bytestr=..., vector=..., maxdepth=..., args_template=..., nargs=3, args=0x82ecf8) at bytecode.c:880
#26 0x012216b4 in funcall_lambda (fun=..., nargs=3, arg_vector=0x82ece0) at eval.c:2855
#27 0x01220cc2 in Ffuncall (nargs=4, args=0x82ecd8) at eval.c:2742
#28 0x01212ce6 in Ffuncall_interactively (nargs=4, args=0x82ecd8) at callint.c:252
#29 0x01220763 in Ffuncall (nargs=5, args=0x82ecd0) at eval.c:2673
#30 0x0121f749 in Fapply (nargs=3, args=0x82efe0) at eval.c:2321
#31 0x012134c2 in Fcall_interactively (function=..., record_flag=..., keys=...) at callint.c:389
#32 0x0122094a in Ffuncall (nargs=4, args=0x82f1c8) at eval.c:2700
#33 0x0127d425 in exec_byte_code (bytestr=..., vector=..., maxdepth=..., args_template=..., nargs=1, args=0x82f780) at bytecode.c:880
#34 0x012216b4 in funcall_lambda (fun=..., nargs=1, arg_vector=0x82f778) at eval.c:2855
#35 0x01220cc2 in Ffuncall (nargs=2, args=0x82f770) at eval.c:2742
#36 0x01220013 in call1 (fn=..., arg1=...) at eval.c:2552
#37 0x011515c3 in command_loop_1 () at keyboard.c:1479
#38 0x0121b586 in internal_condition_case (bfun=0x1150af7 <command_loop_1>, handlers=..., hfun=0x114fd8f <cmd_error>) at eval.c:1309
#39 0x01150591 in command_loop_2 (ignore=...) at keyboard.c:1107
#40 0x0121a72a in internal_catch (tag=..., func=0x1150555 <command_loop_2>, arg=...) at eval.c:1074
#41 0x01150517 in command_loop () at keyboard.c:1086
#42 0x0114f7a7 in recursive_edit_1 () at keyboard.c:692
#43 0x0114fa68 in Frecursive_edit () at keyboard.c:763
#44 0x0114d17e in main (argc=2, argv=0xa32658) at emacs.c:1626

Lisp Backtrace:
"set-window-start" (0x82cc00)
"window--state-put-2" (0x82d1d0)
"window-state-put" (0x82d660)
"new" (0x82de40)
"funcall-interactively" (0x82de38)
"call-interactively" (0x82e020)
"command-execute" (0x82e5f8)
"execute-extended-command" (0x82ece0)
"funcall-interactively" (0x82ecd8)
"call-interactively" (0x82f1d0)
"command-execute" (0x82f778)
(gdb)

In GNU Emacs 25.1.1 (i686-pc-mingw32)
  of 2016-08-22 built on MACHNO
Repository revision: 927afa1ef6514e62162068d7dbdc9d8381a71598
Windowing system distributor 'Microsoft Corp.', version 5.1.2600
Configured using:
  'configure --prefix=/c/emacs-git/next --with-wide-int
  --enable-checking=yes --enable-check-lisp-object-type=yes 'CFLAGS=-O0
  -g3''

martin