91861 / wayst

A simple terminal emulator
MIT License
283 stars 8 forks source link

Segfaults - possibly ncurses related #68

Closed etenim closed 3 years ago

etenim commented 3 years ago

I've yet to find out how it can be reproduced reliably, but when I exit from vim, after having worked on some file there seems to be a chance that wayst will segfault. There's also been segfaults when I use tmux, and both of these use ncurses.

Running wayst on a wayland compositor.

etenim commented 3 years ago

Here is the bottom parts of strace output leading up to a wayst terminal segfaulting when exiting vim:

poll([{fd=3, events=POLLIN}, {fd=5, events=POLLIN}], 2, 0) = 0 (Timeout)
sendmsg(5, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\16\0\0\0\3\0\f\0\32\0\0\0", iov_len=12}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, MSG_DONTWAIT|MSG_NOSIGNAL) = 12
poll([{fd=3, events=POLLIN}, {fd=5, events=POLLIN}], 2, 598) = 1 ([{fd=5, revents=POLLIN}])
recvmsg(5, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\24\0\0\0\0\0\10\0\35\0\0\0\0\0\f\0\370\334S7\1\0\0\0\1\0\f\0\35\0\0\0"..., iov_len=4060}, {iov_base="", iov_len=36}], msg_iovlen=2, msg_controllen=0, msg_flags=MSG_CMSG_CLOEXEC}, MSG_DONTWAIT|MSG_CMSG_CLOEXEC) = 56
poll([{fd=3, events=POLLIN}, {fd=5, events=POLLIN}], 2, 598) = 1 ([{fd=3, revents=POLLIN}])
read(3, " 4L, 112B written", 128)       = 17
poll([{fd=3, events=POLLIN}], 1, 0)     = 0 (Timeout)
ioctl(10, DRM_IOCTL_I915_GEM_BUSY, 0x7ffe59f57fa0) = 0
ioctl(10, DRM_IOCTL_I915_GEM_BUSY, 0x7ffe59f58220) = 0
ioctl(10, DRM_IOCTL_I915_GEM_BUSY, 0x7ffe59f580dc) = 0
ioctl(10, DRM_IOCTL_I915_GEM_MADVISE, 0x7ffe59f580dc) = 0
ioctl(10, DRM_IOCTL_I915_GEM_EXECBUFFER2, 0x7ffe59f58210) = 0
ioctl(10, DRM_IOCTL_I915_GEM_MADVISE, 0x7ffe59f58194) = 0
ioctl(10, DRM_IOCTL_I915_GEM_MADVISE, 0x7ffe59f58154) = 0
ioctl(10, DRM_IOCTL_I915_GEM_BUSY, 0x7ffe59f5807c) = 0
ioctl(10, DRM_IOCTL_I915_GEM_MADVISE, 0x7ffe59f5807c) = 0
ioctl(10, DRM_IOCTL_SYNCOBJ_CREATE, 0x7ffe59f58190) = 0
ioctl(10, DRM_IOCTL_SYNCOBJ_DESTROY, 0x7ffe59f582b0) = 0
sendmsg(5, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\16\0\0\0\3\0\f\0\27\0\0\0\16\0\0\0\1\0\24\0\24\0\0\0\0\0\0\0\0\0\0\0"..., iov_len=64}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, MSG_DONTWAIT|MSG_NOSIGNAL) = 64
poll([{fd=3, events=POLLIN}, {fd=5, events=POLLIN}], 2, 0) = 1 ([{fd=3, revents=POLLIN}])
read(3, "\r\33[23;2t\33[23;1t\r\r\n\33[?2004l\33[?1l\33"..., 128) = 62
munmap(0x7f4125569000, 16384)           = 0
--- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_ACCERR, si_addr=0x7f412cdac79d} ---
+++ killed by SIGSEGV +++
etenim commented 3 years ago

I have another strace output, but from a segfault related to tmux this time. I entered "ctrl+b", and then "pgup" in tmux, and the segfault happened as soon as I hit "pgup" and any further attempts to reattach to that tmux session will segfault wayst.

mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fd8eeedf000
writev(2, [{iov_base="", iov_len=0}, {iov_base="[\33[33mwarning\33[m] ", iov_len=18}], 2[warning] ) = 18
writev(2, [{iov_base="", iov_len=0}, {iov_base="utf8 mouse mode not implemented\n", iov_len=32}], 2utf8 mouse mode not implemented
) = 32
writev(2, [{iov_base="", iov_len=0}, {iov_base="[\33[33mwarning\33[m] ", iov_len=18}], 2[warning] ) = 18
writev(2, [{iov_base="Unimplemented DSR code: 1337\n", iov_len=29}, {iov_base=NULL, iov_len=0}], 2Unimplemented DSR code: 1337
) = 29
poll([{fd=3, events=POLLIN}], 1, 0)     = 1 ([{fd=3, revents=POLLIN}])
read(3, "\33[?1006l\33[?2004l\33[1;1H\33[1;24r\33[2"..., 128) = 37
poll([{fd=3, events=POLLIN}], 1, 0)     = 0 (Timeout)
write(3, "\33[?6c", 5)                  = 5
poll([{fd=3, events=POLLIN}, {fd=5, events=POLLIN}], 2, 595) = 1 ([{fd=3, revents=POLLIN}])
read(3, "\33[?25l\33[H    selected: \33[31m\33[1m"..., 128) = 128
mmap(NULL, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fd8eedc7000
poll([{fd=3, events=POLLIN}], 1, 0)     = 1 ([{fd=3, revents=POLLIN}])
read(3, "1H   protected: none \33[K\33[3;5H\33["..., 128) = 128
--- SIGSEGV {si_signo=SIGSEGV, si_code=SI_KERNEL, si_addr=NULL} ---
+++ killed by SIGSEGV +++
etenim commented 3 years ago

It's looking likely that with vim it is related to usage of wayst's copy/paste functionality. I opened a c source file, and closed it again ":q" many times without managing to segfault wayst. However opening a c source file with vim just once and pasting text from the same wayst terminal, caused wayst to segfault when I entered ":wq" to save and quit vim.

I got another segfault doing the same thing again:

Using a wayland compositor.

etenim commented 3 years ago

I've reproduced it multiple times now (using the steps in my previous comment), and it is a consistent issue. There is however only segfaults when the copied contents is pasted into a vim running on the same wayst terminal the text is copied from. I tried copying and pasting between two different wayst terminals, and that did not cause a segfault.

I tried with "ed" instead of "vim" and did not get a segfault.

etenim commented 3 years ago

Strangely I'm not getting segfaults when copying text from a file viewed with "less". The segfaults happen always when I copy text from a file opened with "cat". It does not seem to matter what contents the file has, as long as "cat" is the program used to display it.

After having used "cat" to display text and then used ctrl+shift+y to copy the text, all I need to do is open and quit vim for wayst to segfault, pasting the text isn't even needed.

The "cat" utility is from busybox. I'll add that this is on a musl system, with a wayland compositor.

  1. cat somefile
  2. select text
  3. ctrl+shift+y
  4. run vim
  5. quit vim
  6. wayst segfault
91861 commented 3 years ago

Still couldn't reproduce this.

If you can consistently get it to crash, you can try to get some useful info by running a sanitized build: make -B mode=sanitized and just run normally.

Or get a backtrace from the coredump file:

etenim commented 3 years ago

Running wayst with debug symbols and gdb to capture a segfault.

App::select_drag{ 398 x 673 }
App::select_drag{ 398 x 673 }
App::select_drag{ 398 x 673 }
Wl::key{ key: 21 code: 29 state: 1 repeat: 0 sym: 89 rawsym: 121 utfcode: 25 }
making a data source
wl.data_device::offer
wl.data_offer::offer{ mime_type: text/plain;charset=utf-8 - ACCEPTED(new data) }
wl.data_device::selection { has_offer: 1 }
Wl::key{ key: 21 code: 29 state: 0 repeat: 0 sym: 89 rawsym: 121 utfcode: 25 }
Wl::key{ key: 47 code: 55 state: 1 repeat: 0 sym: 118 rawsym: 118 utfcode: 118 }
Wl::key{ key: 47 code: 55 state: 0 repeat: 0 sym: 118 rawsym: 118 utfcode: 118 }
Wl::key{ key: 23 code: 31 state: 1 repeat: 0 sym: 105 rawsym: 105 utfcode: 105 }
Wl::key{ key: 23 code: 31 state: 0 repeat: 0 sym: 105 rawsym: 105 utfcode: 105 }
Wl::key{ key: 50 code: 58 state: 1 repeat: 0 sym: 109 rawsym: 109 utfcode: 109 }
Wl::key{ key: 50 code: 58 state: 0 repeat: 0 sym: 109 rawsym: 109 utfcode: 109 }
Wl::key{ key: 28 code: 36 state: 1 repeat: 0 sym: 65293 rawsym: 65293 utfcode: 13 }
Title stack push
Title stack push
Title stack push
[warning] Unknown DCS: zz␛\
[warning] DEC mode state reports not implemented
Wl::key{ key: 28 code: 36 state: 0 repeat: 0 sym: 65293 rawsym: 65293 utfcode: 13 }
Wl::key{ key: 39 code: 47 state: 1 repeat: 0 sym: 58 rawsym: 59 utfcode: 58 }
Wl::key{ key: 39 code: 47 state: 0 repeat: 0 sym: 58 rawsym: 59 utfcode: 58 }
Wl::key{ key: 16 code: 24 state: 1 repeat: 0 sym: 113 rawsym: 113 utfcode: 113 }
Wl::key{ key: 16 code: 24 state: 0 repeat: 0 sym: 113 rawsym: 113 utfcode: 113 }
Wl::key{ key: 28 code: 36 state: 1 repeat: 0 sym: 65293 rawsym: 65293 utfcode: 13 }
Title stack pop
Title stack pop

Thread 1 "wayst" received signal SIGSEGV, Segmentation fault.
0x00005555555b449d in Vt_mark_line_proxy_fully_damaged (self=0x7fffffffdc00, line=0x7ffff76d00b0) at src/vt.c:598
598         line->damage.type = VT_LINE_DAMAGE_FULL;
#0  0x00005555555b449d in Vt_mark_line_proxy_fully_damaged (self=0x7fffffffdc00, line=0x7ffff76d00b0)
    at src/vt.c:598
        __func__ = "Vt_mark_line_proxy_fully_damaged"
#1  0x00005555555b44e8 in Vt_mark_proxy_fully_damaged (self=0x7fffffffdc00, idx=701) at src/vt.c:603
No locals.
#2  0x00005555555b471d in Vt_mark_proxies_damaged_in_region (self=0x7fffffffdc00, begin=701, end=722)
    at src/vt.c:638
        i = 701
        lo = 701
        hi = 722
#3  0x00005555555b49d0 in Vt_mark_proxies_damaged_in_selected_region (self=0x7fffffffdc00) at src/vt.c:683
No locals.
#4  0x00005555555b5179 in Vt_select_end (self=0x7fffffffdc00) at src/vt.c:775
        __func__ = "Vt_select_end"
#5  0x00005555555bceb6 in Vt_alt_buffer_off (self=0x7fffffffdc00, save_mouse=true) at src/vt.c:3331
No locals.
#6  0x00005555555b8e38 in Vt_handle_dec_mode (self=0x7fffffffdc00, code=1049, on=false) at src/vt.c:1904
        __func__ = "Vt_handle_dec_mode"
#7  0x00005555555b92eb in Vt_handle_CSI (self=0x7fffffffdc00, c=108 'l') at src/vt.c:2005
        code = 1049
        token = 0x7fffeee651f0
        is_enable = false
        tokens = {cap = 8, size = 1, buf = 0x7fffeee651f0}
        seq = 0x7fffefdb10e0 "?1049l"
        last_char = 108 'l'
        second_last_char = 57 '9'
        first_char = 63 '?'
        is_single_arg = true
        __func__ = "Vt_handle_CSI"
#8  0x00005555555c4ee4 in Vt_handle_char (c=108 'l', self=0x7fffffffdc00) at src/vt.c:5306
        __func__ = "Vt_handle_char"
#9  Vt_interpret (self=0x7fffffffdc00, 
    buf=0x7fffffffe425 "\033[23;1t\033[24;1H\033[K\033[24;1H\033[?2004l\033[?1l\033>\033[?25h\033[>4;m\033[?1049l\033[23;0;0t5m<F1>\033[m  for on-line help\033[17;18Htype  :help version8\033[38;", bytes=68) at src/vt.c:5814
        i = 58
#10 0x0000555555592877 in App_run (self=0x7fffffffdbf0) at src/main.c:246
        timeout_ms = 598
        pending_window_timer = 0x7ffff7a1b740
        bytes = 68
        buf = 0x7fffee9310f0 "\r[2;2R\033[3;1R\033[>0;0;0c\033]10;rgb:199/238/255\a\033]11;rgb:  0/  0/  0\a"
        len = 0
        closest_gfx_timer = 0x7ffff65c2d00
        out = 0x0
#11 0x0000555555597f51 in main (argc=1, argv=0x7fffffffe628) at src/main.c:1636
        application = {win = 0x7ffff58f0810, gfx = 0x7ffff65c2950, vt = {callbacks = {user_data = 0x7fffffffdbf0, 
              on_window_size_requested = 0x555555592f4f <App_window_size>, 
              on_text_area_size_requested = 0x555555597b89 <App_text_area_size>, 
              on_window_size_from_cells_requested = 0x555555592f89 <App_pixels>, 
              on_number_of_cells_requested = 0x555555592fb5 <App_get_char_size>, on_window_resize_requested = 0x0, 
              on_window_position_requested = 0x555555592f6c <App_window_position>, 
              on_minimized_state_requested = 0x555555597a53 <App_minimized>, 
              on_fullscreen_state_requested = 0x555555597a78 <App_fullscreen>, 
              on_action_performed = 0x55555559301b <App_action>, 
              on_repaint_required = 0x555555592eea <App_notify_content_change>, 
              on_visual_bell = 0x555555592ffc <App_flash>, on_desktop_notification_sent = 
    0x555555597959 <App_send_desktop_notification>, on_window_maximize_state_set = 
    0x555555597a9d <App_set_maximized_state>, on_window_fullscreen_state_set = 
    0x555555597ace <App_set_fullscreen_state>, on_window_dimensions_set = 0x555555597aff <App_set_window_size>, 
              on_text_area_dimensions_set = 0x555555597b33 <App_set_text_area_size>, on_title_changed = 
    0x555555592fd3 <App_update_title>, on_clipboard_requested = 0x555555592f31 <App_clipboard_get>, 
              on_font_reload_requseted = 0x555555592e39 <App_reload_font>, on_clipboard_sent = 
    0x555555592f08 <App_clipboard_send>, on_urgency_set = 0x555555597bda <App_set_urgent>, 
              on_restack_to_front = 0x555555597c0e <App_restack_to_front>,
              on_application_hostname_requested = 0x555555597c31 <App_get_hostname>, destroy_proxy = 
    0x5555555977f1 <App_destroy_proxy_handler>, destroy_image_proxy = 
    0x555555597823 <App_destroy_image_proxy_handler>, destroy_image_view_proxy = 
    0x555555597855 <App_destroy_image_view_proxy_handler>}, last_click_x = 0, last_click_y = 0, 
            pixels_per_cell_x = 16.449999999999999, pixels_per_cell_y = 31.5, scrolling_visual = false, 
            visual_scroll_top = 0, unicode_input = {active = false, buffer = {cap = 4, size = 0, 
                buf = 0x7ffff76a1580 "LKLU"}}, selection = {mode = SELECT_MODE_NONE, next_mode = SELECT_MODE_NONE, 
              click_begin_line = 701, click_begin_char_idx = 0, begin_line = 701, end_line = 722, 
              begin_char_idx = 0, end_char_idx = 24}, ws = {ws_row = 24, ws_col = 80, ws_xpixel = 1316, 
              ws_ypixel = 756}, tios = {c_iflag = 0, c_oflag = 0, c_cflag = 0, c_lflag = 0, c_line = 0 '\000', 
              c_cc = '\000' <repeats 31 times>, __c_ispeed = 0, __c_ospeed = 0}, master_fd = 3, output = {cap = 63, 
              size = 0, 
              buf = 0x7fffee9310f0 "\r[2;2R\033[3;1R\033[>0;0;0c\033]10;rgb:199/238/255\a\033]11;rgb:  0/  0/  0\a"}, staged_output = {cap = 4, size = 0, buf = 0x7ffff76a1570 "Lohi"}, wrap_next = false, parser = {
              state = PARSER_STATE_CSI, in_mb_seq = false, input_mbstate = {__opaque1 = 0, __opaque2 = 0}, 
              char_state = {rune = {code = 0 U'\000', combine = U"\000", style = VT_RUNE_NORMAL}, ln_clr_data = {
                  rgb = {r = 0 '\000', g = 0 '\000', b = 0 '\000'}, index = 0}, fg_data = {rgb = {r = 255 '\377', 
                    g = 255 '\377', b = 0 '\000'}, index = -1}, bg_data = {rgba = {r = 255 '\377', g = 255 '\377', 
                    b = 0 '\000', a = 0 '\000'}, index = -1}, hyperlink_idx = 0, bg_is_palette_entry = true, 
                fg_is_palette_entry = true, ln_clr_is_palette_entry = false, line_color_not_default = false, 
                invert = false, dim = false, hidden = false, blinkng = false, underlined = false, 
                strikethrough = false, doubleunderline = false, curlyunderline = false, overline = false}, 
              active_sequence = {cap = 32, size = 7, buf = 0x7fffefdb10e0 "?1049l"}}, uri_matcher = {match = {
                cap = 128, size = 0, buf = 0x7ffff7a799f0 "qnfoion8ioemas.xmlsoap.org/soap/encoding/"}, 
              start_column = 1, start_row = 23, state = VT_URI_MATCHER_EMPTY}, 
            shell_integration_state = VT_SHELL_INTEG_STATE_NONE, manipulated_image = {block = 0x0}, images = {
              cap = 4, size = 0, buf = 0x7ffff7686760}, image_views = {cap = 4, size = 0, buf = 0x7ffff7839eb0}, 
            shell_commands = {cap = 4, size = 0, buf = 0x7ffff7839ee0}, shell_integration_shell_id = 0x0, 
            shell_integration_protocol_version = 0, shell_integration_shell_host = 0x0, 
            shell_integration_current_dir = 0x0, title = 0x0, client_host = 0x0, work_dir = 0x0, title_stack = {
              cap = 4, size = 0, buf = 0x7ffff7686730}, colors = {bg = {r = 0 '\000', g = 0 '\000', b = 0 '\000', 
                a = 187 '\273'}, fg = {r = 199 '\307', g = 238 '\356', b = 255 '\377'}, highlight = {bg = {
                  r = 50 '2', g = 50 '2', b = 50 '2', a = 240 '\360'}, fg = {r = 255 '\377', g = 255 '\377', 
                  b = 255 '\377'}}, palette_256 = {{r = 0 '\000', g = 0 '\000', b = 0 '\000'}, {r = 171 '\253', 
                  g = 31 '\037', b = 0 '\000'}, {r = 210 '\322', g = 255 '\377', b = 0 '\000'}, {r = 255 '\377', 
                  g = 125 '}', b = 0 '\000'}, {r = 64 '@', g = 96 '`', b = 176 '\260'}, {r = 183 '\267', 
                  g = 0 '\000', b = 111 'o'}, {r = 0 '\000', g = 174 '\256', b = 160 '\240'}, {r = 170 '\252', 
                  g = 170 '\252', b = 170 '\252'}, {r = 84 'T', g = 84 'T', b = 84 'T'}, {r = 187 '\273', 
                  g = 57 '9', b = 57 '9'}, {r = 175 '\257', g = 255 '\377', b = 82 'R'}, {r = 255 '\377', 
                  g = 168 '\250', b = 85 'U'}, {r = 16 '\020', g = 123 '{', b = 201 '\311'}, {r = 255 '\377', 
                  g = 54 '6', b = 138 '\212'}, {r = 64 '@', g = 255 '\377', b = 239 '\357'}, {r = 255 '\377', 
                  g = 255 '\377', b = 255 '\377'}, {r = 0 '\000', g = 0 '\000', b = 0 '\000'}, {r = 0 '\000', 
                  g = 0 '\000', b = 51 '3'}, {r = 0 '\000', g = 0 '\000', b = 102 'f'}, {r = 0 '\000', 
                  g = 0 '\000', b = 153 '\231'}, {r = 0 '\000', g = 0 '\000', b = 204 '\314'}, {r = 0 '\000', 
                  g = 0 '\000', b = 255 '\377'}, {r = 0 '\000', g = 51 '3', b = 0 '\000'}, {r = 0 '\000', 
                  g = 51 '3', b = 51 '3'}, {r = 0 '\000', g = 51 '3', b = 102 'f'}, {r = 0 '\000', g = 51 '3', 
                  b = 153 '\231'}, {r = 0 '\000', g = 51 '3', b = 204 '\314'}, {r = 0 '\000', g = 51 '3', 
                  b = 255 '\377'}, {r = 0 '\000', g = 102 'f', b = 0 '\000'}, {r = 0 '\000', g = 102 'f', 
                  b = 51 '3'}, {r = 0 '\000', g = 102 'f', b = 102 'f'}, {r = 0 '\000', g = 102 'f', 
                  b = 153 '\231'}, {r = 0 '\000', g = 102 'f', b = 204 '\314'}, {r = 0 '\000', g = 102 'f', 
                  b = 255 '\377'}, {r = 0 '\000', g = 153 '\231', b = 0 '\000'}, {r = 0 '\000', g = 153 '\231', 
                  b = 51 '3'}, {r = 0 '\000', g = 153 '\231', b = 102 'f'}, {r = 0 '\000', g = 153 '\231', 
                  b = 153 '\231'}, {r = 0 '\000', g = 153 '\231', b = 204 '\314'}, {r = 0 '\000', g = 153 '\231', 
                  b = 255 '\377'}, {r = 0 '\000', g = 204 '\314', b = 0 '\000'}, {r = 0 '\000', g = 204 '\314', 
                  b = 51 '3'}, {r = 0 '\000', g = 204 '\314', b = 102 'f'}, {r = 0 '\000', g = 204 '\314', 
                  b = 153 '\231'}, {r = 0 '\000', g = 204 '\314', b = 204 '\314'}, {r = 0 '\000', g = 204 '\314', 
                  b = 255 '\377'}, {r = 0 '\000', g = 255 '\377', b = 0 '\000'}, {r = 0 '\000', g = 255 '\377', 
                  b = 51 '3'}, {r = 0 '\000', g = 255 '\377', b = 102 'f'}, {r = 0 '\000', g = 255 '\377', 
                  b = 153 '\231'}, {r = 0 '\000', g = 255 '\377', b = 204 '\314'}, {r = 0 '\000', g = 255 '\377', 
                  b = 255 '\377'}, {r = 51 '3', g = 0 '\000', b = 0 '\000'}, {r = 51 '3', g = 0 '\000', 
                  b = 51 '3'}, {r = 51 '3', g = 0 '\000', b = 102 'f'}, {r = 51 '3', g = 0 '\000', b = 153 '\231'}, 
                {r = 51 '3', g = 0 '\000', b = 204 '\314'}, {r = 51 '3', g = 0 '\000', b = 255 '\377'}, {
                  r = 51 '3', g = 51 '3', b = 0 '\000'}, {r = 51 '3', g = 51 '3', b = 51 '3'}, {r = 51 '3',
                  g = 51 '3', b = 102 'f'}, {r = 51 '3', g = 51 '3', b = 153 '\231'}, {r = 51 '3', g = 51 '3', 
                  b = 204 '\314'}, {r = 51 '3', g = 51 '3', b = 255 '\377'}, {r = 51 '3', g = 102 'f', 
                  b = 0 '\000'}, {r = 51 '3', g = 102 'f', b = 51 '3'}, {r = 51 '3', g = 102 'f', b = 102 'f'}, {
                  r = 51 '3', g = 102 'f', b = 153 '\231'}, {r = 51 '3', g = 102 'f', b = 204 '\314'}, {r = 51 '3', 
                  g = 102 'f', b = 255 '\377'}, {r = 51 '3', g = 153 '\231', b = 0 '\000'}, {r = 51 '3', 
                  g = 153 '\231', b = 51 '3'}, {r = 51 '3', g = 153 '\231', b = 102 'f'}, {r = 51 '3', 
                  g = 153 '\231', b = 153 '\231'}, {r = 51 '3', g = 153 '\231', b = 204 '\314'}, {r = 51 '3', 
                  g = 153 '\231', b = 255 '\377'}, {r = 51 '3', g = 204 '\314', b = 0 '\000'}, {r = 51 '3', 
                  g = 204 '\314', b = 51 '3'}, {r = 51 '3', g = 204 '\314', b = 102 'f'}, {r = 51 '3', 
                  g = 204 '\314', b = 153 '\231'}, {r = 51 '3', g = 204 '\314', b = 204 '\314'}, {r = 51 '3', 
                  g = 204 '\314', b = 255 '\377'}, {r = 51 '3', g = 255 '\377', b = 0 '\000'}, {r = 51 '3', 
                  g = 255 '\377', b = 51 '3'}, {r = 51 '3', g = 255 '\377', b = 102 'f'}, {r = 51 '3', 
                  g = 255 '\377', b = 153 '\231'}, {r = 51 '3', g = 255 '\377', b = 204 '\314'}, {r = 51 '3', 
                  g = 255 '\377', b = 255 '\377'}, {r = 102 'f', g = 0 '\000', b = 0 '\000'}, {r = 102 'f', 
                  g = 0 '\000', b = 51 '3'}, {r = 102 'f', g = 0 '\000', b = 102 'f'}, {r = 102 'f', g = 0 '\000', 
                  b = 153 '\231'}, {r = 102 'f', g = 0 '\000', b = 204 '\314'}, {r = 102 'f', g = 0 '\000', 
                  b = 255 '\377'}, {r = 102 'f', g = 51 '3', b = 0 '\000'}, {r = 102 'f', g = 51 '3', b = 51 '3'}, {
                  r = 102 'f', g = 51 '3', b = 102 'f'}, {r = 102 'f', g = 51 '3', b = 153 '\231'}, {r = 102 'f', 
                  g = 51 '3', b = 204 '\314'}, {r = 102 'f', g = 51 '3', b = 255 '\377'}, {r = 102 'f', 
                  g = 102 'f', b = 0 '\000'}, {r = 102 'f', g = 102 'f', b = 51 '3'}, {r = 102 'f', g = 102 'f', 
                  b = 102 'f'}, {r = 102 'f', g = 102 'f', b = 153 '\231'}, {r = 102 'f', g = 102 'f', 
                  b = 204 '\314'}, {r = 102 'f', g = 102 'f', b = 255 '\377'}, {r = 102 'f', g = 153 '\231', 
                  b = 0 '\000'}, {r = 102 'f', g = 153 '\231', b = 51 '3'}, {r = 102 'f', g = 153 '\231', 
                  b = 102 'f'}, {r = 102 'f', g = 153 '\231', b = 153 '\231'}, {r = 102 'f', g = 153 '\231', 
                  b = 204 '\314'}, {r = 102 'f', g = 153 '\231', b = 255 '\377'}, {r = 102 'f', g = 204 '\314', 
                  b = 0 '\000'}, {r = 102 'f', g = 204 '\314', b = 51 '3'}, {r = 102 'f', g = 204 '\314', 
                  b = 102 'f'}, {r = 102 'f', g = 204 '\314', b = 153 '\231'}, {r = 102 'f', g = 204 '\314', 
                  b = 204 '\314'}, {r = 102 'f', g = 204 '\314', b = 255 '\377'}, {r = 102 'f', g = 255 '\377', 
                  b = 0 '\000'}, {r = 102 'f', g = 255 '\377', b = 51 '3'}, {r = 102 'f', g = 255 '\377', 
                  b = 102 'f'}, {r = 102 'f', g = 255 '\377', b = 153 '\231'}, {r = 102 'f', g = 255 '\377', 
                  b = 204 '\314'}, {r = 102 'f', g = 255 '\377', b = 255 '\377'}, {r = 153 '\231', g = 0 '\000', 
                  b = 0 '\000'}, {r = 153 '\231', g = 0 '\000', b = 51 '3'}, {r = 153 '\231', g = 0 '\000', 
                  b = 102 'f'}, {r = 153 '\231', g = 0 '\000', b = 153 '\231'}, {r = 153 '\231', g = 0 '\000', 
                  b = 204 '\314'}, {r = 153 '\231', g = 0 '\000', b = 255 '\377'}, {r = 153 '\231', g = 51 '3', 
                  b = 0 '\000'}, {r = 153 '\231', g = 51 '3', b = 51 '3'}, {r = 153 '\231', g = 51 '3', 
                  b = 102 'f'}, {r = 153 '\231', g = 51 '3', b = 153 '\231'}, {r = 153 '\231', g = 51 '3', 
                  b = 204 '\314'}, {r = 153 '\231', g = 51 '3', b = 255 '\377'}, {r = 153 '\231', g = 102 'f', 
                  b = 0 '\000'}, {r = 153 '\231', g = 102 'f', b = 51 '3'}, {r = 153 '\231', g = 102 'f', 
                  b = 102 'f'}, {r = 153 '\231', g = 102 'f', b = 153 '\231'}, {r = 153 '\231', g = 102 'f', 
                  b = 204 '\314'}, {r = 153 '\231', g = 102 'f', b = 255 '\377'}, {r = 153 '\231', g = 153 '\231', 
                  b = 0 '\000'}, {r = 153 '\231', g = 153 '\231', b = 51 '3'}, {r = 153 '\231', g = 153 '\231', 
                  b = 102 'f'}, {r = 153 '\231', g = 153 '\231', b = 153 '\231'}, {r = 153 '\231', g = 153 '\231', 
                  b = 204 '\314'}, {r = 153 '\231', g = 153 '\231', b = 255 '\377'}, {r = 153 '\231', 
                  g = 204 '\314', b = 0 '\000'}, {r = 153 '\231', g = 204 '\314', b = 51 '3'}, {r = 153 '\231', 
                  g = 204 '\314', b = 102 'f'}, {r = 153 '\231', g = 204 '\314', b = 153 '\231'}, {r = 153 '\231', 
                  g = 204 '\314', b = 204 '\314'}, {r = 153 '\231', g = 204 '\314', b = 255 '\377'}, {
                  r = 153 '\231', g = 255 '\377', b = 0 '\000'}, {r = 153 '\231', g = 255 '\377', b = 51 '3'}, {
                  r = 153 '\231', g = 255 '\377', b = 102 'f'}, {r = 153 '\231', g = 255 '\377', b = 153 '\231'}, {
                  r = 153 '\231', g = 255 '\377', b = 204 '\314'}, {r = 153 '\231', g = 255 '\377', 
                  b = 255 '\377'}, {r = 204 '\314', g = 0 '\000', b = 0 '\000'}, {r = 204 '\314', g = 0 '\000', 
                  b = 51 '3'}, {r = 204 '\314', g = 0 '\000', b = 102 'f'}, {r = 204 '\314', g = 0 '\000', 
                  b = 153 '\231'}, {r = 204 '\314', g = 0 '\000', b = 204 '\314'}, {r = 204 '\314', g = 0 '\000', 
                  b = 255 '\377'}, {r = 204 '\314', g = 51 '3', b = 0 '\000'}, {r = 204 '\314', g = 51 '3', 
                  b = 51 '3'}, {r = 204 '\314', g = 51 '3', b = 102 'f'}, {r = 204 '\314', g = 51 '3', 
                  b = 153 '\231'}, {r = 204 '\314', g = 51 '3', b = 204 '\314'}, {r = 204 '\314', g = 51 '3', 
                  b = 255 '\377'}, {r = 204 '\314', g = 102 'f', b = 0 '\000'}, {r = 204 '\314', g = 102 'f', 
                  b = 51 '3'}, {r = 204 '\314', g = 102 'f', b = 102 'f'}, {r = 204 '\314', g = 102 'f', 
                  b = 153 '\231'}, {r = 204 '\314', g = 102 'f', b = 204 '\314'}, {r = 204 '\314', g = 102 'f', 
                  b = 255 '\377'}, {r = 204 '\314', g = 153 '\231', b = 0 '\000'}, {r = 204 '\314', g = 153 '\231', 
                  b = 51 '3'}, {r = 204 '\314', g = 153 '\231', b = 102 'f'}, {r = 204 '\314', g = 153 '\231', 
                  b = 153 '\231'}, {r = 204 '\314', g = 153 '\231', b = 204 '\314'}, {r = 204 '\314', 
                  g = 153 '\231', b = 255 '\377'}, {r = 204 '\314', g = 204 '\314', b = 0 '\000'}, {r = 204 '\314', 
                  g = 204 '\314', b = 51 '3'}, {r = 204 '\314', g = 204 '\314', b = 102 'f'}, {r = 204 '\314',
                  g = 204 '\314', b = 153 '\231'}, {r = 204 '\314', g = 204 '\314', b = 204 '\314'}, {
                  r = 204 '\314', g = 204 '\314', b = 255 '\377'}, {r = 204 '\314', g = 255 '\377', b = 0 '\000'}, {
                  r = 204 '\314', g = 255 '\377', b = 51 '3'}, {r = 204 '\314', g = 255 '\377', b = 102 'f'}, {
                  r = 204 '\314', g = 255 '\377', b = 153 '\231'}, {r = 204 '\314', g = 255 '\377', 
                  b = 204 '\314'}, {r = 204 '\314', g = 255 '\377', b = 255 '\377'}, {r = 255 '\377', g = 0 '\000', 
                  b = 0 '\000'}, {r = 255 '\377', g = 0 '\000', b = 51 '3'}, {r = 255 '\377', g = 0 '\000', 
                  b = 102 'f'}, {r = 255 '\377', g = 0 '\000', b = 153 '\231'}...}}, charset_g0 = 0x0, 
            charset_g1 = 0x0, charset_g2 = 0x0, charset_g3 = 0x0, charset_gl = 0x0, charset_gr = 0x0, 
            charset_single_shift = 0x0, tabstop = 8 '\b', tab_ruler = 0x7fffef415b30, lines = {cap = 32, size = 24, 
              buf = 0x7ffff76c25a0, dtor_arg = 0x7fffffffdc00}, alt_lines = {cap = 1024, size = 726, 
              buf = 0x7fffee73dcc0, dtor_arg = 0x7fffffffdc00}, active_hyperlink = 0x0, last_interted = 0x0, 
            last_codepoint = 0 U'\000', blank_space = {rune = {code = 0 U'\000', combine = U"\000", 
                style = VT_RUNE_NORMAL}, ln_clr_data = {rgb = {r = 0 '\000', g = 0 '\000', b = 0 '\000'}, 
                index = 0}, fg_data = {rgb = {r = 255 '\377', g = 255 '\377', b = 0 '\000'}, index = -1}, 
              bg_data = {rgba = {r = 255 '\377', g = 255 '\377', b = 0 '\000', a = 0 '\000'}, index = -1}, 
              hyperlink_idx = 0, bg_is_palette_entry = true, fg_is_palette_entry = true, 
              ln_clr_is_palette_entry = false, line_color_not_default = false, invert = false, dim = false, 
              hidden = false, blinkng = false, underlined = false, strikethrough = false, doubleunderline = false, 
              curlyunderline = false, overline = false}, cursor = {type = CURSOR_UNDERLINE, blinking = 1 '\001', 
              hidden = 0 '\000', row = 23, col = 0}, alt_cursor_pos = 0, saved_cursor_pos = 0, 
            alt_active_line = 725, saved_active_line = 0, scroll_region_top = 0, scroll_region_bottom = 23, 
            modes = {no_wraparound = 0 '\000', reverse_wraparound = 0 '\000', origin = 0 '\000', 
              allow_column_size_switching = 0 '\000', bracketed_paste = 0 '\000', del_sends_del = 0 '\000', 
              no_alt_sends_esc = 0 '\000', x10_mouse_compat = 0 '\000', mouse_btn_report = 0 '\000', 
              mouse_motion_on_btn_report = 0 '\000', mouse_motion_report = 0 '\000', 
              window_focus_events_report = 0 '\000', extended_report = 0 '\000', video_reverse = 0 '\000', 
              auto_repeat = 0 '\000', application_keypad = 0 '\000', application_keypad_cursor = 0 '\000', 
              pop_on_bell = 0 '\000', urgency_on_bell = 0 '\000', left_and_right_margin = 0 '\000', 
              margin_bell = 0 '\000', sixel_scrolling = 0 '\000', sixel_scrolling_move_cursor_right = 0 '\000'}, 
            xterm_modify_keyboard = 0 '\000', xterm_modify_cursor_keys = 2 '\002', 
            xterm_modify_function_keys = 2 '\002', xterm_modify_other_keys = 0 '\000'}, freetype = {
            initialized = true, ft = 0x7ffff7aaba60, primaries = {cap = 4, size = 4, buf = 0x7ffff7b499f0}, 
            symbol_faces = {cap = 4, size = 3, buf = 0x7ffff7a79ec0}, color_faces = {cap = 4, size = 1, 
              buf = 0x7ffff7a7ee80}, primary_output_type = FT_OUTPUT_RGB_H, target_output_type = FT_OUTPUT_RGB_H, 
            gw = 0, line_height_pixels = 30, glyph_width_pixels = 16, blend_bitmap_initialized = false, 
            blend_output_bitmap = {rows = 0, width = 0, pitch = 0, buffer = 0x0, num_grays = 0, 
              pixel_mode = 0 '\000', palette_mode = 0 '\000', palette = 0x0}, 
            conversion_bitmap_initialized = false, converted_output_bitmap = {rows = 0, width = 0, pitch = 0, 
              buffer = 0x0, num_grays = 0, pixel_mode = 0 '\000', palette_mode = 0 '\000', palette = 0x0}, 
            converted_output_pixels = 0x0, output = {ft_slot = 0x7ffff7999c70, width = 14, height = 20, left = 2, 
              top = 20, alignment = 4 '\004', pixels = 0x7fffefdb3380, type = FT_OUTPUT_RGB_H, rgb_flip = false, 
              style = FT_STYLE_BOLD}}, monitor = {child_fd = 3, parent_fd = 5, extra_fd = 5, pollfds = {{fd = 3, 
                events = 1, revents = 1}, {fd = 5, events = 1, revents = 0}}, read_info_up_to_date = false, 
            child_pid = 3460, child_is_dead = false, 
            input_buffer = "\033[23;1t\033[24;1H\033[K\033[24;1H\033[?2004l\033[?1l\033>\033[?25h\033[>4;m\033[?1049l\033[23;0;0t5m<F1>\033[m  for on-line help\033[17;18Htype  :help version8\033[38;", callbacks = {
              user_data = 0x7fffffffdbf0, on_exit = 0x5555555931eb <App_exit_handler>}}, written_bytes = 0, 
          resolution = {first = 1316, second = 756}, swap_performed = false, 
          closest_pending_wakeup = 0x7ffff7a1b740, exit = false, hostname = 0x0, click_count = 0 '\000', 
          next_click_limit = {tv_sec = 169750, tv_nsec = 453050404}, selection_dragging_left = false, 
          selection_dragging_right = SELECT_DRAG_RIGHT_NONE, keyboard_select_mode = false, scrollbar_hide_time = {
            tv_sec = 0, tv_nsec = 0}, autoscroll_next_step = {tv_sec = 169750, tv_nsec = 576717975}, 
          scrollbar_drag_position = 0, last_scrolling = false, ksm_cursor = {type = CURSOR_BLOCK, 
            blinking = 0 '\000', hidden = 0 '\000', row = 0, col = 0}, ksm_input_buf = {cap = 4, size = 0, 
            buf = 0x7ffff7aca490 "und"}, ksm_last_input = {tv_sec = 0, tv_nsec = 0}, ui = {
            pixel_offset_x = 18 '\022', pixel_offset_y = 18 '\022', scrollbar = {visible = false, dragging = false, 
              width = 10 '\n', top = 1.93379307, length = 0.0662068948, opacity = 1}, cursor = 0x7fffffffe2c0, 
            hovered_link = {active = false, start_line_idx = 0, end_line_idx = 0, start_cell_idx = 0, 
              end_cell_idx = 0}, draw_out_of_focus_tint = false}, queued_output_buffer = {cap = 0, size = 0, 
            buf = 0x0}, autoscroll = AUTOSCROLL_NONE}
etenim commented 3 years ago

Huzza! Thanks a lot, commit https://github.com/91861/wayst/commit/33fbfb206fdc530374a19e049bea195a5b4a8b89 fixed this issue.

A very happy user.