unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Freeze with specific evaluation in the modeline
@ 2024-09-02 19:56 Nicolas P. Rougier (inria)
  2024-09-02 21:40 ` Stephen Berman
  0 siblings, 1 reply; 4+ messages in thread
From: Nicolas P. Rougier (inria) @ 2024-09-02 19:56 UTC (permalink / raw)
  To: emacs-devel


I've tried the following code (with Emacs -q, v30.0.60):

(setq mode-line-format
       '(:eval (if (window-in-direction 'down) "yes" "no")))

and it somehow freezes Emacs even though menubar is still responsive and
I can quit through the menu. I'm not sure how to debug since I cannot
really interact anymore.

Could anyone confirms the behavior?

Nicolas

-- 
Nicolas P. Rougier —— www.labri.fr/perso/nrougier
Institute of Neurodegenerative Diseases, Bordeaux



^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Freeze with specific evaluation in the modeline
  2024-09-02 19:56 Freeze with specific evaluation in the modeline Nicolas P. Rougier (inria)
@ 2024-09-02 21:40 ` Stephen Berman
  2024-09-03 14:17   ` Eli Zaretskii
  0 siblings, 1 reply; 4+ messages in thread
From: Stephen Berman @ 2024-09-02 21:40 UTC (permalink / raw)
  To: Nicolas P. Rougier (inria); +Cc: emacs-devel

On Mon, 02 Sep 2024 21:56:13 +0200 "Nicolas P. Rougier (inria)" <nicolas.rougier@inria.fr> wrote:

> I've tried the following code (with Emacs -q, v30.0.60):
>
> (setq mode-line-format
>        '(:eval (if (window-in-direction 'down) "yes" "no")))
>
> and it somehow freezes Emacs even though menubar is still responsive and
> I can quit through the menu. I'm not sure how to debug since I cannot
> really interact anymore.
>
> Could anyone confirms the behavior?

I can, and when I ran emacs under gdb and evaluated the above sexp, this
immediately caused a segfault in pos_visible_p.  I then typed bt full at
the gdb prompt and the backtrace appeared to infloop; when I interrupted
it, it was at frame #3935.  Below is the backtrace up to the start of
frame #48, which I think shows the loop.

Steve Berman

Thread 1 "emacs" received signal SIGSEGV, Segmentation fault.
0x00005555555e44a2 in pos_visible_p (w=w@entry=0x5555561a7de0,
    charpos=charpos@entry=230, x=x@entry=0x7fffff6735d0, y=y@entry=0x7fffff6735d4,
    rtop=rtop@entry=0x7fffff6735c0, rbot=rbot@entry=0x7fffff6735c4,
    rowh=0x7fffff6735c8, vpos=0x7fffff6735cc)
    at /home/steve/src/emacs/emacs-master/src/xdisp.c:1685
1685	{
(gdb) bt full
#0  0x00005555555e44a2 in pos_visible_p
    (w=w@entry=0x5555561a7de0, charpos=charpos@entry=230, x=x@entry=0x7fffff6735d0, y=y@entry=0x7fffff6735d4, rtop=rtop@entry=0x7fffff6735c0, rbot=rbot@entry=0x7fffff6735c4, rowh=0x7fffff6735c8, vpos=0x7fffff6735cc)
    at /home/steve/src/emacs/emacs-master/src/xdisp.c:1685
        it = Python Exception <class 'gdb.MemoryError'>: Cannot access memory at address 0x7fffff66e7b0
#1  0x0000555555602027 in Fpos_visible_in_window_p
    (pos=make_fixnum(230), window=window@entry=XIL(0x5555561a7de5), partially=partially@entry=XIL(0x30)) at /home/steve/src/emacs/emacs-master/src/window.c:2018
        w = 0x5555561a7de0
        posint = 230
        buf = 0x7fffef7b00b0
        top = {
          charpos = <optimized out>,
          bytepos = <optimized out>
        }
        in_window = XIL(0)
        rtop = 595
        rbot = 0
        rowh = 81115136
        vpos = -216074776
        fully_p = true
        x = 95328
        y = 0
#2  0x00005555556a34de in Fposn_at_point
    (pos=<optimized out>, window=XIL(0x5555561a7de5))
    at /home/steve/src/emacs/emacs-master/src/keyboard.c:12547
        tem = <optimized out>
#3  0x00007fffef1d00ba in F77696e646f772d696e2d646972656374696f6e_window_in_direction_0 ()
    at /home/steve/build/emacs-master/src/../native-lisp/31.0.50-d78d1870/preloaded/window-d09bfc58-55eb0ae6.eln
#4  0x0000555555716f82 in eval_sub (form=<optimized out>)
    at /home/steve/src/emacs/emacs-master/src/eval.c:2594
        i = 6
        maxargs = 6
        args_left = XIL(0)
        numargs = 1
        original_fun = <optimized out>
        original_args = XIL(0x7fffef2cc6b3)
        count = {
          bytes = <optimized out>
        }
        fun = XIL(0x7fffefa0bcfd)
        val = <optimized out>
        funcar = <optimized out>
        argvals = {XIL(0x74a0), XIL(0), XIL(0), XIL(0), XIL(0), XIL(0), XIL(0), XIL(0)}
        retry = <optimized out>
#5  0x0000555555717775 in Fif (args=XIL(0x7fffef2cc6a3))
    at /home/steve/src/emacs/emacs-master/src/eval.c:382
        cond = <optimized out>
#6  0x0000555555716d2e in eval_sub (form=form@entry=XIL(0x7fffef2cc6f3))
    at /home/steve/src/emacs/emacs-master/src/eval.c:2526
        args_left = XIL(0x7fffef2cc6a3)
        numargs = 3
        original_fun = XIL(0xaa10)
        original_args = XIL(0x7fffef2cc6a3)
        count = {
          bytes = <optimized out>
        }
        fun = XIL(0x555555d538a5)
        val = <optimized out>
        funcar = <optimized out>
        argvals = {XIL(0), XIL(0x7fffefbcdc0b), XIL(0x5555569c8200), XIL(0x1), XIL(0x5555569c8200), XIL(0x7fffff673ba8), XIL(0x555555d52d00), XIL(0x5555557134a9)}
        retry = <optimized out>
#7  0x0000555555718514 in Feval (form=XIL(0x7fffef2cc6f3), lexical=<optimized out>)
    at /home/steve/src/emacs/emacs-master/src/eval.c:2439
        count = {
          bytes = <optimized out>
        }
#8  0x0000555555715eb6 in funcall_subr
    (subr=subr@entry=0x555555d52d00 <Seval>, numargs=numargs@entry=2, args=args@entry=0x7fffff673ba8) at /home/steve/src/emacs/emacs-master/src/eval.c:3140
        argbuf = {XIL(0), XIL(0), XIL(0), XIL(0), XIL(0), XIL(0), XIL(0), XIL(0x555555704cf0)}
        a = <optimized out>
        maxargs = 2
        fun = <optimized out>
#9  0x00005555557176f2 in funcall_general
    (fun=XIL(0x555555d52d05), numargs=numargs@entry=2, args=args@entry=0x7fffff673ba8) at /home/steve/src/emacs/emacs-master/src/lisp.h:2256
        original_fun = XIL(0x7ce0)
#10 0x0000555555714cc1 in Ffuncall
    (nargs=nargs@entry=3, args=args@entry=0x7fffff673ba0)
    at /home/steve/src/emacs/emacs-master/src/eval.c:3070
        count = {
          bytes = 95200
        }
        val = <optimized out>
#11 0x0000555555713e23 in internal_condition_case_n
    (bfun=bfun@entry=0x555555714c25 <Ffuncall>, nargs=nargs@entry=3, args=args@entry=0x7fffff673ba0, handlers=handlers@entry=XIL(0x30), hfun=hfun@entry=0x5555555cbc2a <dsafe_eval_handler>) at /home/steve/src/emacs/emacs-master/src/eval.c:1678
        val = <optimized out>
        c = 0x555556898f40
#12 0x00005555555bb4c7 in dsafe__call
    (inhibit_quit=inhibit_quit@entry=true, f=0x555555714c25 <Ffuncall>, nargs=nargs@entry=3, args=args@entry=0x7fffff673ba0)
    at /home/steve/src/emacs/emacs-master/src/xdisp.c:3093
        count = {
          bytes = <optimized out>
        }
        val = <optimized out>
#13 0x00005555555bb5a0 in dsafe_eval (sexpr=<optimized out>)
    at /home/steve/src/emacs/emacs-master/src/xdisp.c:3129
#14 0x00005555555e31d6 in display_mode_element
    (it=it@entry=0x7fffff673cd0, depth=1,
    depth@entry=0, field_width=field_width@entry=0, precision=precision@entry=0, elt=elt@entry=XIL(0x7fffef2cc703), props=props@entry=XIL(0), risky=false)
    at /home/steve/src/emacs/emacs-master/src/xdisp.c:27984
        spec = <optimized out>
        car = XIL(0xf30)
        tem = <optimized out>
        n = 0
        field = <optimized out>
        prec = <optimized out>
        literal = false
#15 0x00005555555e4110 in display_mode_line
    (w=w@entry=0x5555561a7de0, face_id=MODE_LINE_ACTIVE_FACE_ID, format=XIL(0x7fffef2cc703)) at /home/steve/src/emacs/emacs-master/src/xdisp.c:27495
        it = {
          window = XIL(0x5555561a7de5),
          w = 0x5555561a7de0,
          f = 0x5555561a7b58,
          method = GET_FROM_BUFFER,
          stop_charpos = 0,
          prev_stop = 0,
          base_level_stop = 0,
          end_charpos = 0,
          medium_narrowing_begv = 0,
          medium_narrowing_zv = 0,
          large_narrowing_begv = 0,
          large_narrowing_zv = 0,
          s = 0x0,
          string_nchars = 0,
          multibyte_p = true,
          tab_line_p = false,
          header_line_p = false,
          string_from_display_prop_p = false,
          string_from_prefix_prop_p = false,
          from_disp_prop_p = false,
          ellipsis_p = false,
          avoid_cursor_p = false,
          dp = 0x0,
          dpvec = 0x0,
          dpend = 0x0,
          dpvec_char_len = 0,
          dpvec_face_id = 0,
          saved_face_id = 0,
          ctl_chars = {XIL(0) <repeats 16 times>},
          start = {
            pos = {
              charpos = 0,
              bytepos = 0
            },
            overlay_string_index = 0,
            string_pos = {
              charpos = 0,
              bytepos = 0
            },
            dpvec_index = 0
          },
          current = {
            pos = {
              charpos = 0,
              bytepos = 0
            },
            overlay_string_index = -1,
            string_pos = {
              charpos = -1,
              bytepos = -1
            },
            dpvec_index = -1
          },
          n_overlay_strings = 0,
          overlay_strings_charpos = 0,
          overlay_strings = {XIL(0) <repeats 16 times>},
          string_overlays = {XIL(0) <repeats 16 times>},
          string = XIL(0),
          from_overlay = XIL(0),
          stack = {{
              string = XIL(0),
              string_nchars = 0,
              end_charpos = 0,
              stop_charpos = 0,
              prev_stop = 0,
              base_level_stop = 0,
              cmp_it = {
                stop_pos = 0,
                id = 0,
                ch = 0,
                rule_idx = 0,
                lookback = 0,
                nglyphs = 0,
                reversed_p = false,
                parent_it = 0x0,
                charpos = 0,
                nchars = 0,
                nbytes = 0,
                from = 0,
                to = 0,
                width = 0
              },
              face_id = 0,
              u = {
                image = {
                  object = XIL(0),
                  slice = {
                    x = XIL(0),
                    y = XIL(0),
                    width = XIL(0),
                    height = XIL(0)
                  },
                  image_id = 0
                },
                stretch = {
                  object = XIL(0)
                },
                xwidget = {
                  object = XIL(0)
                }
              },
              position = {
                charpos = 0,
                bytepos = 0
              },
              current = {
                pos = {
                  charpos = 0,
                  bytepos = 0
                },
                overlay_string_index = 0,
                string_pos = {
                  charpos = 0,
                  bytepos = 0
                },
                dpvec_index = 0
              },
              from_overlay = XIL(0),
              area = LEFT_MARGIN_AREA,
              method = GET_FROM_BUFFER,
              paragraph_embedding = NEUTRAL_DIR,
              multibyte_p = false,
              string_from_display_prop_p = false,
              string_from_prefix_prop_p = false,
              display_ellipsis_p = false,
              avoid_cursor_p = false,
              bidi_p = false,
              from_disp_prop_p = false,
              line_wrap = TRUNCATE,
              voffset = 0,
              space_width = XIL(0),
              font_height = XIL(0)
            }, {
              string = XIL(0),
              string_nchars = 0,
              end_charpos = 0,
              stop_charpos = 0,
              prev_stop = 0,
              base_level_stop = 0,
              cmp_it = {
                stop_pos = 0,
                id = 0,
                ch = 0,
                rule_idx = 0,
                lookback = 0,
                nglyphs = 0,
                reversed_p = false,
                parent_it = 0x0,
                charpos = 0,
                nchars = 0,
                nbytes = 0,
                from = 0,
                to = 0,
                width = 0
              },
              face_id = 0,
              u = {
                image = {
                  object = XIL(0),
                  slice = {
                    x = XIL(0),
                    y = XIL(0),
                    width = XIL(0),
                    height = XIL(0)
                  },
                  image_id = 0
                },
                stretch = {
                  object = XIL(0)
                },
                xwidget = {
                  object = XIL(0)
                }
              },
              position = {
                charpos = 0,
                bytepos = 0
              },
              current = {
                pos = {
                  charpos = 0,
                  bytepos = 0
                },
                overlay_string_index = 0,
                string_pos = {
                  charpos = 0,
                  bytepos = 0
                },
                dpvec_index = 0
              },
              from_overlay = XIL(0),
              area = LEFT_MARGIN_AREA,
              method = GET_FROM_BUFFER,
              paragraph_embedding = NEUTRAL_DIR,
              multibyte_p = false,
              string_from_display_prop_p = false,
              string_from_prefix_prop_p = false,
              display_ellipsis_p = false,
              avoid_cursor_p = false,
              bidi_p = false,
              from_disp_prop_p = false,
              line_wrap = TRUNCATE,
              voffset = 0,
              space_width = XIL(0),
              font_height = XIL(0)
            }, {
              string = XIL(0),
              string_nchars = 0,
              end_charpos = 0,
              stop_charpos = 0,
              prev_stop = 0,
              base_level_stop = 0,
              cmp_it = {
                stop_pos = 0,
                id = 0,
                ch = 0,
                rule_idx = 0,
                lookback = 0,
                nglyphs = 0,
                reversed_p = false,
                parent_it = 0x0,
                charpos = 0,
                nchars = 0,
                nbytes = 0,
                from = 0,
                to = 0,
                width = 0
              },
              face_id = 0,
              u = {
                image = {
                  object = XIL(0),
                  slice = {
                    x = XIL(0),
                    y = XIL(0),
                    width = XIL(0),
                    height = XIL(0)
                  },
                  image_id = 0
                },
                stretch = {
                  object = XIL(0)
                },
                xwidget = {
                  object = XIL(0)
                }
              },
              position = {
                charpos = 0,
                bytepos = 0
              },
              current = {
                pos = {
                  charpos = 0,
                  bytepos = 0
                },
                overlay_string_index = 0,
                string_pos = {
                  charpos = 0,
                  bytepos = 0
                },
                dpvec_index = 0
              },
              from_overlay = XIL(0),
              area = LEFT_MARGIN_AREA,
              method = GET_FROM_BUFFER,
              paragraph_embedding = NEUTRAL_DIR,
              multibyte_p = false,
              string_from_display_prop_p = false,
              string_from_prefix_prop_p = false,
              display_ellipsis_p = false,
              avoid_cursor_p = false,
              bidi_p = false,
              from_disp_prop_p = false,
              line_wrap = TRUNCATE,
              voffset = 0,
              space_width = XIL(0),
              font_height = XIL(0)
            }, {
              string = XIL(0),
              string_nchars = 0,
              end_charpos = 0,
              stop_charpos = 0,
              prev_stop = 0,
              base_level_stop = 0,
              cmp_it = {
                stop_pos = 0,
                id = 0,
                ch = 0,
                rule_idx = 0,
                lookback = 0,
                nglyphs = 0,
                reversed_p = false,
                parent_it = 0x0,
                charpos = 0,
                nchars = 0,
                nbytes = 0,
                from = 0,
                to = 0,
                width = 0
              },
              face_id = 0,
              u = {
                image = {
                  object = XIL(0),
                  slice = {
                    x = XIL(0),
                    y = XIL(0),
                    width = XIL(0),
                    height = XIL(0)
                  },
                  image_id = 0
                },
                stretch = {
                  object = XIL(0)
                },
                xwidget = {
                  object = XIL(0)
                }
              },
              position = {
                charpos = 0,
                bytepos = 0
              },
              current = {
                pos = {
                  charpos = 0,
                  bytepos = 0
                },
                overlay_string_index = 0,
                string_pos = {
                  charpos = 0,
                  bytepos = 0
                },
                dpvec_index = 0
              },
              from_overlay = XIL(0),
              area = LEFT_MARGIN_AREA,
              method = GET_FROM_BUFFER,
              paragraph_embedding = NEUTRAL_DIR,
              multibyte_p = false,
              string_from_display_prop_p = false,
              string_from_prefix_prop_p = false,
              display_ellipsis_p = false,
              avoid_cursor_p = false,
              bidi_p = false,
              from_disp_prop_p = false,
              line_wrap = TRUNCATE,
              voffset = 0,
              space_width = XIL(0),
              font_height = XIL(0)
            }, {
              string = XIL(0),
              string_nchars = 0,
              end_charpos = 0,
              stop_charpos = 0,
              prev_stop = 0,
              base_level_stop = 0,
              cmp_it = {
                stop_pos = 0,
                id = 0,
                ch = 0,
                rule_idx = 0,
                lookback = 0,
                nglyphs = 0,
                reversed_p = false,
                parent_it = 0x0,
                charpos = 0,
                nchars = 0,
                nbytes = 0,
                from = 0,
                to = 0,
                width = 0
              },
              face_id = 0,
              u = {
                image = {
                  object = XIL(0),
                  slice = {
                    x = XIL(0),
                    y = XIL(0),
                    width = XIL(0),
                    height = XIL(0)
                  },
                  image_id = 0
                },
                stretch = {
                  object = XIL(0)
                },
                xwidget = {
                  object = XIL(0)
                }
              },
              position = {
                charpos = 0,
                bytepos = 0
              },
              current = {
                pos = {
                  charpos = 0,
                  bytepos = 0
                },
                overlay_string_index = 0,
                string_pos = {
                  charpos = 0,
                  bytepos = 0
                },
                dpvec_index = 0
              },
              from_overlay = XIL(0),
              area = LEFT_MARGIN_AREA,
              method = GET_FROM_BUFFER,
              paragraph_embedding = NEUTRAL_DIR,
              multibyte_p = false,
              string_from_display_prop_p = false,
              string_from_prefix_prop_p = false,
              display_ellipsis_p = false,
              avoid_cursor_p = false,
              bidi_p = false,
              from_disp_prop_p = false,
              line_wrap = TRUNCATE,
              voffset = 0,
              space_width = XIL(0),
              font_height = XIL(0)
            }},
          sp = 0,
          selective = 0,
          what = IT_CHARACTER,
          face_id = 1,
          selective_display_ellipsis_p = true,
          ctl_arrow_p = true,
          face_box_p = true,
          start_of_box_run_p = true,
          end_of_box_run_p = false,
          overlay_strings_at_end_processed_p = false,
          ignore_overlay_strings_at_pos_p = false,
          glyph_not_available_p = false,
          starts_in_middle_of_char_p = false,
          face_before_selective_p = false,
          constrain_row_ascent_descent_p = false,
          line_number_produced_p = false,
          align_visually_p = false,
          line_wrap = TRUNCATE,
          base_face_id = 1,
          c = 0,
          len = 0,
          cmp_it = {
            stop_pos = 0,
            id = -1,
            ch = 0,
            rule_idx = 0,
            lookback = 0,
            nglyphs = 0,
            reversed_p = false,
            parent_it = 0x7fffff673cd0,
            charpos = 0,
            nchars = 0,
            nbytes = 0,
            from = 0,
            to = 0,
            width = 0
          },
          char_to_display = 0,
          glyphless_method = GLYPHLESS_DISPLAY_THIN_SPACE,
          image_id = 0,
          xwidget = 0x0,
          slice = {
            x = XIL(0),
            y = XIL(0),
            width = XIL(0),
            height = XIL(0)
          },
          space_width = XIL(0),
          voffset = 0,
          tab_width = 8,
          font_height = XIL(0),
          object = XIL(0),
          position = {
            charpos = 0,
            bytepos = 0
          },
          truncation_pixel_width = 8,
          continuation_pixel_width = 0,
          first_visible_x = 0,
          last_visible_x = 671,
          last_visible_y = 578,
          extra_line_spacing = 0,
          max_extra_line_spacing = 0,
          override_ascent = -1,
          override_descent = 0,
          override_boff = 0,
          glyph_row = 0x555555f9fbf0,
          area = TEXT_AREA,
          nglyphs = 1,
          pixel_width = 0,
          ascent = 0,
          descent = 0,
          max_ascent = 0,
          max_descent = 0,
          phys_ascent = 0,
          phys_descent = 0,
          max_phys_ascent = 0,
          max_phys_descent = 0,
          current_x = 0,
          wrap_prefix_width = 0,
          continuation_lines_width = 0,
          eol_pos = {
            charpos = 0,
            bytepos = 0
          },
          current_y = 0,
          first_vpos = 0,
          vpos = 0,
          hpos = 0,
          lnum = 0,
          lnum_bytepos = 0,
          lnum_width = 0,
          lnum_pixel_width = 0,
          pt_lnum = 0,
          stretch_adjust = 0,
          left_user_fringe_bitmap = 0,
          right_user_fringe_bitmap = 0,
          left_user_fringe_face_id = 0,
          right_user_fringe_face_id = 0,
          bidi_p = false,
          bidi_it = {
            bytepos = 0,
            charpos = 0,
            ch = 0,
            nchars = 0,
            ch_len = 0,
            type = UNKNOWN_BT,
            type_after_wn = UNKNOWN_BT,
            orig_type = UNKNOWN_BT,
            resolved_level = 0 '\000',
            isolate_level = 0 '\000',
            invalid_levels = 0,
            invalid_isolates = 0,
            prev = {
              charpos = 0,
              type = UNKNOWN_BT,
              orig_type = UNKNOWN_BT
            },
            last_strong = {
              charpos = 0,
              type = UNKNOWN_BT,
              orig_type = UNKNOWN_BT
            },
            next_for_neutral = {
              charpos = 0,
              type = UNKNOWN_BT,
              orig_type = UNKNOWN_BT
            },
            prev_for_neutral = {
              charpos = 0,
              type = UNKNOWN_BT,
              orig_type = UNKNOWN_BT
            },
            next_for_ws = {
              charpos = 0,
              type = UNKNOWN_BT,
              orig_type = UNKNOWN_BT
            },
            bracket_pairing_pos = 0,
            bracket_enclosed_type = UNKNOWN_BT,
            next_en_pos = 0,
            next_en_type = UNKNOWN_BT,
            sos = NEUTRAL_DIR,
            scan_dir = 0,
            disp_pos = 0,
            disp_prop = 0,
            stack_idx = 0,
            level_stack = {{
                next_for_neutral_pos = 0,
                next_for_neutral_type = 0,
                last_strong_type = 0,
                prev_for_neutral_type = 0,
                level = 0 '\000',
                flags = 0 '\000'
              } <repeats 128 times>},
            string = {
              lstring = XIL(0),
              s = 0x0,
              schars = 0,
              bufpos = 0,
              from_disp_str = false,
              unibyte = false
            },
            w = 0x5555561a7de0,
            paragraph_dir = NEUTRAL_DIR,
            separator_limit = 0,
            first_elt = false,
            new_paragraph = false,
            frame_window_p = false
          },
          paragraph_embedding = L2R,
          min_width_property = XIL(0),
          min_width_start = 0
        }
        face = <optimized out>
        count = {
          bytes = <optimized out>
        }
#16 0x00005555555e4863 in pos_visible_p
    (w=w@entry=0x5555561a7de0, charpos=charpos@entry=230, x=x@entry=0x7fffff679f30, y=y@entry=0x7fffff679f34, rtop=rtop@entry=0x7fffff679f20, rbot=rbot@entry=0x7fffff679f24, rowh=0x7fffff679f28, vpos=0x7fffff679f2c)
    at /home/steve/src/emacs/emacs-master/src/xdisp.c:1732
        window_mode_line_format = <optimized out>
        it = {
          window = XIL(0),
          w = 0x0,
          f = 0x0,
          method = GET_FROM_BUFFER,
          stop_charpos = 0,
          prev_stop = 0,
          base_level_stop = 0,
          end_charpos = 0,
          medium_narrowing_begv = 0,
          medium_narrowing_zv = 0,
          large_narrowing_begv = 0,
          large_narrowing_zv = 0,
          s = 0x0,
          string_nchars = 0,
          multibyte_p = false,
          tab_line_p = false,
          header_line_p = false,
          string_from_display_prop_p = false,
          string_from_prefix_prop_p = false,
          from_disp_prop_p = false,
          ellipsis_p = false,
          avoid_cursor_p = false,
          dp = 0x0,
          dpvec = 0x0,
          dpend = 0x0,
          dpvec_char_len = 0,
          dpvec_face_id = 0,
          saved_face_id = 0,
          ctl_chars = {XIL(0) <repeats 16 times>},
          start = {
            pos = {
              charpos = 0,
              bytepos = 0
            },
            overlay_string_index = 0,
            string_pos = {
              charpos = 0,
              bytepos = 0
            },
            dpvec_index = 0
          },
          current = {
            pos = {
              charpos = 0,
              bytepos = 0
            },
            overlay_string_index = 0,
            string_pos = {
              charpos = 0,
              bytepos = 0
            },
            dpvec_index = 0
          },
          n_overlay_strings = 0,
          overlay_strings_charpos = 0,
          overlay_strings = {XIL(0) <repeats 16 times>},
          string_overlays = {XIL(0) <repeats 16 times>},
          string = XIL(0),
          from_overlay = XIL(0),
          stack = {{
              string = XIL(0),
              string_nchars = 0,
              end_charpos = 0,
              stop_charpos = 0,
              prev_stop = 0,
              base_level_stop = 0,
              cmp_it = {
                stop_pos = 0,
                id = 0,
                ch = 0,
                rule_idx = 0,
                lookback = 0,
                nglyphs = 0,
                reversed_p = false,
                parent_it = 0x0,
                charpos = 0,
                nchars = 0,
                nbytes = 0,
                from = 0,
                to = 0,
                width = 0
              },
              face_id = 0,
              u = {
                image = {
                  object = XIL(0),
                  slice = {
                    x = XIL(0),
                    y = XIL(0),
                    width = XIL(0),
                    height = XIL(0)
                  },
                  image_id = 0
                },
                stretch = {
                  object = XIL(0)
                },
                xwidget = {
                  object = XIL(0)
                }
              },
              position = {
                charpos = 0,
                bytepos = 0
              },
              current = {
                pos = {
                  charpos = 0,
                  bytepos = 0
                },
                overlay_string_index = 0,
                string_pos = {
                  charpos = 0,
                  bytepos = 0
                },
                dpvec_index = 0
              },
              from_overlay = XIL(0),
              area = LEFT_MARGIN_AREA,
              method = GET_FROM_BUFFER,
              paragraph_embedding = NEUTRAL_DIR,
              multibyte_p = false,
              string_from_display_prop_p = false,
              string_from_prefix_prop_p = false,
              display_ellipsis_p = false,
              avoid_cursor_p = false,
              bidi_p = false,
              from_disp_prop_p = false,
              line_wrap = TRUNCATE,
              voffset = 0,
              space_width = XIL(0),
              font_height = XIL(0)
            }, {
              string = XIL(0),
              string_nchars = 0,
              end_charpos = 0,
              stop_charpos = 0,
              prev_stop = 0,
              base_level_stop = 0,
              cmp_it = {
                stop_pos = 0,
                id = 0,
                ch = 0,
                rule_idx = 0,
                lookback = 0,
                nglyphs = 0,
                reversed_p = false,
                parent_it = 0x0,
                charpos = 0,
                nchars = 0,
                nbytes = 0,
                from = 0,
                to = 0,
                width = 0
              },
              face_id = 0,
              u = {
                image = {
                  object = XIL(0),
                  slice = {
                    x = XIL(0),
                    y = XIL(0),
                    width = XIL(0),
                    height = XIL(0)
                  },
                  image_id = 0
                },
                stretch = {
                  object = XIL(0)
                },
                xwidget = {
                  object = XIL(0)
                }
              },
              position = {
                charpos = 0,
                bytepos = 0
              },
              current = {
                pos = {
                  charpos = 0,
                  bytepos = 0
                },
                overlay_string_index = 0,
                string_pos = {
                  charpos = 0,
                  bytepos = 0
                },
                dpvec_index = 0
              },
              from_overlay = XIL(0),
              area = LEFT_MARGIN_AREA,
              method = GET_FROM_BUFFER,
              paragraph_embedding = NEUTRAL_DIR,
              multibyte_p = false,
              string_from_display_prop_p = false,
              string_from_prefix_prop_p = false,
              display_ellipsis_p = false,
              avoid_cursor_p = false,
              bidi_p = false,
              from_disp_prop_p = false,
              line_wrap = TRUNCATE,
              voffset = 0,
              space_width = XIL(0),
              font_height = XIL(0)
            }, {
              string = XIL(0),
              string_nchars = 0,
              end_charpos = 0,
              stop_charpos = 0,
              prev_stop = 0,
              base_level_stop = 0,
              cmp_it = {
                stop_pos = 0,
                id = 0,
                ch = 0,
                rule_idx = 0,
                lookback = 0,
                nglyphs = 0,
                reversed_p = false,
                parent_it = 0x0,
                charpos = 0,
                nchars = 0,
                nbytes = 0,
                from = 0,
                to = 0,
                width = 0
              },
              face_id = 0,
              u = {
                image = {
                  object = XIL(0),
                  slice = {
                    x = XIL(0),
                    y = XIL(0),
                    width = XIL(0),
                    height = XIL(0)
                  },
                  image_id = 0
                },
                stretch = {
                  object = XIL(0)
                },
                xwidget = {
                  object = XIL(0)
                }
              },
              position = {
                charpos = 0,
                bytepos = 0
              },
              current = {
                pos = {
                  charpos = 0,
                  bytepos = 0
                },
                overlay_string_index = 0,
                string_pos = {
                  charpos = 0,
                  bytepos = 0
                },
                dpvec_index = 0
              },
              from_overlay = XIL(0),
              area = LEFT_MARGIN_AREA,
              method = GET_FROM_BUFFER,
              paragraph_embedding = NEUTRAL_DIR,
              multibyte_p = false,
              string_from_display_prop_p = false,
              string_from_prefix_prop_p = false,
              display_ellipsis_p = false,
              avoid_cursor_p = false,
              bidi_p = false,
              from_disp_prop_p = false,
              line_wrap = TRUNCATE,
              voffset = 0,
              space_width = XIL(0),
              font_height = XIL(0)
            }, {
              string = XIL(0),
              string_nchars = 0,
              end_charpos = 0,
              stop_charpos = 0,
              prev_stop = 0,
              base_level_stop = 0,
              cmp_it = {
                stop_pos = 0,
                id = 0,
                ch = 0,
                rule_idx = 0,
                lookback = 0,
                nglyphs = 0,
                reversed_p = false,
                parent_it = 0x0,
                charpos = 0,
                nchars = 0,
                nbytes = 0,
                from = 0,
                to = 0,
                width = 0
              },
              face_id = 0,
              u = {
                image = {
                  object = XIL(0),
                  slice = {
                    x = XIL(0),
                    y = XIL(0),
                    width = XIL(0),
                    height = XIL(0)
                  },
                  image_id = 0
                },
                stretch = {
                  object = XIL(0)
                },
                xwidget = {
                  object = XIL(0)
                }
              },
              position = {
                charpos = 0,
                bytepos = 0
              },
              current = {
                pos = {
                  charpos = 0,
                  bytepos = 0
                },
                overlay_string_index = 0,
                string_pos = {
                  charpos = 0,
                  bytepos = 0
                },
                dpvec_index = 0
              },
              from_overlay = XIL(0),
              area = LEFT_MARGIN_AREA,
              method = GET_FROM_BUFFER,
              paragraph_embedding = NEUTRAL_DIR,
              multibyte_p = false,
              string_from_display_prop_p = false,
              string_from_prefix_prop_p = false,
              display_ellipsis_p = false,
              avoid_cursor_p = false,
              bidi_p = false,
              from_disp_prop_p = false,
              line_wrap = TRUNCATE,
              voffset = 0,
              space_width = XIL(0),
              font_height = XIL(0)
            }, {
              string = XIL(0),
              string_nchars = 0,
              end_charpos = 0,
              stop_charpos = 0,
              prev_stop = 0,
              base_level_stop = 0,
              cmp_it = {
                stop_pos = 0,
                id = 0,
                ch = 0,
                rule_idx = 0,
                lookback = 0,
                nglyphs = 0,
                reversed_p = false,
                parent_it = 0x0,
                charpos = 0,
                nchars = 0,
                nbytes = 0,
                from = 0,
                to = 0,
                width = 0
              },
              face_id = 0,
              u = {
                image = {
                  object = XIL(0),
                  slice = {
                    x = XIL(0),
                    y = XIL(0),
                    width = XIL(0),
                    height = XIL(0)
                  },
                  image_id = 0
                },
                stretch = {
                  object = XIL(0)
                },
                xwidget = {
                  object = XIL(0)
                }
              },
              position = {
                charpos = 0,
                bytepos = 0
              },
              current = {
                pos = {
                  charpos = 0,
                  bytepos = 0
                },
                overlay_string_index = 0,
                string_pos = {
                  charpos = 0,
                  bytepos = 0
                },
                dpvec_index = 0
              },
              from_overlay = XIL(0),
              area = LEFT_MARGIN_AREA,
              method = GET_FROM_BUFFER,
              paragraph_embedding = NEUTRAL_DIR,
              multibyte_p = false,
              string_from_display_prop_p = false,
              string_from_prefix_prop_p = false,
              display_ellipsis_p = false,
              avoid_cursor_p = false,
              bidi_p = false,
              from_disp_prop_p = false,
              line_wrap = TRUNCATE,
              voffset = 0,
              space_width = XIL(0),
              font_height = XIL(0)
            }},
          sp = 0,
          selective = 0,
          what = IT_CHARACTER,
          face_id = 0,
          selective_display_ellipsis_p = false,
          ctl_arrow_p = false,
          face_box_p = false,
          start_of_box_run_p = false,
          end_of_box_run_p = false,
          overlay_strings_at_end_processed_p = false,
          ignore_overlay_strings_at_pos_p = false,
          glyph_not_available_p = false,
          starts_in_middle_of_char_p = false,
          face_before_selective_p = false,
          constrain_row_ascent_descent_p = false,
          line_number_produced_p = false,
          align_visually_p = false,
          line_wrap = TRUNCATE,
          base_face_id = 0,
          c = 0,
          len = 0,
          cmp_it = {
            stop_pos = 0,
            id = 0,
            ch = 0,
            rule_idx = 0,
            lookback = 0,
            nglyphs = 0,
            reversed_p = false,
            parent_it = 0x0,
            charpos = 0,
            nchars = 0,
            nbytes = 0,
            from = 0,
            to = 0,
            width = 0
          },
          char_to_display = 0,
          glyphless_method = GLYPHLESS_DISPLAY_THIN_SPACE,
          image_id = 0,
          xwidget = 0x0,
          slice = {
            x = XIL(0),
            y = XIL(0),
            width = XIL(0),
            height = XIL(0)
          },
          space_width = XIL(0),
          voffset = 0,
          tab_width = 0,
          font_height = XIL(0),
          object = XIL(0),
          position = {
            charpos = 0,
            bytepos = 0
          },
          truncation_pixel_width = 0,
          continuation_pixel_width = 0,
          first_visible_x = 0,
          last_visible_x = 0,
          last_visible_y = 0,
          extra_line_spacing = 0,
          max_extra_line_spacing = 0,
          override_ascent = 0,
          override_descent = 0,
          override_boff = 0,
          glyph_row = 0x0,
          area = LEFT_MARGIN_AREA,
          nglyphs = 0,
          pixel_width = 0,
          ascent = 0,
          descent = 0,
          max_ascent = 0,
          max_descent = 0,
          phys_ascent = 0,
          phys_descent = 0,
          max_phys_ascent = 0,
          max_phys_descent = 0,
          current_x = 0,
          wrap_prefix_width = 0,
          continuation_lines_width = 0,
          eol_pos = {
            charpos = 0,
            bytepos = 0
          },
          current_y = 0,
          first_vpos = 0,
          vpos = 0,
          hpos = 0,
          lnum = 0,
          lnum_bytepos = 0,
          lnum_width = 0,
          lnum_pixel_width = 0,
          pt_lnum = 0,
          stretch_adjust = 0,
          left_user_fringe_bitmap = 0,
          right_user_fringe_bitmap = 0,
          left_user_fringe_face_id = 0,
          right_user_fringe_face_id = 0,
          bidi_p = false,
          bidi_it = {
            bytepos = 0,
            charpos = 0,
            ch = 0,
            nchars = 0,
            ch_len = 0,
            type = UNKNOWN_BT,
            type_after_wn = UNKNOWN_BT,
            orig_type = UNKNOWN_BT,
            resolved_level = 0 '\000',
            isolate_level = 0 '\000',
            invalid_levels = 0,
            invalid_isolates = 0,
            prev = {
              charpos = 0,
              type = UNKNOWN_BT,
              orig_type = UNKNOWN_BT
            },
            last_strong = {
              charpos = 0,
              type = UNKNOWN_BT,
              orig_type = UNKNOWN_BT
            },
            next_for_neutral = {
              charpos = 0,
              type = UNKNOWN_BT,
              orig_type = UNKNOWN_BT
            },
            prev_for_neutral = {
              charpos = 0,
              type = UNKNOWN_BT,
              orig_type = UNKNOWN_BT
            },
            next_for_ws = {
              charpos = 0,
              type = UNKNOWN_BT,
              orig_type = UNKNOWN_BT
            },
            bracket_pairing_pos = 0,
            bracket_enclosed_type = UNKNOWN_BT,
            next_en_pos = 0,
            next_en_type = UNKNOWN_BT,
            sos = NEUTRAL_DIR,
            scan_dir = 0,
            disp_pos = 0,
            disp_prop = 0,
            stack_idx = 0,
            level_stack = {{
                next_for_neutral_pos = 0,
                next_for_neutral_type = 0,
                last_strong_type = 0,
                prev_for_neutral_type = 0,
                level = 0 '\000',
                flags = 0 '\000'
              } <repeats 128 times>},
            string = {
              lstring = XIL(0),
              s = 0x0,
              schars = 0,
              bufpos = 0,
              from_disp_str = false,
              unibyte = false
            },
            w = 0x0,
            paragraph_dir = NEUTRAL_DIR,
            separator_limit = 0,
            first_elt = false,
            new_paragraph = false,
            frame_window_p = false
          },
          paragraph_embedding = NEUTRAL_DIR,
          min_width_property = XIL(0),
          min_width_start = 0
        }
        itdata = 0x0
        top = {
          charpos = <optimized out>,
          bytepos = <optimized out>
        }
        visible_p = false
        old_buffer = 0x0
        r2l = false
        prev_mode_line_height = 17
        prev_header_line_height = -1
        prev_tab_line_height = -1
#17 0x0000555555602027 in Fpos_visible_in_window_p
    (pos=make_fixnum(230), window=window@entry=XIL(0x5555561a7de5), partially=partially@entry=XIL(0x30)) at /home/steve/src/emacs/emacs-master/src/window.c:2018
        w = 0x5555561a7de0
        posint = 230
        buf = 0x7fffef7b00b0
        top = {
          charpos = <optimized out>,
          bytepos = <optimized out>
        }
        in_window = XIL(0)
        rtop = 595
        rbot = 0
        rowh = 81115136
        vpos = -216074776
        fully_p = true
        x = 95072
        y = 0
#18 0x00005555556a34de in Fposn_at_point
    (pos=<optimized out>, window=XIL(0x5555561a7de5))
    at /home/steve/src/emacs/emacs-master/src/keyboard.c:12547
        tem = <optimized out>
#19 0x00007fffef1d00ba in F77696e646f772d696e2d646972656374696f6e_window_in_direction_0 ()
    at /home/steve/build/emacs-master/src/../native-lisp/31.0.50-d78d1870/preloaded/window-d09bfc58-55eb0ae6.eln
#20 0x0000555555716f82 in eval_sub (form=<optimized out>)
    at /home/steve/src/emacs/emacs-master/src/eval.c:2594
        i = 6
        maxargs = 6
        args_left = XIL(0)
        numargs = 1
        original_fun = <optimized out>
        original_args = XIL(0x7fffef2cc6b3)
        count = {
          bytes = <optimized out>
        }
        fun = XIL(0x7fffefa0bcfd)
        val = <optimized out>
        funcar = <optimized out>
        argvals = {XIL(0x74a0), XIL(0), XIL(0), XIL(0), XIL(0), XIL(0), XIL(0), XIL(0)}
        retry = <optimized out>
#21 0x0000555555717775 in Fif (args=XIL(0x7fffef2cc6a3))
    at /home/steve/src/emacs/emacs-master/src/eval.c:382
        cond = <optimized out>
#22 0x0000555555716d2e in eval_sub (form=form@entry=XIL(0x7fffef2cc6f3))
    at /home/steve/src/emacs/emacs-master/src/eval.c:2526
        args_left = XIL(0x7fffef2cc6a3)
        numargs = 3
        original_fun = XIL(0xaa10)
        original_args = XIL(0x7fffef2cc6a3)
        count = {
          bytes = <optimized out>
        }
        fun = XIL(0x555555d538a5)
        val = <optimized out>
        funcar = <optimized out>
        argvals = {XIL(0), XIL(0x7fffefbcdc0b), XIL(0x5555569c8100), XIL(0x1), XIL(0x5555569c8100), XIL(0x7fffff67a508), XIL(0x555555d52d00), XIL(0x5555557134a9)}
        retry = <optimized out>
#23 0x0000555555718514 in Feval (form=XIL(0x7fffef2cc6f3), lexical=<optimized out>)
    at /home/steve/src/emacs/emacs-master/src/eval.c:2439
        count = {
          bytes = <optimized out>
        }
#24 0x0000555555715eb6 in funcall_subr
    (subr=subr@entry=0x555555d52d00 <Seval>, numargs=numargs@entry=2, args=args@entry=0x7fffff67a508) at /home/steve/src/emacs/emacs-master/src/eval.c:3140
        argbuf = {XIL(0), XIL(0), XIL(0), XIL(0), XIL(0), XIL(0), XIL(0), XIL(0x555555704cf0)}
        a = <optimized out>
        maxargs = 2
        fun = <optimized out>
#25 0x00005555557176f2 in funcall_general
    (fun=XIL(0x555555d52d05), numargs=numargs@entry=2, args=args@entry=0x7fffff67a508) at /home/steve/src/emacs/emacs-master/src/lisp.h:2256
        original_fun = XIL(0x7ce0)
#26 0x0000555555714cc1 in Ffuncall
    (nargs=nargs@entry=3, args=args@entry=0x7fffff67a500)
    at /home/steve/src/emacs/emacs-master/src/eval.c:3070
        count = {
          bytes = 94944
        }
        val = <optimized out>
#27 0x0000555555713e23 in internal_condition_case_n
    (bfun=bfun@entry=0x555555714c25 <Ffuncall>, nargs=nargs@entry=3, args=args@entry=0x7fffff67a500, handlers=handlers@entry=XIL(0x30), hfun=hfun@entry=0x5555555cbc2a <dsafe_eval_handler>) at /home/steve/src/emacs/emacs-master/src/eval.c:1678
        val = <optimized out>
        c = 0x555556898de0
#28 0x00005555555bb4c7 in dsafe__call
    (inhibit_quit=inhibit_quit@entry=true, f=0x555555714c25 <Ffuncall>, nargs=nargs@entry=3, args=args@entry=0x7fffff67a500)
    at /home/steve/src/emacs/emacs-master/src/xdisp.c:3093
        count = {
          bytes = <optimized out>
        }
        val = <optimized out>
#29 0x00005555555bb5a0 in dsafe_eval (sexpr=<optimized out>)
    at /home/steve/src/emacs/emacs-master/src/xdisp.c:3129
#30 0x00005555555e31d6 in display_mode_element
    (it=it@entry=0x7fffff67a630, depth=1,
    depth@entry=0, field_width=field_width@entry=0, precision=precision@entry=0, elt=elt@entry=XIL(0x7fffef2cc703), props=props@entry=XIL(0), risky=false)
    at /home/steve/src/emacs/emacs-master/src/xdisp.c:27984
        spec = <optimized out>
        car = XIL(0xf30)
        tem = <optimized out>
        n = 0
        field = <optimized out>
        prec = <optimized out>
        literal = false
#31 0x00005555555e4110 in display_mode_line
    (w=w@entry=0x5555561a7de0, face_id=MODE_LINE_ACTIVE_FACE_ID, format=XIL(0x7fffef2cc703)) at /home/steve/src/emacs/emacs-master/src/xdisp.c:27495
        it = {
          window = XIL(0x5555561a7de5),
          w = 0x5555561a7de0,
          f = 0x5555561a7b58,
          method = GET_FROM_BUFFER,
          stop_charpos = 0,
          prev_stop = 0,
          base_level_stop = 0,
          end_charpos = 0,
          medium_narrowing_begv = 0,
          medium_narrowing_zv = 0,
          large_narrowing_begv = 0,
          large_narrowing_zv = 0,
          s = 0x0,
          string_nchars = 0,
          multibyte_p = true,
          tab_line_p = false,
          header_line_p = false,
          string_from_display_prop_p = false,
          string_from_prefix_prop_p = false,
          from_disp_prop_p = false,
          ellipsis_p = false,
          avoid_cursor_p = false,
          dp = 0x0,
          dpvec = 0x0,
          dpend = 0x0,
          dpvec_char_len = 0,
          dpvec_face_id = 0,
          saved_face_id = 0,
          ctl_chars = {XIL(0) <repeats 16 times>},
          start = {
            pos = {
              charpos = 0,
              bytepos = 0
            },
            overlay_string_index = 0,
            string_pos = {
              charpos = 0,
              bytepos = 0
            },
            dpvec_index = 0
          },
          current = {
            pos = {
              charpos = 0,
              bytepos = 0
            },
            overlay_string_index = -1,
            string_pos = {
              charpos = -1,
              bytepos = -1
            },
            dpvec_index = -1
          },
          n_overlay_strings = 0,
          overlay_strings_charpos = 0,
          overlay_strings = {XIL(0) <repeats 16 times>},
          string_overlays = {XIL(0) <repeats 16 times>},
          string = XIL(0),
          from_overlay = XIL(0),
          stack = {{
              string = XIL(0),
              string_nchars = 0,
              end_charpos = 0,
              stop_charpos = 0,
              prev_stop = 0,
              base_level_stop = 0,
              cmp_it = {
                stop_pos = 0,
                id = 0,
                ch = 0,
                rule_idx = 0,
                lookback = 0,
                nglyphs = 0,
                reversed_p = false,
                parent_it = 0x0,
                charpos = 0,
                nchars = 0,
                nbytes = 0,
                from = 0,
                to = 0,
                width = 0
              },
              face_id = 0,
              u = {
                image = {
                  object = XIL(0),
                  slice = {
                    x = XIL(0),
                    y = XIL(0),
                    width = XIL(0),
                    height = XIL(0)
                  },
                  image_id = 0
                },
                stretch = {
                  object = XIL(0)
                },
                xwidget = {
                  object = XIL(0)
                }
              },
              position = {
                charpos = 0,
                bytepos = 0
              },
              current = {
                pos = {
                  charpos = 0,
                  bytepos = 0
                },
                overlay_string_index = 0,
                string_pos = {
                  charpos = 0,
                  bytepos = 0
                },
                dpvec_index = 0
              },
              from_overlay = XIL(0),
              area = LEFT_MARGIN_AREA,
              method = GET_FROM_BUFFER,
              paragraph_embedding = NEUTRAL_DIR,
              multibyte_p = false,
              string_from_display_prop_p = false,
              string_from_prefix_prop_p = false,
              display_ellipsis_p = false,
              avoid_cursor_p = false,
              bidi_p = false,
              from_disp_prop_p = false,
              line_wrap = TRUNCATE,
              voffset = 0,
              space_width = XIL(0),
              font_height = XIL(0)
            }, {
              string = XIL(0),
              string_nchars = 0,
              end_charpos = 0,
              stop_charpos = 0,
              prev_stop = 0,
              base_level_stop = 0,
              cmp_it = {
                stop_pos = 0,
                id = 0,
                ch = 0,
                rule_idx = 0,
                lookback = 0,
                nglyphs = 0,
                reversed_p = false,
                parent_it = 0x0,
                charpos = 0,
                nchars = 0,
                nbytes = 0,
                from = 0,
                to = 0,
                width = 0
              },
              face_id = 0,
              u = {
                image = {
                  object = XIL(0),
                  slice = {
                    x = XIL(0),
                    y = XIL(0),
                    width = XIL(0),
                    height = XIL(0)
                  },
                  image_id = 0
                },
                stretch = {
                  object = XIL(0)
                },
                xwidget = {
                  object = XIL(0)
                }
              },
              position = {
                charpos = 0,
                bytepos = 0
              },
              current = {
                pos = {
                  charpos = 0,
                  bytepos = 0
                },
                overlay_string_index = 0,
                string_pos = {
                  charpos = 0,
                  bytepos = 0
                },
                dpvec_index = 0
              },
              from_overlay = XIL(0),
              area = LEFT_MARGIN_AREA,
              method = GET_FROM_BUFFER,
              paragraph_embedding = NEUTRAL_DIR,
              multibyte_p = false,
              string_from_display_prop_p = false,
              string_from_prefix_prop_p = false,
              display_ellipsis_p = false,
              avoid_cursor_p = false,
              bidi_p = false,
              from_disp_prop_p = false,
              line_wrap = TRUNCATE,
              voffset = 0,
              space_width = XIL(0),
              font_height = XIL(0)
            }, {
              string = XIL(0),
              string_nchars = 0,
              end_charpos = 0,
              stop_charpos = 0,
              prev_stop = 0,
              base_level_stop = 0,
              cmp_it = {
                stop_pos = 0,
                id = 0,
                ch = 0,
                rule_idx = 0,
                lookback = 0,
                nglyphs = 0,
                reversed_p = false,
                parent_it = 0x0,
                charpos = 0,
                nchars = 0,
                nbytes = 0,
                from = 0,
                to = 0,
                width = 0
              },
              face_id = 0,
              u = {
                image = {
                  object = XIL(0),
                  slice = {
                    x = XIL(0),
                    y = XIL(0),
                    width = XIL(0),
                    height = XIL(0)
                  },
                  image_id = 0
                },
                stretch = {
                  object = XIL(0)
                },
                xwidget = {
                  object = XIL(0)
                }
              },
              position = {
                charpos = 0,
                bytepos = 0
              },
              current = {
                pos = {
                  charpos = 0,
                  bytepos = 0
                },
                overlay_string_index = 0,
                string_pos = {
                  charpos = 0,
                  bytepos = 0
                },
                dpvec_index = 0
              },
              from_overlay = XIL(0),
              area = LEFT_MARGIN_AREA,
              method = GET_FROM_BUFFER,
              paragraph_embedding = NEUTRAL_DIR,
              multibyte_p = false,
              string_from_display_prop_p = false,
              string_from_prefix_prop_p = false,
              display_ellipsis_p = false,
              avoid_cursor_p = false,
              bidi_p = false,
              from_disp_prop_p = false,
              line_wrap = TRUNCATE,
              voffset = 0,
              space_width = XIL(0),
              font_height = XIL(0)
            }, {
              string = XIL(0),
              string_nchars = 0,
              end_charpos = 0,
              stop_charpos = 0,
              prev_stop = 0,
              base_level_stop = 0,
              cmp_it = {
                stop_pos = 0,
                id = 0,
                ch = 0,
                rule_idx = 0,
                lookback = 0,
                nglyphs = 0,
                reversed_p = false,
                parent_it = 0x0,
                charpos = 0,
                nchars = 0,
                nbytes = 0,
                from = 0,
                to = 0,
                width = 0
              },
              face_id = 0,
              u = {
                image = {
                  object = XIL(0),
                  slice = {
                    x = XIL(0),
                    y = XIL(0),
                    width = XIL(0),
                    height = XIL(0)
                  },
                  image_id = 0
                },
                stretch = {
                  object = XIL(0)
                },
                xwidget = {
                  object = XIL(0)
                }
              },
              position = {
                charpos = 0,
                bytepos = 0
              },
              current = {
                pos = {
                  charpos = 0,
                  bytepos = 0
                },
                overlay_string_index = 0,
                string_pos = {
                  charpos = 0,
                  bytepos = 0
                },
                dpvec_index = 0
              },
              from_overlay = XIL(0),
              area = LEFT_MARGIN_AREA,
              method = GET_FROM_BUFFER,
              paragraph_embedding = NEUTRAL_DIR,
              multibyte_p = false,
              string_from_display_prop_p = false,
              string_from_prefix_prop_p = false,
              display_ellipsis_p = false,
              avoid_cursor_p = false,
              bidi_p = false,
              from_disp_prop_p = false,
              line_wrap = TRUNCATE,
              voffset = 0,
              space_width = XIL(0),
              font_height = XIL(0)
            }, {
              string = XIL(0),
              string_nchars = 0,
              end_charpos = 0,
              stop_charpos = 0,
              prev_stop = 0,
              base_level_stop = 0,
              cmp_it = {
                stop_pos = 0,
                id = 0,
                ch = 0,
                rule_idx = 0,
                lookback = 0,
                nglyphs = 0,
                reversed_p = false,
                parent_it = 0x0,
                charpos = 0,
                nchars = 0,
                nbytes = 0,
                from = 0,
                to = 0,
                width = 0
              },
              face_id = 0,
              u = {
                image = {
                  object = XIL(0),
                  slice = {
                    x = XIL(0),
                    y = XIL(0),
                    width = XIL(0),
                    height = XIL(0)
                  },
                  image_id = 0
                },
                stretch = {
                  object = XIL(0)
                },
                xwidget = {
                  object = XIL(0)
                }
              },
              position = {
                charpos = 0,
                bytepos = 0
              },
              current = {
                pos = {
                  charpos = 0,
                  bytepos = 0
                },
                overlay_string_index = 0,
                string_pos = {
                  charpos = 0,
                  bytepos = 0
                },
                dpvec_index = 0
              },
              from_overlay = XIL(0),
              area = LEFT_MARGIN_AREA,
              method = GET_FROM_BUFFER,
              paragraph_embedding = NEUTRAL_DIR,
              multibyte_p = false,
              string_from_display_prop_p = false,
              string_from_prefix_prop_p = false,
              display_ellipsis_p = false,
              avoid_cursor_p = false,
              bidi_p = false,
              from_disp_prop_p = false,
              line_wrap = TRUNCATE,
              voffset = 0,
              space_width = XIL(0),
              font_height = XIL(0)
            }},
          sp = 0,
          selective = 0,
          what = IT_CHARACTER,
          face_id = 1,
          selective_display_ellipsis_p = true,
          ctl_arrow_p = true,
          face_box_p = true,
          start_of_box_run_p = true,
          end_of_box_run_p = false,
          overlay_strings_at_end_processed_p = false,
          ignore_overlay_strings_at_pos_p = false,
          glyph_not_available_p = false,
          starts_in_middle_of_char_p = false,
          face_before_selective_p = false,
          constrain_row_ascent_descent_p = false,
          line_number_produced_p = false,
          align_visually_p = false,
          line_wrap = TRUNCATE,
          base_face_id = 1,
          c = 0,
          len = 0,
          cmp_it = {
            stop_pos = 0,
            id = -1,
            ch = 0,
            rule_idx = 0,
            lookback = 0,
            nglyphs = 0,
            reversed_p = false,
            parent_it = 0x7fffff67a630,
            charpos = 0,
            nchars = 0,
            nbytes = 0,
            from = 0,
            to = 0,
            width = 0
          },
          char_to_display = 0,
          glyphless_method = GLYPHLESS_DISPLAY_THIN_SPACE,
          image_id = 0,
          xwidget = 0x0,
          slice = {
            x = XIL(0),
            y = XIL(0),
            width = XIL(0),
            height = XIL(0)
          },
          space_width = XIL(0),
          voffset = 0,
          tab_width = 8,
          font_height = XIL(0),
          object = XIL(0),
          position = {
            charpos = 0,
            bytepos = 0
          },
          truncation_pixel_width = 8,
          continuation_pixel_width = 0,
          first_visible_x = 0,
          last_visible_x = 671,
          last_visible_y = 578,
          extra_line_spacing = 0,
          max_extra_line_spacing = 0,
          override_ascent = -1,
          override_descent = 0,
          override_boff = 0,
          glyph_row = 0x555555f9fbf0,
          area = TEXT_AREA,
          nglyphs = 1,
          pixel_width = 0,
          ascent = 0,
          descent = 0,
          max_ascent = 0,
          max_descent = 0,
          phys_ascent = 0,
          phys_descent = 0,
          max_phys_ascent = 0,
          max_phys_descent = 0,
          current_x = 0,
          wrap_prefix_width = 0,
          continuation_lines_width = 0,
          eol_pos = {
            charpos = 0,
            bytepos = 0
          },
          current_y = 0,
          first_vpos = 0,
          vpos = 0,
          hpos = 0,
          lnum = 0,
          lnum_bytepos = 0,
          lnum_width = 0,
          lnum_pixel_width = 0,
          pt_lnum = 0,
          stretch_adjust = 0,
          left_user_fringe_bitmap = 0,
          right_user_fringe_bitmap = 0,
          left_user_fringe_face_id = 0,
          right_user_fringe_face_id = 0,
          bidi_p = false,
          bidi_it = {
            bytepos = 0,
            charpos = 0,
            ch = 0,
            nchars = 0,
            ch_len = 0,
            type = UNKNOWN_BT,
            type_after_wn = UNKNOWN_BT,
            orig_type = UNKNOWN_BT,
            resolved_level = 0 '\000',
            isolate_level = 0 '\000',
            invalid_levels = 0,
            invalid_isolates = 0,
            prev = {
              charpos = 0,
              type = UNKNOWN_BT,
              orig_type = UNKNOWN_BT
            },
            last_strong = {
              charpos = 0,
              type = UNKNOWN_BT,
              orig_type = UNKNOWN_BT
            },
            next_for_neutral = {
              charpos = 0,
              type = UNKNOWN_BT,
              orig_type = UNKNOWN_BT
            },
            prev_for_neutral = {
              charpos = 0,
              type = UNKNOWN_BT,
              orig_type = UNKNOWN_BT
            },
            next_for_ws = {
              charpos = 0,
              type = UNKNOWN_BT,
              orig_type = UNKNOWN_BT
            },
            bracket_pairing_pos = 0,
            bracket_enclosed_type = UNKNOWN_BT,
            next_en_pos = 0,
            next_en_type = UNKNOWN_BT,
            sos = NEUTRAL_DIR,
            scan_dir = 0,
            disp_pos = 0,
            disp_prop = 0,
            stack_idx = 0,
            level_stack = {{
                next_for_neutral_pos = 0,
                next_for_neutral_type = 0,
                last_strong_type = 0,
                prev_for_neutral_type = 0,
                level = 0 '\000',
                flags = 0 '\000'
              } <repeats 128 times>},
            string = {
              lstring = XIL(0),
              s = 0x0,
              schars = 0,
              bufpos = 0,
              from_disp_str = false,
              unibyte = false
            },
            w = 0x5555561a7de0,
            paragraph_dir = NEUTRAL_DIR,
            separator_limit = 0,
            first_elt = false,
            new_paragraph = false,
            frame_window_p = false
          },
          paragraph_embedding = L2R,
          min_width_property = XIL(0),
          min_width_start = 0
        }
        face = <optimized out>
        count = {
          bytes = <optimized out>
        }
#32 0x00005555555e4863 in pos_visible_p
    (w=w@entry=0x5555561a7de0, charpos=charpos@entry=230, x=x@entry=0x7fffff680890, y=y@entry=0x7fffff680894, rtop=rtop@entry=0x7fffff680880, rbot=rbot@entry=0x7fffff680884, rowh=0x7fffff680888, vpos=0x7fffff68088c)
    at /home/steve/src/emacs/emacs-master/src/xdisp.c:1732
        window_mode_line_format = <optimized out>
        it = {
          window = XIL(0),
          w = 0x0,
          f = 0x0,
          method = GET_FROM_BUFFER,
          stop_charpos = 0,
          prev_stop = 0,
          base_level_stop = 0,
          end_charpos = 0,
          medium_narrowing_begv = 0,
          medium_narrowing_zv = 0,
          large_narrowing_begv = 0,
          large_narrowing_zv = 0,
          s = 0x0,
          string_nchars = 0,
          multibyte_p = false,
          tab_line_p = false,
          header_line_p = false,
          string_from_display_prop_p = false,
          string_from_prefix_prop_p = false,
          from_disp_prop_p = false,
          ellipsis_p = false,
          avoid_cursor_p = false,
          dp = 0x0,
          dpvec = 0x0,
          dpend = 0x0,
          dpvec_char_len = 0,
          dpvec_face_id = 0,
          saved_face_id = 0,
          ctl_chars = {XIL(0) <repeats 16 times>},
          start = {
            pos = {
              charpos = 0,
              bytepos = 0
            },
            overlay_string_index = 0,
            string_pos = {
              charpos = 0,
              bytepos = 0
            },
            dpvec_index = 0
          },
          current = {
            pos = {
              charpos = 0,
              bytepos = 0
            },
            overlay_string_index = 0,
            string_pos = {
              charpos = 0,
              bytepos = 0
            },
            dpvec_index = 0
          },
          n_overlay_strings = 0,
          overlay_strings_charpos = 0,
          overlay_strings = {XIL(0) <repeats 16 times>},
          string_overlays = {XIL(0) <repeats 16 times>},
          string = XIL(0),
          from_overlay = XIL(0),
          stack = {{
              string = XIL(0),
              string_nchars = 0,
              end_charpos = 0,
              stop_charpos = 0,
              prev_stop = 0,
              base_level_stop = 0,
              cmp_it = {
                stop_pos = 0,
                id = 0,
                ch = 0,
                rule_idx = 0,
                lookback = 0,
                nglyphs = 0,
                reversed_p = false,
                parent_it = 0x0,
                charpos = 0,
                nchars = 0,
                nbytes = 0,
                from = 0,
                to = 0,
                width = 0
              },
              face_id = 0,
              u = {
                image = {
                  object = XIL(0),
                  slice = {
                    x = XIL(0),
                    y = XIL(0),
                    width = XIL(0),
                    height = XIL(0)
                  },
                  image_id = 0
                },
                stretch = {
                  object = XIL(0)
                },
                xwidget = {
                  object = XIL(0)
                }
              },
              position = {
                charpos = 0,
                bytepos = 0
              },
              current = {
                pos = {
                  charpos = 0,
                  bytepos = 0
                },
                overlay_string_index = 0,
                string_pos = {
                  charpos = 0,
                  bytepos = 0
                },
                dpvec_index = 0
              },
              from_overlay = XIL(0),
              area = LEFT_MARGIN_AREA,
              method = GET_FROM_BUFFER,
              paragraph_embedding = NEUTRAL_DIR,
              multibyte_p = false,
              string_from_display_prop_p = false,
              string_from_prefix_prop_p = false,
              display_ellipsis_p = false,
              avoid_cursor_p = false,
              bidi_p = false,
              from_disp_prop_p = false,
              line_wrap = TRUNCATE,
              voffset = 0,
              space_width = XIL(0),
              font_height = XIL(0)
            }, {
              string = XIL(0),
              string_nchars = 0,
              end_charpos = 0,
              stop_charpos = 0,
              prev_stop = 0,
              base_level_stop = 0,
              cmp_it = {
                stop_pos = 0,
                id = 0,
                ch = 0,
                rule_idx = 0,
                lookback = 0,
                nglyphs = 0,
                reversed_p = false,
                parent_it = 0x0,
                charpos = 0,
                nchars = 0,
                nbytes = 0,
                from = 0,
                to = 0,
                width = 0
              },
              face_id = 0,
              u = {
                image = {
                  object = XIL(0),
                  slice = {
                    x = XIL(0),
                    y = XIL(0),
                    width = XIL(0),
                    height = XIL(0)
                  },
                  image_id = 0
                },
                stretch = {
                  object = XIL(0)
                },
                xwidget = {
                  object = XIL(0)
                }
              },
              position = {
                charpos = 0,
                bytepos = 0
              },
              current = {
                pos = {
                  charpos = 0,
                  bytepos = 0
                },
                overlay_string_index = 0,
                string_pos = {
                  charpos = 0,
                  bytepos = 0
                },
                dpvec_index = 0
              },
              from_overlay = XIL(0),
              area = LEFT_MARGIN_AREA,
              method = GET_FROM_BUFFER,
              paragraph_embedding = NEUTRAL_DIR,
              multibyte_p = false,
              string_from_display_prop_p = false,
              string_from_prefix_prop_p = false,
              display_ellipsis_p = false,
              avoid_cursor_p = false,
              bidi_p = false,
              from_disp_prop_p = false,
              line_wrap = TRUNCATE,
              voffset = 0,
              space_width = XIL(0),
              font_height = XIL(0)
            }, {
              string = XIL(0),
              string_nchars = 0,
              end_charpos = 0,
              stop_charpos = 0,
              prev_stop = 0,
              base_level_stop = 0,
              cmp_it = {
                stop_pos = 0,
                id = 0,
                ch = 0,
                rule_idx = 0,
                lookback = 0,
                nglyphs = 0,
                reversed_p = false,
                parent_it = 0x0,
                charpos = 0,
                nchars = 0,
                nbytes = 0,
                from = 0,
                to = 0,
                width = 0
              },
              face_id = 0,
              u = {
                image = {
                  object = XIL(0),
                  slice = {
                    x = XIL(0),
                    y = XIL(0),
                    width = XIL(0),
                    height = XIL(0)
                  },
                  image_id = 0
                },
                stretch = {
                  object = XIL(0)
                },
                xwidget = {
                  object = XIL(0)
                }
              },
              position = {
                charpos = 0,
                bytepos = 0
              },
              current = {
                pos = {
                  charpos = 0,
                  bytepos = 0
                },
                overlay_string_index = 0,
                string_pos = {
                  charpos = 0,
                  bytepos = 0
                },
                dpvec_index = 0
              },
              from_overlay = XIL(0),
              area = LEFT_MARGIN_AREA,
              method = GET_FROM_BUFFER,
              paragraph_embedding = NEUTRAL_DIR,
              multibyte_p = false,
              string_from_display_prop_p = false,
              string_from_prefix_prop_p = false,
              display_ellipsis_p = false,
              avoid_cursor_p = false,
              bidi_p = false,
              from_disp_prop_p = false,
              line_wrap = TRUNCATE,
              voffset = 0,
              space_width = XIL(0),
              font_height = XIL(0)
            }, {
              string = XIL(0),
              string_nchars = 0,
              end_charpos = 0,
              stop_charpos = 0,
              prev_stop = 0,
              base_level_stop = 0,
              cmp_it = {
                stop_pos = 0,
                id = 0,
                ch = 0,
                rule_idx = 0,
                lookback = 0,
                nglyphs = 0,
                reversed_p = false,
                parent_it = 0x0,
                charpos = 0,
                nchars = 0,
                nbytes = 0,
                from = 0,
                to = 0,
                width = 0
              },
              face_id = 0,
              u = {
                image = {
                  object = XIL(0),
                  slice = {
                    x = XIL(0),
                    y = XIL(0),
                    width = XIL(0),
                    height = XIL(0)
                  },
                  image_id = 0
                },
                stretch = {
                  object = XIL(0)
                },
                xwidget = {
                  object = XIL(0)
                }
              },
              position = {
                charpos = 0,
                bytepos = 0
              },
              current = {
                pos = {
                  charpos = 0,
                  bytepos = 0
                },
                overlay_string_index = 0,
                string_pos = {
                  charpos = 0,
                  bytepos = 0
                },
                dpvec_index = 0
              },
              from_overlay = XIL(0),
              area = LEFT_MARGIN_AREA,
              method = GET_FROM_BUFFER,
              paragraph_embedding = NEUTRAL_DIR,
              multibyte_p = false,
              string_from_display_prop_p = false,
              string_from_prefix_prop_p = false,
              display_ellipsis_p = false,
              avoid_cursor_p = false,
              bidi_p = false,
              from_disp_prop_p = false,
              line_wrap = TRUNCATE,
              voffset = 0,
              space_width = XIL(0),
              font_height = XIL(0)
            }, {
              string = XIL(0),
              string_nchars = 0,
              end_charpos = 0,
              stop_charpos = 0,
              prev_stop = 0,
              base_level_stop = 0,
              cmp_it = {
                stop_pos = 0,
                id = 0,
                ch = 0,
                rule_idx = 0,
                lookback = 0,
                nglyphs = 0,
                reversed_p = false,
                parent_it = 0x0,
                charpos = 0,
                nchars = 0,
                nbytes = 0,
                from = 0,
                to = 0,
                width = 0
              },
              face_id = 0,
              u = {
                image = {
                  object = XIL(0),
                  slice = {
                    x = XIL(0),
                    y = XIL(0),
                    width = XIL(0),
                    height = XIL(0)
                  },
                  image_id = 0
                },
                stretch = {
                  object = XIL(0)
                },
                xwidget = {
                  object = XIL(0)
                }
              },
              position = {
                charpos = 0,
                bytepos = 0
              },
              current = {
                pos = {
                  charpos = 0,
                  bytepos = 0
                },
                overlay_string_index = 0,
                string_pos = {
                  charpos = 0,
                  bytepos = 0
                },
                dpvec_index = 0
              },
              from_overlay = XIL(0),
              area = LEFT_MARGIN_AREA,
              method = GET_FROM_BUFFER,
              paragraph_embedding = NEUTRAL_DIR,
              multibyte_p = false,
              string_from_display_prop_p = false,
              string_from_prefix_prop_p = false,
              display_ellipsis_p = false,
              avoid_cursor_p = false,
              bidi_p = false,
              from_disp_prop_p = false,
              line_wrap = TRUNCATE,
              voffset = 0,
              space_width = XIL(0),
              font_height = XIL(0)
            }},
          sp = 0,
          selective = 0,
          what = IT_CHARACTER,
          face_id = 0,
          selective_display_ellipsis_p = false,
          ctl_arrow_p = false,
          face_box_p = false,
          start_of_box_run_p = false,
          end_of_box_run_p = false,
          overlay_strings_at_end_processed_p = false,
          ignore_overlay_strings_at_pos_p = false,
          glyph_not_available_p = false,
          starts_in_middle_of_char_p = false,
          face_before_selective_p = false,
          constrain_row_ascent_descent_p = false,
          line_number_produced_p = false,
          align_visually_p = false,
          line_wrap = TRUNCATE,
          base_face_id = 0,
          c = 0,
          len = 0,
          cmp_it = {
            stop_pos = 0,
            id = 0,
            ch = 0,
            rule_idx = 0,
            lookback = 0,
            nglyphs = 0,
            reversed_p = false,
            parent_it = 0x0,
            charpos = 0,
            nchars = 0,
            nbytes = 0,
            from = 0,
            to = 0,
            width = 0
          },
          char_to_display = 0,
          glyphless_method = GLYPHLESS_DISPLAY_THIN_SPACE,
          image_id = 0,
          xwidget = 0x0,
          slice = {
            x = XIL(0),
            y = XIL(0),
            width = XIL(0),
            height = XIL(0)
          },
          space_width = XIL(0),
          voffset = 0,
          tab_width = 0,
          font_height = XIL(0),
          object = XIL(0),
          position = {
            charpos = 0,
            bytepos = 0
          },
          truncation_pixel_width = 0,
          continuation_pixel_width = 0,
          first_visible_x = 0,
          last_visible_x = 0,
          last_visible_y = 0,
          extra_line_spacing = 0,
          max_extra_line_spacing = 0,
          override_ascent = 0,
          override_descent = 0,
          override_boff = 0,
          glyph_row = 0x0,
          area = LEFT_MARGIN_AREA,
          nglyphs = 0,
          pixel_width = 0,
          ascent = 0,
          descent = 0,
          max_ascent = 0,
          max_descent = 0,
          phys_ascent = 0,
          phys_descent = 0,
          max_phys_ascent = 0,
          max_phys_descent = 0,
          current_x = 0,
          wrap_prefix_width = 0,
          continuation_lines_width = 0,
          eol_pos = {
            charpos = 0,
            bytepos = 0
          },
          current_y = 0,
          first_vpos = 0,
          vpos = 0,
          hpos = 0,
          lnum = 0,
          lnum_bytepos = 0,
          lnum_width = 0,
          lnum_pixel_width = 0,
          pt_lnum = 0,
          stretch_adjust = 0,
          left_user_fringe_bitmap = 0,
          right_user_fringe_bitmap = 0,
          left_user_fringe_face_id = 0,
          right_user_fringe_face_id = 0,
          bidi_p = false,
          bidi_it = {
            bytepos = 0,
            charpos = 0,
            ch = 0,
            nchars = 0,
            ch_len = 0,
            type = UNKNOWN_BT,
            type_after_wn = UNKNOWN_BT,
            orig_type = UNKNOWN_BT,
            resolved_level = 0 '\000',
            isolate_level = 0 '\000',
            invalid_levels = 0,
            invalid_isolates = 0,
            prev = {
              charpos = 0,
              type = UNKNOWN_BT,
              orig_type = UNKNOWN_BT
            },
            last_strong = {
              charpos = 0,
              type = UNKNOWN_BT,
              orig_type = UNKNOWN_BT
            },
            next_for_neutral = {
              charpos = 0,
              type = UNKNOWN_BT,
              orig_type = UNKNOWN_BT
            },
            prev_for_neutral = {
              charpos = 0,
              type = UNKNOWN_BT,
              orig_type = UNKNOWN_BT
            },
            next_for_ws = {
              charpos = 0,
              type = UNKNOWN_BT,
              orig_type = UNKNOWN_BT
            },
            bracket_pairing_pos = 0,
            bracket_enclosed_type = UNKNOWN_BT,
            next_en_pos = 0,
            next_en_type = UNKNOWN_BT,
            sos = NEUTRAL_DIR,
            scan_dir = 0,
            disp_pos = 0,
            disp_prop = 0,
            stack_idx = 0,
            level_stack = {{
                next_for_neutral_pos = 0,
                next_for_neutral_type = 0,
                last_strong_type = 0,
                prev_for_neutral_type = 0,
                level = 0 '\000',
                flags = 0 '\000'
              } <repeats 128 times>},
            string = {
              lstring = XIL(0),
              s = 0x0,
              schars = 0,
              bufpos = 0,
              from_disp_str = false,
              unibyte = false
            },
            w = 0x0,
            paragraph_dir = NEUTRAL_DIR,
            separator_limit = 0,
            first_elt = false,
            new_paragraph = false,
            frame_window_p = false
          },
          paragraph_embedding = NEUTRAL_DIR,
          min_width_property = XIL(0),
          min_width_start = 0
        }
        itdata = 0x0
        top = {
          charpos = <optimized out>,
          bytepos = <optimized out>
        }
        visible_p = false
        old_buffer = 0x0
        r2l = false
        prev_mode_line_height = 17
        prev_header_line_height = -1
        prev_tab_line_height = -1
#33 0x0000555555602027 in Fpos_visible_in_window_p
    (pos=make_fixnum(230), window=window@entry=XIL(0x5555561a7de5), partially=partially@entry=XIL(0x30)) at /home/steve/src/emacs/emacs-master/src/window.c:2018
        w = 0x5555561a7de0
        posint = 230
        buf = 0x7fffef7b00b0
        top = {
          charpos = <optimized out>,
          bytepos = <optimized out>
        }
        in_window = XIL(0)
        rtop = 595
        rbot = 0
        rowh = 81115136
        vpos = -216074776
        fully_p = true
        x = 94816
        y = 0
#34 0x00005555556a34de in Fposn_at_point
    (pos=<optimized out>, window=XIL(0x5555561a7de5))
    at /home/steve/src/emacs/emacs-master/src/keyboard.c:12547
        tem = <optimized out>
#35 0x00007fffef1d00ba in F77696e646f772d696e2d646972656374696f6e_window_in_direction_0 ()
    at /home/steve/build/emacs-master/src/../native-lisp/31.0.50-d78d1870/preloaded/window-d09bfc58-55eb0ae6.eln
#36 0x0000555555716f82 in eval_sub (form=<optimized out>)
    at /home/steve/src/emacs/emacs-master/src/eval.c:2594
        i = 6
        maxargs = 6
        args_left = XIL(0)
        numargs = 1
        original_fun = <optimized out>
        original_args = XIL(0x7fffef2cc6b3)
        count = {
          bytes = <optimized out>
        }
        fun = XIL(0x7fffefa0bcfd)
        val = <optimized out>
        funcar = <optimized out>
        argvals = {XIL(0x74a0), XIL(0), XIL(0), XIL(0), XIL(0), XIL(0), XIL(0), XIL(0)}
        retry = <optimized out>
#37 0x0000555555717775 in Fif (args=XIL(0x7fffef2cc6a3))
    at /home/steve/src/emacs/emacs-master/src/eval.c:382
        cond = <optimized out>
#38 0x0000555555716d2e in eval_sub (form=form@entry=XIL(0x7fffef2cc6f3))
    at /home/steve/src/emacs/emacs-master/src/eval.c:2526
        args_left = XIL(0x7fffef2cc6a3)
        numargs = 3
        original_fun = XIL(0xaa10)
        original_args = XIL(0x7fffef2cc6a3)
        count = {
          bytes = <optimized out>
        }
        fun = XIL(0x555555d538a5)
        val = <optimized out>
        funcar = <optimized out>
        argvals = {XIL(0), XIL(0x7fffefbcdc0b), XIL(0x5555569c8000), XIL(0x1), XIL(0x5555569c8000), XIL(0x7fffff680e68), XIL(0x555555d52d00), XIL(0x5555557134a9)}
        retry = <optimized out>
#39 0x0000555555718514 in Feval (form=XIL(0x7fffef2cc6f3), lexical=<optimized out>)
    at /home/steve/src/emacs/emacs-master/src/eval.c:2439
        count = {
          bytes = <optimized out>
        }
#40 0x0000555555715eb6 in funcall_subr
    (subr=subr@entry=0x555555d52d00 <Seval>, numargs=numargs@entry=2, args=args@entry=0x7fffff680e68) at /home/steve/src/emacs/emacs-master/src/eval.c:3140
        argbuf = {XIL(0), XIL(0), XIL(0), XIL(0), XIL(0), XIL(0), XIL(0), XIL(0x555555704cf0)}
        a = <optimized out>
        maxargs = 2
        fun = <optimized out>
#41 0x00005555557176f2 in funcall_general
    (fun=XIL(0x555555d52d05), numargs=numargs@entry=2, args=args@entry=0x7fffff680e68) at /home/steve/src/emacs/emacs-master/src/lisp.h:2256
        original_fun = XIL(0x7ce0)
#42 0x0000555555714cc1 in Ffuncall
    (nargs=nargs@entry=3, args=args@entry=0x7fffff680e60)
    at /home/steve/src/emacs/emacs-master/src/eval.c:3070
        count = {
          bytes = 94688
        }
        val = <optimized out>
#43 0x0000555555713e23 in internal_condition_case_n
    (bfun=bfun@entry=0x555555714c25 <Ffuncall>, nargs=nargs@entry=3, args=args@entry=0x7fffff680e60, handlers=handlers@entry=XIL(0x30), hfun=hfun@entry=0x5555555cbc2a <dsafe_eval_handler>) at /home/steve/src/emacs/emacs-master/src/eval.c:1678
        val = <optimized out>
        c = 0x555556898c80
#44 0x00005555555bb4c7 in dsafe__call
    (inhibit_quit=inhibit_quit@entry=true, f=0x555555714c25 <Ffuncall>, nargs=nargs@entry=3, args=args@entry=0x7fffff680e60)
    at /home/steve/src/emacs/emacs-master/src/xdisp.c:3093
        count = {
          bytes = <optimized out>
        }
        val = <optimized out>
#45 0x00005555555bb5a0 in dsafe_eval (sexpr=<optimized out>)
    at /home/steve/src/emacs/emacs-master/src/xdisp.c:3129
#46 0x00005555555e31d6 in display_mode_element
    (it=it@entry=0x7fffff680f90, depth=1,
    depth@entry=0, field_width=field_width@entry=0, precision=precision@entry=0, elt=elt@entry=XIL(0x7fffef2cc703), props=props@entry=XIL(0), risky=false)
    at /home/steve/src/emacs/emacs-master/src/xdisp.c:27984
        spec = <optimized out>
        car = XIL(0xf30)
        tem = <optimized out>
        n = 0
        field = <optimized out>
        prec = <optimized out>
        literal = false
#47 0x00005555555e4110 in display_mode_line
    (w=w@entry=0x5555561a7de0, face_id=MODE_LINE_ACTIVE_FACE_ID, format=XIL(0x7fffef2cc703)) at /home/steve/src/emacs/emacs-master/src/xdisp.c:27495
        it = {
          window = XIL(0x5555561a7de5),
          w = 0x5555561a7de0,
          f = 0x5555561a7b58,
          method = GET_FROM_BUFFER,
          stop_charpos = 0,
          prev_stop = 0,
          base_level_stop = 0,
          end_charpos = 0,
          medium_narrowing_begv = 0,
          medium_narrowing_zv = 0,
          large_narrowing_begv = 0,
          large_narrowing_zv = 0,
          s = 0x0,
          string_nchars = 0,
          multibyte_p = true,
          tab_line_p = false,
          header_line_p = false,
          string_from_display_prop_p = false,
          string_from_prefix_prop_p = false,
          from_disp_prop_p = false,
          ellipsis_p = false,
          avoid_cursor_p = false,
          dp = 0x0,
          dpvec = 0x0,
          dpend = 0x0,
          dpvec_char_len = 0,
          dpvec_face_id = 0,
          saved_face_id = 0,
          ctl_chars = {XIL(0) <repeats 16 times>},
          start = {
            pos = {
              charpos = 0,
              bytepos = 0
            },
            overlay_string_index = 0,
            string_pos = {
              charpos = 0,
              bytepos = 0
            },
            dpvec_index = 0
          },
          current = {
            pos = {
              charpos = 0,
              bytepos = 0
            },
            overlay_string_index = -1,
            string_pos = {
              charpos = -1,
              bytepos = -1
            },
            dpvec_index = -1
          },
          n_overlay_strings = 0,
          overlay_strings_charpos = 0,
          overlay_strings = {XIL(0) <repeats 16 times>},
          string_overlays = {XIL(0) <repeats 16 times>},
          string = XIL(0),
          from_overlay = XIL(0),
          stack = {{
              string = XIL(0),
              string_nchars = 0,
              end_charpos = 0,
              stop_charpos = 0,
              prev_stop = 0,
              base_level_stop = 0,
              cmp_it = {
                stop_pos = 0,
                id = 0,
                ch = 0,
                rule_idx = 0,
                lookback = 0,
                nglyphs = 0,
                reversed_p = false,
                parent_it = 0x0,
                charpos = 0,
                nchars = 0,
                nbytes = 0,
                from = 0,
                to = 0,
                width = 0
              },
              face_id = 0,
              u = {
                image = {
                  object = XIL(0),
                  slice = {
                    x = XIL(0),
                    y = XIL(0),
                    width = XIL(0),
                    height = XIL(0)
                  },
                  image_id = 0
                },
                stretch = {
                  object = XIL(0)
                },
                xwidget = {
                  object = XIL(0)
                }
              },
              position = {
                charpos = 0,
                bytepos = 0
              },
              current = {
                pos = {
                  charpos = 0,
                  bytepos = 0
                },
                overlay_string_index = 0,
                string_pos = {
                  charpos = 0,
                  bytepos = 0
                },
                dpvec_index = 0
              },
              from_overlay = XIL(0),
              area = LEFT_MARGIN_AREA,
              method = GET_FROM_BUFFER,
              paragraph_embedding = NEUTRAL_DIR,
              multibyte_p = false,
              string_from_display_prop_p = false,
              string_from_prefix_prop_p = false,
              display_ellipsis_p = false,
              avoid_cursor_p = false,
              bidi_p = false,
              from_disp_prop_p = false,
              line_wrap = TRUNCATE,
              voffset = 0,
              space_width = XIL(0),
              font_height = XIL(0)
            }, {
              string = XIL(0),
              string_nchars = 0,
              end_charpos = 0,
              stop_charpos = 0,
              prev_stop = 0,
              base_level_stop = 0,
              cmp_it = {
                stop_pos = 0,
                id = 0,
                ch = 0,
                rule_idx = 0,
                lookback = 0,
                nglyphs = 0,
                reversed_p = false,
                parent_it = 0x0,
                charpos = 0,
                nchars = 0,
                nbytes = 0,
                from = 0,
                to = 0,
                width = 0
              },
              face_id = 0,
              u = {
                image = {
                  object = XIL(0),
                  slice = {
                    x = XIL(0),
                    y = XIL(0),
                    width = XIL(0),
                    height = XIL(0)
                  },
                  image_id = 0
                },
                stretch = {
                  object = XIL(0)
                },
                xwidget = {
                  object = XIL(0)
                }
              },
              position = {
                charpos = 0,
                bytepos = 0
              },
              current = {
                pos = {
                  charpos = 0,
                  bytepos = 0
                },
                overlay_string_index = 0,
                string_pos = {
                  charpos = 0,
                  bytepos = 0
                },
                dpvec_index = 0
              },
              from_overlay = XIL(0),
              area = LEFT_MARGIN_AREA,
              method = GET_FROM_BUFFER,
              paragraph_embedding = NEUTRAL_DIR,
              multibyte_p = false,
              string_from_display_prop_p = false,
              string_from_prefix_prop_p = false,
              display_ellipsis_p = false,
              avoid_cursor_p = false,
              bidi_p = false,
              from_disp_prop_p = false,
              line_wrap = TRUNCATE,
              voffset = 0,
              space_width = XIL(0),
              font_height = XIL(0)
            }, {
              string = XIL(0),
              string_nchars = 0,
              end_charpos = 0,
              stop_charpos = 0,
              prev_stop = 0,
              base_level_stop = 0,
              cmp_it = {
                stop_pos = 0,
                id = 0,
                ch = 0,
                rule_idx = 0,
                lookback = 0,
                nglyphs = 0,
                reversed_p = false,
                parent_it = 0x0,
                charpos = 0,
                nchars = 0,
                nbytes = 0,
                from = 0,
                to = 0,
                width = 0
              },
              face_id = 0,
              u = {
                image = {
                  object = XIL(0),
                  slice = {
                    x = XIL(0),
                    y = XIL(0),
                    width = XIL(0),
                    height = XIL(0)
                  },
                  image_id = 0
                },
                stretch = {
                  object = XIL(0)
                },
                xwidget = {
                  object = XIL(0)
                }
              },
              position = {
                charpos = 0,
                bytepos = 0
              },
              current = {
                pos = {
                  charpos = 0,
                  bytepos = 0
                },
                overlay_string_index = 0,
                string_pos = {
                  charpos = 0,
                  bytepos = 0
                },
                dpvec_index = 0
              },
              from_overlay = XIL(0),
              area = LEFT_MARGIN_AREA,
              method = GET_FROM_BUFFER,
              paragraph_embedding = NEUTRAL_DIR,
              multibyte_p = false,
              string_from_display_prop_p = false,
              string_from_prefix_prop_p = false,
              display_ellipsis_p = false,
              avoid_cursor_p = false,
              bidi_p = false,
              from_disp_prop_p = false,
              line_wrap = TRUNCATE,
              voffset = 0,
              space_width = XIL(0),
              font_height = XIL(0)
            }, {
              string = XIL(0),
              string_nchars = 0,
              end_charpos = 0,
              stop_charpos = 0,
              prev_stop = 0,
              base_level_stop = 0,
              cmp_it = {
                stop_pos = 0,
                id = 0,
                ch = 0,
                rule_idx = 0,
                lookback = 0,
                nglyphs = 0,
                reversed_p = false,
                parent_it = 0x0,
                charpos = 0,
                nchars = 0,
                nbytes = 0,
                from = 0,
                to = 0,
                width = 0
              },
              face_id = 0,
              u = {
                image = {
                  object = XIL(0),
                  slice = {
                    x = XIL(0),
                    y = XIL(0),
                    width = XIL(0),
                    height = XIL(0)
                  },
                  image_id = 0
                },
                stretch = {
                  object = XIL(0)
                },
                xwidget = {
                  object = XIL(0)
                }
              },
              position = {
                charpos = 0,
                bytepos = 0
              },
              current = {
                pos = {
                  charpos = 0,
                  bytepos = 0
                },
                overlay_string_index = 0,
                string_pos = {
                  charpos = 0,
                  bytepos = 0
                },
                dpvec_index = 0
              },
              from_overlay = XIL(0),
              area = LEFT_MARGIN_AREA,
              method = GET_FROM_BUFFER,
              paragraph_embedding = NEUTRAL_DIR,
              multibyte_p = false,
              string_from_display_prop_p = false,
              string_from_prefix_prop_p = false,
              display_ellipsis_p = false,
              avoid_cursor_p = false,
              bidi_p = false,
              from_disp_prop_p = false,
              line_wrap = TRUNCATE,
              voffset = 0,
              space_width = XIL(0),
              font_height = XIL(0)
            }, {
              string = XIL(0),
              string_nchars = 0,
              end_charpos = 0,
              stop_charpos = 0,
              prev_stop = 0,
              base_level_stop = 0,
              cmp_it = {
                stop_pos = 0,
                id = 0,
                ch = 0,
                rule_idx = 0,
                lookback = 0,
                nglyphs = 0,
                reversed_p = false,
                parent_it = 0x0,
                charpos = 0,
                nchars = 0,
                nbytes = 0,
                from = 0,
                to = 0,
                width = 0
              },
              face_id = 0,
              u = {
                image = {
                  object = XIL(0),
                  slice = {
                    x = XIL(0),
                    y = XIL(0),
                    width = XIL(0),
                    height = XIL(0)
                  },
                  image_id = 0
                },
                stretch = {
                  object = XIL(0)
                },
                xwidget = {
                  object = XIL(0)
                }
              },
              position = {
                charpos = 0,
                bytepos = 0
              },
              current = {
                pos = {
                  charpos = 0,
                  bytepos = 0
                },
                overlay_string_index = 0,
                string_pos = {
                  charpos = 0,
                  bytepos = 0
                },
                dpvec_index = 0
              },
              from_overlay = XIL(0),
              area = LEFT_MARGIN_AREA,
              method = GET_FROM_BUFFER,
              paragraph_embedding = NEUTRAL_DIR,
              multibyte_p = false,
              string_from_display_prop_p = false,
              string_from_prefix_prop_p = false,
              display_ellipsis_p = false,
              avoid_cursor_p = false,
              bidi_p = false,
              from_disp_prop_p = false,
              line_wrap = TRUNCATE,
              voffset = 0,
              space_width = XIL(0),
              font_height = XIL(0)
            }},
          sp = 0,
          selective = 0,
          what = IT_CHARACTER,
          face_id = 1,
          selective_display_ellipsis_p = true,
          ctl_arrow_p = true,
          face_box_p = true,
          start_of_box_run_p = true,
          end_of_box_run_p = false,
          overlay_strings_at_end_processed_p = false,
          ignore_overlay_strings_at_pos_p = false,
          glyph_not_available_p = false,
          starts_in_middle_of_char_p = false,
          face_before_selective_p = false,
          constrain_row_ascent_descent_p = false,
          line_number_produced_p = false,
          align_visually_p = false,
          line_wrap = TRUNCATE,
          base_face_id = 1,
          c = 0,
          len = 0,
          cmp_it = {
            stop_pos = 0,
            id = -1,
            ch = 0,
            rule_idx = 0,
            lookback = 0,
            nglyphs = 0,
            reversed_p = false,
            parent_it = 0x7fffff680f90,
            charpos = 0,
            nchars = 0,
            nbytes = 0,
            from = 0,
            to = 0,
            width = 0
          },
          char_to_display = 0,
          glyphless_method = GLYPHLESS_DISPLAY_THIN_SPACE,
          image_id = 0,
          xwidget = 0x0,
          slice = {
            x = XIL(0),
            y = XIL(0),
            width = XIL(0),
            height = XIL(0)
          },
          space_width = XIL(0),
          voffset = 0,
          tab_width = 8,
          font_height = XIL(0),
          object = XIL(0),
          position = {
            charpos = 0,
            bytepos = 0
          },
          truncation_pixel_width = 8,
          continuation_pixel_width = 0,
          first_visible_x = 0,
          last_visible_x = 671,
          last_visible_y = 578,
          extra_line_spacing = 0,
          max_extra_line_spacing = 0,
          override_ascent = -1,
          override_descent = 0,
          override_boff = 0,
          glyph_row = 0x555555f9fbf0,
          area = TEXT_AREA,
          nglyphs = 1,
          pixel_width = 0,
          ascent = 0,
          descent = 0,
          max_ascent = 0,
          max_descent = 0,
          phys_ascent = 0,
          phys_descent = 0,
          max_phys_ascent = 0,
          max_phys_descent = 0,
          current_x = 0,
          wrap_prefix_width = 0,
          continuation_lines_width = 0,
          eol_pos = {
            charpos = 0,
            bytepos = 0
          },
          current_y = 0,
          first_vpos = 0,
          vpos = 0,
          hpos = 0,
          lnum = 0,
          lnum_bytepos = 0,
          lnum_width = 0,
          lnum_pixel_width = 0,
          pt_lnum = 0,
          stretch_adjust = 0,
          left_user_fringe_bitmap = 0,
          right_user_fringe_bitmap = 0,
          left_user_fringe_face_id = 0,
          right_user_fringe_face_id = 0,
          bidi_p = false,
          bidi_it = {
            bytepos = 0,
            charpos = 0,
            ch = 0,
            nchars = 0,
            ch_len = 0,
            type = UNKNOWN_BT,
            type_after_wn = UNKNOWN_BT,
            orig_type = UNKNOWN_BT,
            resolved_level = 0 '\000',
            isolate_level = 0 '\000',
            invalid_levels = 0,
            invalid_isolates = 0,
            prev = {
              charpos = 0,
              type = UNKNOWN_BT,
              orig_type = UNKNOWN_BT
            },
            last_strong = {
              charpos = 0,
              type = UNKNOWN_BT,
              orig_type = UNKNOWN_BT
            },
            next_for_neutral = {
              charpos = 0,
              type = UNKNOWN_BT,
              orig_type = UNKNOWN_BT
            },
            prev_for_neutral = {
              charpos = 0,
              type = UNKNOWN_BT,
              orig_type = UNKNOWN_BT
            },
            next_for_ws = {
              charpos = 0,
              type = UNKNOWN_BT,
              orig_type = UNKNOWN_BT
            },
            bracket_pairing_pos = 0,
            bracket_enclosed_type = UNKNOWN_BT,
            next_en_pos = 0,
            next_en_type = UNKNOWN_BT,
            sos = NEUTRAL_DIR,
            scan_dir = 0,
            disp_pos = 0,
            disp_prop = 0,
            stack_idx = 0,
            level_stack = {{
                next_for_neutral_pos = 0,
                next_for_neutral_type = 0,
                last_strong_type = 0,
                prev_for_neutral_type = 0,
                level = 0 '\000',
                flags = 0 '\000'
              } <repeats 128 times>},
            string = {
              lstring = XIL(0),
              s = 0x0,
              schars = 0,
              bufpos = 0,
              from_disp_str = false,
              unibyte = false
            },
            w = 0x5555561a7de0,
            paragraph_dir = NEUTRAL_DIR,
            separator_limit = 0,
            first_elt = false,
            new_paragraph = false,
            frame_window_p = false
          },
          paragraph_embedding = L2R,
          min_width_property = XIL(0),
          min_width_start = 0
        }
        face = <optimized out>
        count = {
          bytes = <optimized out>
        }
#48 0x00005555555e4863 in pos_visible_p
    (w=w@entry=0x5555561a7de0, charpos=charpos@entry=230, x=x@entry=0x7fffff6871f0, y=y@entry=0x7fffff6871f4, rtop=rtop@entry=0x7fffff6871e0, rbot=rbot@entry=0x7fffff6871e4, rowh=0x7fffff6871e8, vpos=0x7fffff6871ec)
    at /home/steve/src/emacs/emacs-master/src/xdisp.c:1732
        window_mode_line_format = <optimized out>
[...]



^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Freeze with specific evaluation in the modeline
  2024-09-02 21:40 ` Stephen Berman
@ 2024-09-03 14:17   ` Eli Zaretskii
  2024-09-03 18:13     ` Nicolas P. Rougier (gmail)
  0 siblings, 1 reply; 4+ messages in thread
From: Eli Zaretskii @ 2024-09-03 14:17 UTC (permalink / raw)
  To: Stephen Berman; +Cc: nicolas.rougier, emacs-devel

> From: Stephen Berman <stephen.berman@gmx.net>
> Cc: emacs-devel@gnu.org
> Date: Mon, 02 Sep 2024 23:40:24 +0200
> 
> On Mon, 02 Sep 2024 21:56:13 +0200 "Nicolas P. Rougier (inria)" <nicolas.rougier@inria.fr> wrote:
> 
> > I've tried the following code (with Emacs -q, v30.0.60):
> >
> > (setq mode-line-format
> >        '(:eval (if (window-in-direction 'down) "yes" "no")))
> >
> > and it somehow freezes Emacs even though menubar is still responsive and
> > I can quit through the menu. I'm not sure how to debug since I cannot
> > really interact anymore.
> >
> > Could anyone confirms the behavior?
> 
> I can, and when I ran emacs under gdb and evaluated the above sexp, this
> immediately caused a segfault in pos_visible_p.  I then typed bt full at
> the gdb prompt and the backtrace appeared to infloop; when I interrupted
> it, it was at frame #3935.  Below is the backtrace up to the start of
> frame #48, which I think shows the loop.

It isn't a loop, it's infinite recursion.  window-in-direction calls
posn-at-point, which calls display_mode_line, which again evaluates
the form, which calls window-in-direction...

Just don't do this, is all I can say.  I don't see a way of protecting
against this without disabling useful features of :eval.  Emacs gives
you enough rope to hang yourself, but don't hang yourself.  The
variant below avoids infinite recursion, perhaps at a price of losing
accuracy in some corner cases:

  (setq mode-line-format
        '(:eval (let (mode-line-format)
                 (if (window-in-direction 'down) "yes" "no"))))

The :eval feature is inherently dangerous.  The documentation of :eval
already warns about one possible danger of getting infinite recursion,
I will try to find a way to add this caveat as well.



^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Freeze with specific evaluation in the modeline
  2024-09-03 14:17   ` Eli Zaretskii
@ 2024-09-03 18:13     ` Nicolas P. Rougier (gmail)
  0 siblings, 0 replies; 4+ messages in thread
From: Nicolas P. Rougier (gmail) @ 2024-09-03 18:13 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Stephen Berman, nicolas.rougier, emacs-devel

On Tue 03 Sep 2024 at 17:17, Eli Zaretskii <eliz@gnu.org> wrote:

> It isn't a loop, it's infinite recursion.  window-in-direction calls
> posn-at-point, which calls display_mode_line, which again evaluates
> the form, which calls window-in-direction...
> 
> Just don't do this, is all I can say.  I don't see a way of protecting
> against this without disabling useful features of :eval.  Emacs gives
> you enough rope to hang yourself, but don't hang yourself.  The
> variant below avoids infinite recursion, perhaps at a price of losing
> accuracy in some corner cases:
> 
>   (setq mode-line-format
>         '(:eval (let (mode-line-format)
>                  (if (window-in-direction 'down) "yes" "no"))))
> 
> The :eval feature is inherently dangerous.  The documentation of :eval
> already warns about one possible danger of getting infinite recursion,
> I will try to find a way to add this caveat as well.

Thanks for the answer. I'll try your work-around.

What I'm trying to do is to have vertical spacing between windows and my
first idea was of course to use window-divider-mode. But even with a
single window, the mode adds a bottom spacing due to the presence of the
minibuffer window (I think), even though (window-in-direction 'down)
reports no window in such configuration. My second idea was then to use
the mode line as a (dynamic) separator.

Nicolas

-- 
Nicolas P. Rougier —— www.labri.fr/perso/nrougier
Institute of Neurodegenerative Diseases, Bordeaux



^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2024-09-03 18:13 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-09-02 19:56 Freeze with specific evaluation in the modeline Nicolas P. Rougier (inria)
2024-09-02 21:40 ` Stephen Berman
2024-09-03 14:17   ` Eli Zaretskii
2024-09-03 18:13     ` Nicolas P. Rougier (gmail)

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).