Crash with IME #411

Closed
opened 7 months ago by JorwLNKwpH · 13 comments

I ran into this while testing squeekboard:

(gdb) bt full
#0  ime_enable (seat=0x55bcfd514bb0) at ../ime.c:378
        term = 0x0
#1  0x00007f67875ebe6d in ?? () from /usr/lib/libffi.so.7
No symbol table info available.
#2  0x00007f67875eb2aa in ?? () from /usr/lib/libffi.so.7
No symbol table info available.
#3  0x00007f67878818fe in wl_closure_invoke (
    closure=closure@entry=0x55bcfd4c0e20, target=<optimized out>, 
    target@entry=0x55bcfd5132e0, opcode=opcode@entry=0, data=<optimized out>, 
    flags=<optimized out>) at ../src/connection.c:1018
        count = <optimized out>
        cif = {abi = FFI_UNIX64, nargs = 3, arg_types = 0x7ffd0b81e8c0, 
          rtype = 0x7f67875ed180 <ffi_type_void>, bytes = 0, flags = 0}
        ffi_types = {0x7f67875ed060 <ffi_type_pointer>, 
          0x7f67875ed060 <ffi_type_pointer>, 
          0x7f67875ed060 <ffi_type_pointer>, 0x1, 0x8, 
          0x7f678767bac1 <__GI___libc_malloc+449>, 
          0x7f6787888e18 <wl_pointer_events+120>, 0x7f6787885764, 
          0x7ffd0b81e9d0, 0x7f6787880cc6 <wl_closure_init+150>, 0xfd514e66, 
          0x0, 0x55bcfd50e2c0, 0x7ffd0b81e9d0, 0x55bcfd514380, 0x55bcfd50e3a8, 
          0x0, 0x7f678788277b <wl_display_read_events+155>, 0x55bc00000000, 
          0x7, 0x7f6787885764, 0x55bcfd50e3a8}
        ffi_args = {0x7ffd0b81e880, 0x7ffd0b81e888, 0x55bcfd4c0e38, 
          0x55bcfd514450, 0x55bc00000000, 0x55bcfd514458, 0x0, 0x55bcfd5373f0, 
--Type <RET> for more, q to quit, c to continue without paging--
          x55bcfd50e358, 0x55bcfd513abc, 0x55bcfd511428, 0xfd50f418, 0x66, 0x7f6700000000, 0x7ffd0b81ea10, 0x2, 
          0x7ffd0b81ea30, 0x0, 0x40000000, 0x0, 0x55bcfd50e4d0, 0xf40}
        implementation = <optimized out>
#4  0x00007f6787881fcb in dispatch_event (display=display@entry=0x55bcfd50e2c0, queue=<optimized out>, 
    queue=<optimized out>) at ../src/wayland-client.c:1452
        closure = 0x55bcfd4c0e20
        proxy = 0x55bcfd5132e0
        opcode = 0
        proxy_destroyed = <optimized out>
#5  0x00007f678788219c in dispatch_queue (queue=0x55bcfd50e390, display=0x55bcfd50e2c0)
    at ../src/wayland-client.c:1598
        count = 0
        count = <optimized out>
        err = <optimized out>
#6  wl_display_dispatch_queue_pending (display=0x55bcfd50e2c0, queue=0x55bcfd50e390) at ../src/wayland-client.c:1840
        ret = <optimized out>
#7  0x00007f67878821ec in wl_display_dispatch_pending (display=<optimized out>) at ../src/wayland-client.c:1903
No locals.
#8  0x000055bcfbdb2009 in fdm_wayl (fdm=<optimized out>, fd=<optimized out>, events=1, data=0x55bcfd50dda0)
    at ../wayland.c:1089
        wayl = 0x55bcfd50dda0
        event_count = 0
#9  0x000055bcfbd95d1b in fdm_poll (fdm=0x55bcfd4bc8d0) at ../fdm.c:459
        fd = <optimized out>
        i = 0
        events = 0x7ffd0b81eb20
        r = 1
        ret = true
        events = <error reading variable events (value has been optimized out)>
        r = <optimized out>
        ret = <optimized out>
        it = <optimized out>
        it_next = <optimized out>
        it = <optimized out>
        it_next = <optimized out>
        it = <optimized out>
        it_next = <optimized out>
        i = <optimized out>
        handler = <optimized out>
        i = <optimized out>
        fd = <optimized out>
        it = <optimized out>
        it_next = <optimized out>
        __prev = <optimized out>
        __next = <optimized out>
#10 main (argc=<optimized out>, argv=<optimized out>) at ../main.c:524
        ret = 1
        prog_name = <optimized out>
        check_config = <optimized out>
        conf_path = <optimized out>
        conf_term = <optimized out>
        conf_title = <optimized out>
        conf_app_id = <optimized out>
        custom_cwd = <optimized out>
        login_shell = <optimized out>
--Type <RET> for more, q to quit, c to continue without paging--
        conf_fonts = {head = <optimized out>, tail = <optimized out>, length = <optimized out>}
        conf_size_type = <optimized out>
        conf_width = <optimized out>
        conf_height = <optimized out>
        as_server = <optimized out>
        conf_server_socket_path = <optimized out>
        presentation_timings = <optimized out>
        hold = <optimized out>
        maximized = <optimized out>
        fullscreen = <optimized out>
        unlink_pid_file = <optimized out>
        pid_file = <optimized out>
        log_level = <optimized out>
        log_colorize = <optimized out>
        log_syslog = <optimized out>
        user_notifications = {head = <optimized out>, tail = <optimized out>, length = <optimized out>}
        conf = {term = 0x55bcfd4e6e80 "foot", shell = 0x55bcfd4e6ea0 "/usr/local/bin/fishlogin", 
          title = 0x55bcfd4e6ed0 "foot", app_id = 0x55bcfd4e6ef0 "foot", 
          word_delimiters = 0x55bcfd4e6f10 L",│`|:\"'()[]{}<>", 
          jump_label_letters = 0x55bcfd50bfc0 L"sadfjklewcmpgh", login_shell = false, no_wait = false, size = {
            type = CONF_SIZE_CELLS, width = 80, height = 25}, pad_x = 2, pad_y = 2, center = false, 
          resize_delay_ms = 100, bold_in_bright = false, bell_action = BELL_ACTION_NONE, 
          startup_mode = STARTUP_WINDOWED, dpi_aware = DPI_AWARE_AUTO, fonts = {{head = 0x55bcfd50d680, 
              tail = 0x55bcfd50d7a0, length = 3}, {head = 0x0, tail = 0x0, length = 0}, {head = 0x0, tail = 0x0, 
              length = 0}, {head = 0x0, tail = 0x0, length = 0}}, line_height = {px = 0, pt = 8}, letter_spacing = {
            px = 0, pt = 0}, horizontal_letter_offset = {px = 0, pt = 0}, vertical_letter_offset = {px = 0, pt = 0}, 
          scrollback = {lines = 4096, indicator = {position = SCROLLBACK_INDICATOR_POSITION_RELATIVE, 
              format = SCROLLBACK_INDICATOR_FORMAT_TEXT, text = 0x55bcfd50c010 L""}, multiplier = 5}, colors = {
            fg = 14009505, bg = 2631720, regular = {2631720, 16468276, 12106534, 16432431, 8627608, 13862555, 
              9355388, 14009505}, bright = {6708308, 16468276, 12106534, 16432431, 8627608, 13862555, 9355388, 
              14009505}, alpha = 49151, selection_fg = 2147483648, selection_bg = 2147483648, url = 0, jump_label = {
              fg = 0, bg = 0}, use_custom = {selection = false, jump_label = false, url = false}}, cursor = {
            style = CURSOR_BAR, blink = true, color = {text = 0, cursor = 0}}, mouse = {hide_when_typing = false, 
            alternate_scroll_mode = true}, bindings = {key = {head = 0x55bcfd50c0c0, tail = 0x55bcfd50d840, 
              length = 16}, mouse = {head = 0x55bcfd50cc80, tail = 0x55bcfd50ce40, length = 8}, search = {
              head = 0x55bcfd50c480, tail = 0x55bcfd50cb40, length = 28}, url = {head = 0x55bcfd50cb80, 
              tail = 0x55bcfd50cc40, length = 4}}, csd = {preferred = CONF_CSD_PREFER_SERVER, title_height = 26, 
            border_width = 5, button_width = 26, color = {title_set = false, minimize_set = false, 
              maximize_set = false, close_set = false, title = 0, minimize = 0, maximize = 0, close = 0}}, 
          render_worker_count = 2, server_socket_path = 0x55bcfd50c030 "/run/user/1000/foot-wayland-1.sock", 
          presentation_timings = false, hold_at_exit = false, selection_target = SELECTION_TARGET_PRIMARY, notify = {
            raw_cmd = 0x55bcfd50c060 "notify-send", argv = 0x55bcfd4d0e30}, url_launch = {
            raw_cmd = 0x55bcfd50c0a0 "xdg-open", argv = 0x55bcfd4cf970}, osc8_underline = OSC8_UNDERLINE_URL_MODE, 
          tweak = {fcft_filter = FCFT_SCALING_FILTER_LANCZOS3, allow_overflowing_double_width_glyphs = true, 
            render_timer_osd = false, render_timer_log = false, damage_whole_window = false, 
            delayed_render_lower_ns = 500000, delayed_render_upper_ns = 8333333, max_shm_pool_size = 536870912, 
            box_drawing_base_thickness = 0.0399999991}, notifications = {head = 0x0, tail = 0x0, length = 0}}
        fdm = <optimized out>
        reaper = <optimized out>
        wayl = <optimized out>
        renderer = <optimized out>
        term = 0x55bcfd514f10
        server = <optimized out>
        shutdown_ctx = {term = 0x7ffd0b81ec60, exit_code = 1}
        cwd = <optimized out>
--Type <RET> for more, q to quit, c to continue without paging--
        _cwd = 0x0
        aborted = 0
        longopts = {{name = 0x55bcfbdccbe9 "config", has_arg = 1, flag = 0x0, val = 99}, {
            name = 0x55bcfbdccbe3 "check-config", has_arg = 0, flag = 0x0, val = 67}, {name = 0x55bcfbdcb046 "term", 
            has_arg = 1, flag = 0x0, val = 116}, {name = 0x55bcfbdd01ad "title", has_arg = 1, flag = 0x0, val = 84}, 
          {name = 0x55bcfbdcb057 "app-id", has_arg = 1, flag = 0x0, val = 97}, {name = 0x55bcfbdcb04b "login-shell", 
            has_arg = 0, flag = 0x0, val = 76}, {name = 0x55bcfbdccbf0 "working-directory", has_arg = 1, flag = 0x0, 
            val = 68}, {name = 0x55bcfbdcb116 "font", has_arg = 1, flag = 0x0, val = 102}, {
            name = 0x55bcfbdcb066 "window-size-pixels", has_arg = 1, flag = 0x0, val = 119}, {
            name = 0x55bcfbdcb090 "window-size-chars", has_arg = 1, flag = 0x0, val = 87}, {
            name = 0x55bcfbdcb455 "server", has_arg = 2, flag = 0x0, val = 115}, {name = 0x55bcfbdccc02 "hold", 
            has_arg = 0, flag = 0x0, val = 72}, {name = 0x55bcfbdd0204 "maximized", has_arg = 0, flag = 0x0, 
            val = 109}, {name = 0x55bcfbdd0214 "fullscreen", has_arg = 0, flag = 0x0, val = 70}, {
            name = 0x55bcfbdccc07 "presentation-timings", has_arg = 0, flag = 0x0, val = 80}, {
            name = 0x55bcfbdccc1c "print-pid", has_arg = 1, flag = 0x0, val = 112}, {
            name = 0x55bcfbdccc26 "log-level", has_arg = 1, flag = 0x0, val = 100}, {
            name = 0x55bcfbdccc30 "log-colorize", has_arg = 2, flag = 0x0, val = 108}, {
            name = 0x55bcfbdccc3d "log-no-syslog", has_arg = 0, flag = 0x0, val = 83}, {
            name = 0x55bcfbdccc4b "version", has_arg = 0, flag = 0x0, val = 118}, {name = 0x55bcfbdccc53 "help", 
            has_arg = 0, flag = 0x0, val = 104}, {name = 0x0, has_arg = 0, flag = 0x0, val = 0}}
(gdb) 
quit) 
I ran into this while testing squeekboard: <details> ``` (gdb) bt full #0 ime_enable (seat=0x55bcfd514bb0) at ../ime.c:378 term = 0x0 #1 0x00007f67875ebe6d in ?? () from /usr/lib/libffi.so.7 No symbol table info available. #2 0x00007f67875eb2aa in ?? () from /usr/lib/libffi.so.7 No symbol table info available. #3 0x00007f67878818fe in wl_closure_invoke ( closure=closure@entry=0x55bcfd4c0e20, target=<optimized out>, target@entry=0x55bcfd5132e0, opcode=opcode@entry=0, data=<optimized out>, flags=<optimized out>) at ../src/connection.c:1018 count = <optimized out> cif = {abi = FFI_UNIX64, nargs = 3, arg_types = 0x7ffd0b81e8c0, rtype = 0x7f67875ed180 <ffi_type_void>, bytes = 0, flags = 0} ffi_types = {0x7f67875ed060 <ffi_type_pointer>, 0x7f67875ed060 <ffi_type_pointer>, 0x7f67875ed060 <ffi_type_pointer>, 0x1, 0x8, 0x7f678767bac1 <__GI___libc_malloc+449>, 0x7f6787888e18 <wl_pointer_events+120>, 0x7f6787885764, 0x7ffd0b81e9d0, 0x7f6787880cc6 <wl_closure_init+150>, 0xfd514e66, 0x0, 0x55bcfd50e2c0, 0x7ffd0b81e9d0, 0x55bcfd514380, 0x55bcfd50e3a8, 0x0, 0x7f678788277b <wl_display_read_events+155>, 0x55bc00000000, 0x7, 0x7f6787885764, 0x55bcfd50e3a8} ffi_args = {0x7ffd0b81e880, 0x7ffd0b81e888, 0x55bcfd4c0e38, 0x55bcfd514450, 0x55bc00000000, 0x55bcfd514458, 0x0, 0x55bcfd5373f0, --Type <RET> for more, q to quit, c to continue without paging-- x55bcfd50e358, 0x55bcfd513abc, 0x55bcfd511428, 0xfd50f418, 0x66, 0x7f6700000000, 0x7ffd0b81ea10, 0x2, 0x7ffd0b81ea30, 0x0, 0x40000000, 0x0, 0x55bcfd50e4d0, 0xf40} implementation = <optimized out> #4 0x00007f6787881fcb in dispatch_event (display=display@entry=0x55bcfd50e2c0, queue=<optimized out>, queue=<optimized out>) at ../src/wayland-client.c:1452 closure = 0x55bcfd4c0e20 proxy = 0x55bcfd5132e0 opcode = 0 proxy_destroyed = <optimized out> #5 0x00007f678788219c in dispatch_queue (queue=0x55bcfd50e390, display=0x55bcfd50e2c0) at ../src/wayland-client.c:1598 count = 0 count = <optimized out> err = <optimized out> #6 wl_display_dispatch_queue_pending (display=0x55bcfd50e2c0, queue=0x55bcfd50e390) at ../src/wayland-client.c:1840 ret = <optimized out> #7 0x00007f67878821ec in wl_display_dispatch_pending (display=<optimized out>) at ../src/wayland-client.c:1903 No locals. #8 0x000055bcfbdb2009 in fdm_wayl (fdm=<optimized out>, fd=<optimized out>, events=1, data=0x55bcfd50dda0) at ../wayland.c:1089 wayl = 0x55bcfd50dda0 event_count = 0 #9 0x000055bcfbd95d1b in fdm_poll (fdm=0x55bcfd4bc8d0) at ../fdm.c:459 fd = <optimized out> i = 0 events = 0x7ffd0b81eb20 r = 1 ret = true events = <error reading variable events (value has been optimized out)> r = <optimized out> ret = <optimized out> it = <optimized out> it_next = <optimized out> it = <optimized out> it_next = <optimized out> it = <optimized out> it_next = <optimized out> i = <optimized out> handler = <optimized out> i = <optimized out> fd = <optimized out> it = <optimized out> it_next = <optimized out> __prev = <optimized out> __next = <optimized out> #10 main (argc=<optimized out>, argv=<optimized out>) at ../main.c:524 ret = 1 prog_name = <optimized out> check_config = <optimized out> conf_path = <optimized out> conf_term = <optimized out> conf_title = <optimized out> conf_app_id = <optimized out> custom_cwd = <optimized out> login_shell = <optimized out> --Type <RET> for more, q to quit, c to continue without paging-- conf_fonts = {head = <optimized out>, tail = <optimized out>, length = <optimized out>} conf_size_type = <optimized out> conf_width = <optimized out> conf_height = <optimized out> as_server = <optimized out> conf_server_socket_path = <optimized out> presentation_timings = <optimized out> hold = <optimized out> maximized = <optimized out> fullscreen = <optimized out> unlink_pid_file = <optimized out> pid_file = <optimized out> log_level = <optimized out> log_colorize = <optimized out> log_syslog = <optimized out> user_notifications = {head = <optimized out>, tail = <optimized out>, length = <optimized out>} conf = {term = 0x55bcfd4e6e80 "foot", shell = 0x55bcfd4e6ea0 "/usr/local/bin/fishlogin", title = 0x55bcfd4e6ed0 "foot", app_id = 0x55bcfd4e6ef0 "foot", word_delimiters = 0x55bcfd4e6f10 L",│`|:\"'()[]{}<>", jump_label_letters = 0x55bcfd50bfc0 L"sadfjklewcmpgh", login_shell = false, no_wait = false, size = { type = CONF_SIZE_CELLS, width = 80, height = 25}, pad_x = 2, pad_y = 2, center = false, resize_delay_ms = 100, bold_in_bright = false, bell_action = BELL_ACTION_NONE, startup_mode = STARTUP_WINDOWED, dpi_aware = DPI_AWARE_AUTO, fonts = {{head = 0x55bcfd50d680, tail = 0x55bcfd50d7a0, length = 3}, {head = 0x0, tail = 0x0, length = 0}, {head = 0x0, tail = 0x0, length = 0}, {head = 0x0, tail = 0x0, length = 0}}, line_height = {px = 0, pt = 8}, letter_spacing = { px = 0, pt = 0}, horizontal_letter_offset = {px = 0, pt = 0}, vertical_letter_offset = {px = 0, pt = 0}, scrollback = {lines = 4096, indicator = {position = SCROLLBACK_INDICATOR_POSITION_RELATIVE, format = SCROLLBACK_INDICATOR_FORMAT_TEXT, text = 0x55bcfd50c010 L""}, multiplier = 5}, colors = { fg = 14009505, bg = 2631720, regular = {2631720, 16468276, 12106534, 16432431, 8627608, 13862555, 9355388, 14009505}, bright = {6708308, 16468276, 12106534, 16432431, 8627608, 13862555, 9355388, 14009505}, alpha = 49151, selection_fg = 2147483648, selection_bg = 2147483648, url = 0, jump_label = { fg = 0, bg = 0}, use_custom = {selection = false, jump_label = false, url = false}}, cursor = { style = CURSOR_BAR, blink = true, color = {text = 0, cursor = 0}}, mouse = {hide_when_typing = false, alternate_scroll_mode = true}, bindings = {key = {head = 0x55bcfd50c0c0, tail = 0x55bcfd50d840, length = 16}, mouse = {head = 0x55bcfd50cc80, tail = 0x55bcfd50ce40, length = 8}, search = { head = 0x55bcfd50c480, tail = 0x55bcfd50cb40, length = 28}, url = {head = 0x55bcfd50cb80, tail = 0x55bcfd50cc40, length = 4}}, csd = {preferred = CONF_CSD_PREFER_SERVER, title_height = 26, border_width = 5, button_width = 26, color = {title_set = false, minimize_set = false, maximize_set = false, close_set = false, title = 0, minimize = 0, maximize = 0, close = 0}}, render_worker_count = 2, server_socket_path = 0x55bcfd50c030 "/run/user/1000/foot-wayland-1.sock", presentation_timings = false, hold_at_exit = false, selection_target = SELECTION_TARGET_PRIMARY, notify = { raw_cmd = 0x55bcfd50c060 "notify-send", argv = 0x55bcfd4d0e30}, url_launch = { raw_cmd = 0x55bcfd50c0a0 "xdg-open", argv = 0x55bcfd4cf970}, osc8_underline = OSC8_UNDERLINE_URL_MODE, tweak = {fcft_filter = FCFT_SCALING_FILTER_LANCZOS3, allow_overflowing_double_width_glyphs = true, render_timer_osd = false, render_timer_log = false, damage_whole_window = false, delayed_render_lower_ns = 500000, delayed_render_upper_ns = 8333333, max_shm_pool_size = 536870912, box_drawing_base_thickness = 0.0399999991}, notifications = {head = 0x0, tail = 0x0, length = 0}} fdm = <optimized out> reaper = <optimized out> wayl = <optimized out> renderer = <optimized out> term = 0x55bcfd514f10 server = <optimized out> shutdown_ctx = {term = 0x7ffd0b81ec60, exit_code = 1} cwd = <optimized out> --Type <RET> for more, q to quit, c to continue without paging-- _cwd = 0x0 aborted = 0 longopts = {{name = 0x55bcfbdccbe9 "config", has_arg = 1, flag = 0x0, val = 99}, { name = 0x55bcfbdccbe3 "check-config", has_arg = 0, flag = 0x0, val = 67}, {name = 0x55bcfbdcb046 "term", has_arg = 1, flag = 0x0, val = 116}, {name = 0x55bcfbdd01ad "title", has_arg = 1, flag = 0x0, val = 84}, {name = 0x55bcfbdcb057 "app-id", has_arg = 1, flag = 0x0, val = 97}, {name = 0x55bcfbdcb04b "login-shell", has_arg = 0, flag = 0x0, val = 76}, {name = 0x55bcfbdccbf0 "working-directory", has_arg = 1, flag = 0x0, val = 68}, {name = 0x55bcfbdcb116 "font", has_arg = 1, flag = 0x0, val = 102}, { name = 0x55bcfbdcb066 "window-size-pixels", has_arg = 1, flag = 0x0, val = 119}, { name = 0x55bcfbdcb090 "window-size-chars", has_arg = 1, flag = 0x0, val = 87}, { name = 0x55bcfbdcb455 "server", has_arg = 2, flag = 0x0, val = 115}, {name = 0x55bcfbdccc02 "hold", has_arg = 0, flag = 0x0, val = 72}, {name = 0x55bcfbdd0204 "maximized", has_arg = 0, flag = 0x0, val = 109}, {name = 0x55bcfbdd0214 "fullscreen", has_arg = 0, flag = 0x0, val = 70}, { name = 0x55bcfbdccc07 "presentation-timings", has_arg = 0, flag = 0x0, val = 80}, { name = 0x55bcfbdccc1c "print-pid", has_arg = 1, flag = 0x0, val = 112}, { name = 0x55bcfbdccc26 "log-level", has_arg = 1, flag = 0x0, val = 100}, { name = 0x55bcfbdccc30 "log-colorize", has_arg = 2, flag = 0x0, val = 108}, { name = 0x55bcfbdccc3d "log-no-syslog", has_arg = 0, flag = 0x0, val = 83}, { name = 0x55bcfbdccc4b "version", has_arg = 0, flag = 0x0, val = 118}, {name = 0x55bcfbdccc53 "help", has_arg = 0, flag = 0x0, val = 104}, {name = 0x0, has_arg = 0, flag = 0x0, val = 0}} (gdb) quit) ``` </details>
Owner

Which compositor? From what I can tell, foot has received a text_input::enter event from the compositor, while foot does not have keyboard focus.

I could be wrong, but that sounds like a compositor bug to me?

Which compositor? From what I can tell, foot has received a `text_input::enter` event from the compositor, while foot does **not** have keyboard focus. I could be wrong, but that sounds like a compositor bug to me?
Owner

If you are able to reproduce this, the log output from WAYLAND_DEBUG=1 foot might be useful.

If you are able to reproduce this, the log output from `WAYLAND_DEBUG=1 foot` might be useful.
Poster

I tested with wayfire-0.7. This only happens (afaict) while using squeekboard.

I tested with wayfire-0.7. This only happens (afaict) while using squeekboard.
Owner

I don't think squeekboard is responsible per se. It probably presents itself as an IME to the compositor, which causes the compositor to start sending IME events to all client applications.

We can work around this in foot, for sure.

But still, it doesn't make sense to me that the compositor sends and IME enter event to us, when we don't have keyboard focus.

But, it could very well be that the order of events isn't guaranteed, and that the very next event tells us we've got keyboard focus...

I don't think squeekboard is responsible per se. It probably presents itself as an IME to the compositor, which causes the compositor to start sending IME events to all client applications. We can work around this in foot, for sure. But still, it doesn't make sense to me that the compositor sends and IME enter event to us, when we don't have keyboard focus. But, it could very well be that the order of events isn't guaranteed, and that the very next event tells us we've got keyboard focus...
Owner

I guess it's also possible that IME enter events are completely disjoint from regular keyboard events.

In which case #324 would probably fix this.

I guess it's also possible that IME enter events are completely disjoint from regular keyboard events. In which case https://codeberg.org/dnkl/foot/issues/324 would probably fix this.
Owner

Asked on #wayland but got no reply. I'll try to work around it by ignoring IME enter events when we don't have keyboard focus.

Asked on #wayland but got no reply. I'll try to work around it by ignoring IME enter events when we don't have keyboard focus.
dnkl changed title from Crash with ime to Crash with IME 7 months ago
Poster

But still, it doesn't make sense to me that the compositor sends and IME enter event to us, when we don't have keyboard focus.

I asked on #wayfire irc and the author said it was unlikely they were doing that.

All of my existing (unfocused) foot instances didn't crash, either; only some of the newly created instances would crash. I'm on wayland-1.19 if this matters.

>But still, it doesn't make sense to me that the compositor sends and IME enter event to us, when we don't have keyboard focus. I asked on #wayfire irc and the author said it was unlikely they were doing that. All of my existing (unfocused) foot instances didn't crash, either; only some of the newly created instances would crash. I'm on wayland-1.19 if this matters.
Owner

If you can reproduce the crash with WAYLAND_DEBUG=1, that would be greatly appreciated.

If you can reproduce the crash with `WAYLAND_DEBUG=1`, that would be greatly appreciated.
Poster

Last few moments before foot crashes.

[2144718.172] wl_keyboard@19.enter(461189, wl_surface@3, array)
[2144718.212] wl_keyboard@19.modifiers(461190, 0, 0, 0, 0)
[2144718.243] wl_data_device@11.selection(nil)
[2144718.253] zwp_primary_selection_device_v1@12.data_offer(new id zwp_primary_selection_offer_v1@2925143472)
[2144718.266]  -> zwp_primary_selection_offer_v1@4278190080.destroy()
[2144718.274] zwp_primary_selection_offer_v1@4278190081.offer("application/glfw+clipboard-13315")
[2144718.285] zwp_primary_selection_offer_v1@4278190081.offer("text/plain")
[2144718.295] zwp_primary_selection_offer_v1@4278190081.offer("text/plain;charset=utf-8")
[2144718.304] zwp_primary_selection_offer_v1@4278190081.offer("TEXT")
[2144718.314] zwp_primary_selection_offer_v1@4278190081.offer("STRING")
[2144718.323] zwp_primary_selection_offer_v1@4278190081.offer("UTF8_STRING")
[2144718.333] zwp_primary_selection_device_v1@12.selection(zwp_primary_selection_offer_v1@4278190081)
[2144718.343] zwp_text_input_v3@16.enter(wl_surface@3)
[2144718.353]  -> zwp_text_input_v3@16.enable()
[2144718.360]  -> zwp_text_input_v3@16.set_content_type(0, 13)
[2144718.375]  -> zwp_text_input_v3@16.set_cursor_rectangle(18, 2, 1, 18)
[2144718.398]  -> zwp_text_input_v3@16.commit()
[2144718.406] xdg_toplevel@23.configure(0, 0, array)
[2144718.423] xdg_surface@22.configure(461191)
[2144718.433]  -> xdg_surface@22.ack_configure(461191)
[2144718.455]  -> wl_surface@3.commit()
[2144718.478]  -> wl_surface@3.damage_buffer(2, 2, 640, 18)
[2144718.520]  -> wl_surface@3.frame(new id wl_callback@32)
[2144718.533]  -> wl_surface@3.set_buffer_scale(1)
[2144718.543]  -> wl_surface@3.attach(wl_buffer@26, 0, 0)
[2144718.561]  -> wl_surface@3.commit()
[2144718.734] wl_buffer@26.release()
[2144728.649] wl_display@1.delete_id(32)
[2144728.703] wl_callback@32.done(293446211)
[2145218.501]  -> wl_surface@3.damage_buffer(2, 2, 640, 18)
[2145218.559]  -> wl_surface@3.frame(new id wl_callback@32)
[2145218.577]  -> wl_surface@3.set_buffer_scale(1)
[2145218.588]  -> wl_surface@3.attach(wl_buffer@26, 0, 0)
[2145218.609]  -> wl_surface@3.commit()
[2145219.088] wl_display@1.delete_id(32)
[2145219.112] wl_buffer@26.release()
[2145219.120] wl_callback@32.done(293446702)
[2145718.498]  -> wl_surface@3.damage_buffer(2, 2, 640, 18)
[2145718.569]  -> wl_surface@3.frame(new id wl_callback@32)
[2145718.583]  -> wl_surface@3.set_buffer_scale(1)
[2145718.592]  -> wl_surface@3.attach(wl_buffer@26, 0, 0)
[2145718.606]  -> wl_surface@3.commit()
[2145719.463] wl_display@1.delete_id(32)
[2145719.480] wl_buffer@26.release()
[2145719.489] wl_callback@32.done(293447202)
[2146218.495]  -> wl_surface@3.damage_buffer(2, 2, 640, 18)
[2146218.600]  -> wl_surface@3.frame(new id wl_callback@32)
[2146218.641]  -> wl_surface@3.set_buffer_scale(1)
[2146218.668]  -> wl_surface@3.attach(wl_buffer@26, 0, 0)
[2146218.716]  -> wl_surface@3.commit()
[2146219.775] wl_display@1.delete_id(32)
[2146219.842] wl_buffer@26.release()
[2146219.863] wl_callback@32.done(293447702)
[2146718.498]  -> wl_surface@3.damage_buffer(2, 2, 640, 18)
[2146718.557]  -> wl_surface@3.frame(new id wl_callback@32)
[2146718.573]  -> wl_surface@3.set_buffer_scale(1)
[2146718.586]  -> wl_surface@3.attach(wl_buffer@26, 0, 0)
[2146718.606]  -> wl_surface@3.commit()
[2146719.133] wl_display@1.delete_id(32)
[2146719.157] wl_buffer@26.release()
[2146719.164] wl_callback@32.done(293448202)
[2147218.488]  -> wl_surface@3.damage_buffer(2, 2, 640, 18)
[2147218.544]  -> wl_surface@3.frame(new id wl_callback@32)
[2147218.559]  -> wl_surface@3.set_buffer_scale(1)
[2147218.567]  -> wl_surface@3.attach(wl_buffer@26, 0, 0)
[2147218.583]  -> wl_surface@3.commit()
[2147219.166] wl_display@1.delete_id(32)
[2147219.191] wl_buffer@26.release()
[2147219.199] wl_callback@32.done(293448702)
[2147513.849] wl_keyboard@19.leave(461194, wl_surface@3)
[2147513.880] zwp_text_input_v3@16.leave(wl_surface@3)
[2147513.890]  -> zwp_text_input_v3@16.disable()
[2147513.896]  -> zwp_text_input_v3@16.commit()
[2147513.901] xdg_toplevel@23.configure(0, 0, array)
[2147513.922] xdg_surface@22.configure(461193)
[2147513.932]  -> xdg_surface@22.ack_configure(461193)
[2147513.955]  -> wl_surface@3.commit()
[2147513.980]  -> wl_surface@3.damage_buffer(2, 2, 640, 18)
[2147514.025]  -> wl_surface@3.frame(new id wl_callback@32)
[2147514.038]  -> wl_surface@3.set_buffer_scale(1)
[2147514.048]  -> wl_surface@3.attach(wl_buffer@26, 0, 0)
[2147514.067]  -> wl_surface@3.commit()
[2147514.237] wl_buffer@26.release()
[2147528.955] wl_display@1.delete_id(32)
[2147529.006] wl_callback@32.done(293449011)
[2154053.513] wl_keyboard@19.enter(461201, wl_surface@3, array)
[2154053.547] wl_keyboard@19.modifiers(461202, 0, 0, 0, 0)
[2154053.568] wl_data_device@11.selection(nil)
[2154053.576] zwp_primary_selection_device_v1@12.data_offer(new id zwp_primary_selection_offer_v1@2925402672)
[2154053.586]  -> zwp_primary_selection_offer_v1@4278190081.destroy()
[2154053.592] zwp_primary_selection_offer_v1@4278190080.offer("application/glfw+clipboard-13315")
[2154053.600] zwp_primary_selection_offer_v1@4278190080.offer("text/plain")
[2154053.606] zwp_primary_selection_offer_v1@4278190080.offer("text/plain;charset=utf-8")
[2154053.613] zwp_primary_selection_offer_v1@4278190080.offer("TEXT")
[2154053.620] zwp_primary_selection_offer_v1@4278190080.offer("STRING")
[2154053.626] zwp_primary_selection_offer_v1@4278190080.offer("UTF8_STRING")
[2154053.633] zwp_primary_selection_device_v1@12.selection(zwp_primary_selection_offer_v1@4278190080)
[2154053.640] zwp_text_input_v3@16.enter(wl_surface@3)
[2154053.647]  -> zwp_text_input_v3@16.enable()
[2154053.652]  -> zwp_text_input_v3@16.set_content_type(0, 13)
[2154053.662]  -> zwp_text_input_v3@16.set_cursor_rectangle(18, 2, 1, 18)
[2154053.678]  -> zwp_text_input_v3@16.commit()
[2154053.684] xdg_toplevel@23.configure(0, 0, array)
[2154053.697] xdg_surface@22.configure(461203)
[2154053.704]  -> xdg_surface@22.ack_configure(461203)
[2154053.724]  -> wl_surface@3.commit()
[2154053.749]  -> wl_surface@3.damage_buffer(2, 2, 640, 18)
[2154053.783]  -> wl_surface@3.frame(new id wl_callback@32)
[2154053.793]  -> wl_surface@3.set_buffer_scale(1)
[2154053.800]  -> wl_surface@3.attach(wl_buffer@26, 0, 0)
[2154053.820]  -> wl_surface@3.commit()
[2154054.070] wl_buffer@26.release()
[2154061.578] wl_display@1.delete_id(32)
[2154061.603] wl_callback@32.done(293455544)
[2154553.766]  -> wl_surface@3.damage_buffer(2, 2, 640, 18)
[2154553.926]  -> wl_surface@3.frame(new id wl_callback@32)
[2154553.969]  -> wl_surface@3.set_buffer_scale(1)
[2154553.999]  -> wl_surface@3.attach(wl_buffer@26, 0, 0)
[2154554.047]  -> wl_surface@3.commit()
[2154555.087] wl_display@1.delete_id(32)
[2154555.143] wl_buffer@26.release()
[2154555.158] wl_callback@32.done(293456038)
[2155013.743] wl_keyboard@19.key(461204, 293456496, 56, 1)
[2155013.866] wl_keyboard@19.modifiers(461205, 64, 0, 0, 0)
[2155053.770]  -> wl_surface@3.damage_buffer(2, 2, 640, 18)
[2155053.873]  -> wl_surface@3.frame(new id wl_callback@32)
[2155053.894]  -> wl_surface@3.set_buffer_scale(1)
[2155053.909]  -> wl_surface@3.attach(wl_buffer@26, 0, 0)
[2155053.934]  -> wl_surface@3.commit()
[2155054.194] wl_buffer@26.release()
[2155061.795] wl_display@1.delete_id(32)
[2155061.831] wl_callback@32.done(293456544)
[2155286.338] wl_keyboard@19.modifiers(461206, 0, 0, 0, 0)
[2155286.422] wl_keyboard@19.leave(461207, wl_surface@3)
[2155286.458] zwp_text_input_v3@16.leave(wl_surface@3)
[2155286.482]  -> zwp_text_input_v3@16.disable()
[2155286.497]  -> zwp_text_input_v3@16.commit()
[2155286.546]  -> wl_surface@3.damage_buffer(2, 2, 640, 18)
[2155286.638]  -> wl_surface@3.frame(new id wl_callback@32)
[2155286.674]  -> wl_surface@3.set_buffer_scale(1)
[2155286.696]  -> wl_surface@3.attach(wl_buffer@26, 0, 0)
[2155286.737]  -> wl_surface@3.commit()
[2155287.113] wl_buffer@26.release()
[2155295.102] wl_display@1.delete_id(32)
[2155295.140] wl_callback@32.done(293456778)
[2155553.795]  -> wl_surface@3.damage_buffer(2, 2, 640, 18)
[2155553.966]  -> wl_surface@3.frame(new id wl_callback@32)
[2155554.004]  -> wl_surface@3.set_buffer_scale(1)
[2155554.024]  -> wl_surface@3.attach(wl_buffer@26, 0, 0)
[2155554.050]  -> wl_surface@3.commit()
[2155554.186] wl_buffer@26.release()
[2155561.618] wl_display@1.delete_id(32)
[2155561.685] wl_callback@32.done(293457044)
[2155840.916] zwp_text_input_v3@16.enter(wl_surface@3)
Last few moments before foot crashes. <details> ``` [2144718.172] wl_keyboard@19.enter(461189, wl_surface@3, array) [2144718.212] wl_keyboard@19.modifiers(461190, 0, 0, 0, 0) [2144718.243] wl_data_device@11.selection(nil) [2144718.253] zwp_primary_selection_device_v1@12.data_offer(new id zwp_primary_selection_offer_v1@2925143472) [2144718.266] -> zwp_primary_selection_offer_v1@4278190080.destroy() [2144718.274] zwp_primary_selection_offer_v1@4278190081.offer("application/glfw+clipboard-13315") [2144718.285] zwp_primary_selection_offer_v1@4278190081.offer("text/plain") [2144718.295] zwp_primary_selection_offer_v1@4278190081.offer("text/plain;charset=utf-8") [2144718.304] zwp_primary_selection_offer_v1@4278190081.offer("TEXT") [2144718.314] zwp_primary_selection_offer_v1@4278190081.offer("STRING") [2144718.323] zwp_primary_selection_offer_v1@4278190081.offer("UTF8_STRING") [2144718.333] zwp_primary_selection_device_v1@12.selection(zwp_primary_selection_offer_v1@4278190081) [2144718.343] zwp_text_input_v3@16.enter(wl_surface@3) [2144718.353] -> zwp_text_input_v3@16.enable() [2144718.360] -> zwp_text_input_v3@16.set_content_type(0, 13) [2144718.375] -> zwp_text_input_v3@16.set_cursor_rectangle(18, 2, 1, 18) [2144718.398] -> zwp_text_input_v3@16.commit() [2144718.406] xdg_toplevel@23.configure(0, 0, array) [2144718.423] xdg_surface@22.configure(461191) [2144718.433] -> xdg_surface@22.ack_configure(461191) [2144718.455] -> wl_surface@3.commit() [2144718.478] -> wl_surface@3.damage_buffer(2, 2, 640, 18) [2144718.520] -> wl_surface@3.frame(new id wl_callback@32) [2144718.533] -> wl_surface@3.set_buffer_scale(1) [2144718.543] -> wl_surface@3.attach(wl_buffer@26, 0, 0) [2144718.561] -> wl_surface@3.commit() [2144718.734] wl_buffer@26.release() [2144728.649] wl_display@1.delete_id(32) [2144728.703] wl_callback@32.done(293446211) [2145218.501] -> wl_surface@3.damage_buffer(2, 2, 640, 18) [2145218.559] -> wl_surface@3.frame(new id wl_callback@32) [2145218.577] -> wl_surface@3.set_buffer_scale(1) [2145218.588] -> wl_surface@3.attach(wl_buffer@26, 0, 0) [2145218.609] -> wl_surface@3.commit() [2145219.088] wl_display@1.delete_id(32) [2145219.112] wl_buffer@26.release() [2145219.120] wl_callback@32.done(293446702) [2145718.498] -> wl_surface@3.damage_buffer(2, 2, 640, 18) [2145718.569] -> wl_surface@3.frame(new id wl_callback@32) [2145718.583] -> wl_surface@3.set_buffer_scale(1) [2145718.592] -> wl_surface@3.attach(wl_buffer@26, 0, 0) [2145718.606] -> wl_surface@3.commit() [2145719.463] wl_display@1.delete_id(32) [2145719.480] wl_buffer@26.release() [2145719.489] wl_callback@32.done(293447202) [2146218.495] -> wl_surface@3.damage_buffer(2, 2, 640, 18) [2146218.600] -> wl_surface@3.frame(new id wl_callback@32) [2146218.641] -> wl_surface@3.set_buffer_scale(1) [2146218.668] -> wl_surface@3.attach(wl_buffer@26, 0, 0) [2146218.716] -> wl_surface@3.commit() [2146219.775] wl_display@1.delete_id(32) [2146219.842] wl_buffer@26.release() [2146219.863] wl_callback@32.done(293447702) [2146718.498] -> wl_surface@3.damage_buffer(2, 2, 640, 18) [2146718.557] -> wl_surface@3.frame(new id wl_callback@32) [2146718.573] -> wl_surface@3.set_buffer_scale(1) [2146718.586] -> wl_surface@3.attach(wl_buffer@26, 0, 0) [2146718.606] -> wl_surface@3.commit() [2146719.133] wl_display@1.delete_id(32) [2146719.157] wl_buffer@26.release() [2146719.164] wl_callback@32.done(293448202) [2147218.488] -> wl_surface@3.damage_buffer(2, 2, 640, 18) [2147218.544] -> wl_surface@3.frame(new id wl_callback@32) [2147218.559] -> wl_surface@3.set_buffer_scale(1) [2147218.567] -> wl_surface@3.attach(wl_buffer@26, 0, 0) [2147218.583] -> wl_surface@3.commit() [2147219.166] wl_display@1.delete_id(32) [2147219.191] wl_buffer@26.release() [2147219.199] wl_callback@32.done(293448702) [2147513.849] wl_keyboard@19.leave(461194, wl_surface@3) [2147513.880] zwp_text_input_v3@16.leave(wl_surface@3) [2147513.890] -> zwp_text_input_v3@16.disable() [2147513.896] -> zwp_text_input_v3@16.commit() [2147513.901] xdg_toplevel@23.configure(0, 0, array) [2147513.922] xdg_surface@22.configure(461193) [2147513.932] -> xdg_surface@22.ack_configure(461193) [2147513.955] -> wl_surface@3.commit() [2147513.980] -> wl_surface@3.damage_buffer(2, 2, 640, 18) [2147514.025] -> wl_surface@3.frame(new id wl_callback@32) [2147514.038] -> wl_surface@3.set_buffer_scale(1) [2147514.048] -> wl_surface@3.attach(wl_buffer@26, 0, 0) [2147514.067] -> wl_surface@3.commit() [2147514.237] wl_buffer@26.release() [2147528.955] wl_display@1.delete_id(32) [2147529.006] wl_callback@32.done(293449011) [2154053.513] wl_keyboard@19.enter(461201, wl_surface@3, array) [2154053.547] wl_keyboard@19.modifiers(461202, 0, 0, 0, 0) [2154053.568] wl_data_device@11.selection(nil) [2154053.576] zwp_primary_selection_device_v1@12.data_offer(new id zwp_primary_selection_offer_v1@2925402672) [2154053.586] -> zwp_primary_selection_offer_v1@4278190081.destroy() [2154053.592] zwp_primary_selection_offer_v1@4278190080.offer("application/glfw+clipboard-13315") [2154053.600] zwp_primary_selection_offer_v1@4278190080.offer("text/plain") [2154053.606] zwp_primary_selection_offer_v1@4278190080.offer("text/plain;charset=utf-8") [2154053.613] zwp_primary_selection_offer_v1@4278190080.offer("TEXT") [2154053.620] zwp_primary_selection_offer_v1@4278190080.offer("STRING") [2154053.626] zwp_primary_selection_offer_v1@4278190080.offer("UTF8_STRING") [2154053.633] zwp_primary_selection_device_v1@12.selection(zwp_primary_selection_offer_v1@4278190080) [2154053.640] zwp_text_input_v3@16.enter(wl_surface@3) [2154053.647] -> zwp_text_input_v3@16.enable() [2154053.652] -> zwp_text_input_v3@16.set_content_type(0, 13) [2154053.662] -> zwp_text_input_v3@16.set_cursor_rectangle(18, 2, 1, 18) [2154053.678] -> zwp_text_input_v3@16.commit() [2154053.684] xdg_toplevel@23.configure(0, 0, array) [2154053.697] xdg_surface@22.configure(461203) [2154053.704] -> xdg_surface@22.ack_configure(461203) [2154053.724] -> wl_surface@3.commit() [2154053.749] -> wl_surface@3.damage_buffer(2, 2, 640, 18) [2154053.783] -> wl_surface@3.frame(new id wl_callback@32) [2154053.793] -> wl_surface@3.set_buffer_scale(1) [2154053.800] -> wl_surface@3.attach(wl_buffer@26, 0, 0) [2154053.820] -> wl_surface@3.commit() [2154054.070] wl_buffer@26.release() [2154061.578] wl_display@1.delete_id(32) [2154061.603] wl_callback@32.done(293455544) [2154553.766] -> wl_surface@3.damage_buffer(2, 2, 640, 18) [2154553.926] -> wl_surface@3.frame(new id wl_callback@32) [2154553.969] -> wl_surface@3.set_buffer_scale(1) [2154553.999] -> wl_surface@3.attach(wl_buffer@26, 0, 0) [2154554.047] -> wl_surface@3.commit() [2154555.087] wl_display@1.delete_id(32) [2154555.143] wl_buffer@26.release() [2154555.158] wl_callback@32.done(293456038) [2155013.743] wl_keyboard@19.key(461204, 293456496, 56, 1) [2155013.866] wl_keyboard@19.modifiers(461205, 64, 0, 0, 0) [2155053.770] -> wl_surface@3.damage_buffer(2, 2, 640, 18) [2155053.873] -> wl_surface@3.frame(new id wl_callback@32) [2155053.894] -> wl_surface@3.set_buffer_scale(1) [2155053.909] -> wl_surface@3.attach(wl_buffer@26, 0, 0) [2155053.934] -> wl_surface@3.commit() [2155054.194] wl_buffer@26.release() [2155061.795] wl_display@1.delete_id(32) [2155061.831] wl_callback@32.done(293456544) [2155286.338] wl_keyboard@19.modifiers(461206, 0, 0, 0, 0) [2155286.422] wl_keyboard@19.leave(461207, wl_surface@3) [2155286.458] zwp_text_input_v3@16.leave(wl_surface@3) [2155286.482] -> zwp_text_input_v3@16.disable() [2155286.497] -> zwp_text_input_v3@16.commit() [2155286.546] -> wl_surface@3.damage_buffer(2, 2, 640, 18) [2155286.638] -> wl_surface@3.frame(new id wl_callback@32) [2155286.674] -> wl_surface@3.set_buffer_scale(1) [2155286.696] -> wl_surface@3.attach(wl_buffer@26, 0, 0) [2155286.737] -> wl_surface@3.commit() [2155287.113] wl_buffer@26.release() [2155295.102] wl_display@1.delete_id(32) [2155295.140] wl_callback@32.done(293456778) [2155553.795] -> wl_surface@3.damage_buffer(2, 2, 640, 18) [2155553.966] -> wl_surface@3.frame(new id wl_callback@32) [2155554.004] -> wl_surface@3.set_buffer_scale(1) [2155554.024] -> wl_surface@3.attach(wl_buffer@26, 0, 0) [2155554.050] -> wl_surface@3.commit() [2155554.186] wl_buffer@26.release() [2155561.618] wl_display@1.delete_id(32) [2155561.685] wl_callback@32.done(293457044) [2155840.916] zwp_text_input_v3@16.enter(wl_surface@3) ``` </details>
Owner

Here are the relevant entries, as I see them:

[2144718.172] wl_keyboard@19.enter(461189, wl_surface@3, array)
[2144718.343] zwp_text_input_v3@16.enter(wl_surface@3)
...
[2147513.849] wl_keyboard@19.leave(461194, wl_surface@3)
[2147513.880] zwp_text_input_v3@16.leave(wl_surface@3)
...
[2154053.513] wl_keyboard@19.enter(461201, wl_surface@3, array)
[2154053.640] zwp_text_input_v3@16.enter(wl_surface@3)
...
[2155286.422] wl_keyboard@19.leave(461207, wl_surface@3)
[2155286.458] zwp_text_input_v3@16.leave(wl_surface@3)
...
[2155840.916] zwp_text_input_v3@16.enter(wl_surface@3)

That is, the keyboard and IME enter/leave events are synchronized, except at the end, where we receive an IME enter event without a corresponding keyboard enter event.

Here are the relevant entries, as I see them: ``` [2144718.172] wl_keyboard@19.enter(461189, wl_surface@3, array) [2144718.343] zwp_text_input_v3@16.enter(wl_surface@3) ... [2147513.849] wl_keyboard@19.leave(461194, wl_surface@3) [2147513.880] zwp_text_input_v3@16.leave(wl_surface@3) ... [2154053.513] wl_keyboard@19.enter(461201, wl_surface@3, array) [2154053.640] zwp_text_input_v3@16.enter(wl_surface@3) ... [2155286.422] wl_keyboard@19.leave(461207, wl_surface@3) [2155286.458] zwp_text_input_v3@16.leave(wl_surface@3) ... [2155840.916] zwp_text_input_v3@16.enter(wl_surface@3) ``` That is, the keyboard and IME enter/leave events are synchronized, **except** at the end, where we receive an IME enter event without a corresponding keyboard enter event.
dnkl closed this issue 7 months ago
dnkl referenced this issue from a commit 7 months ago
Owner

Issue closed since a workaround (though untested!) has been merged.

You might still want to bring this to Wayfire's attention...

Issue closed since a workaround (though untested!) has been merged. You might still want to bring this to Wayfire's attention...
dnkl added the
not-a-bug
label 7 months ago
Poster

Will do. This is (Wayfire) breaking the wayland text-input protocol, right?

Will do. This is (Wayfire) breaking the wayland text-input protocol, right?
Owner

Yeah, well, at least breaking my assumption of how it (text-input) correlates with the regular keyboard protocol (and no one has told me I'm wrong...)

In any case, "text-input-v3::enter() sent before keyboard::enter()", along with your debug log and perhaps a pointer here, ought to be good enough for an issue title and description.

Yeah, well, at least breaking _my_ assumption of how it (text-input) correlates with the regular keyboard protocol (and no one has told me I'm wrong...) In any case, _"`text-input-v3::enter()` sent before `keyboard::enter()`"_, along with your debug log and perhaps a pointer here, ought to be good enough for an issue title and description.
Sign in to join this conversation.
No Milestone
No Assignees
2 Participants
Notifications
Due Date

No due date set.

Dependencies

This issue currently doesn't have any dependencies.

Loading…
There is no content yet.