Tmux 崩溃 tty_clamp_area

Tmux 崩溃 tty_clamp_area

使用 tmux 作为我的开发环境。我有一个标准的分割区,顶部是 vim,下面是三个窗格,一个运行npm start,一个运行 nodejs 后端,另一个运行git status.

Tmux 似乎有时会无缘无故地崩溃,但今天它以可重现的方式崩溃了。

它似乎npx nodemon在一个窗格中运行,并git status在另一个崩溃的 tmux 中运行tty_clamp_area: y too big, [insert big number] > 0

这是我的日志:

tmux-client.log

1558350586.729364 sending message 105 to peer 0x55c5491caa80 (21 bytes)
1558350586.729373 sending message 105 to peer 0x55c5491caa80 (12 bytes)
1558350586.729383 sending message 105 to peer 0x55c5491caa80 (47 bytes)
1558350586.729392 sending message 105 to peer 0x55c5491caa80 (8 bytes)
1558350586.729402 sending message 105 to peer 0x55c5491caa80 (35 bytes)
1558350586.729411 sending message 105 to peer 0x55c5491caa80 (39 bytes)
1558350586.729421 sending message 105 to peer 0x55c5491caa80 (23 bytes)
1558350586.729430 sending message 105 to peer 0x55c5491caa80 (13 bytes)
1558350586.729439 sending message 105 to peer 0x55c5491caa80 (26 bytes)
1558350586.729452 sending message 105 to peer 0x55c5491caa80 (11 bytes)
1558350586.729462 sending message 105 to peer 0x55c5491caa80 (10 bytes)
1558350586.729472 sending message 106 to peer 0x55c5491caa80 (0 bytes)
1558350586.729482 cmd_pack_argv: argv[0]=new
1558350586.729492 cmd_pack_argv: argv[1]=-s
1558350586.729500 cmd_pack_argv: argv[2]=Scope
1558350586.729510 sending message 200 to peer 0x55c5491caa80 (17 bytes)
1558350586.729519 client loop enter
1558350586.751533 peer 0x55c5491caa80 message 207
1558350586.751544 sending message 208 to peer 0x55c5491caa80 (0 bytes)
1558350616.843871 client loop exit

tmux-server.log

1558350616.752814 format_replace: replaced 'W:#[range=window|#{window_index} #{window-status-style}#{?#{&&:#{window_last_flag},#{!=:#{window-status-last-style},default}}, #{window-status-last-style},}#{?#{&&:#{window_bell_flag},#{!=:#{window-status-bell-style},default}}, #{window-status-bell-style},#{?#{&&:#{||:#{window_activity_flag},#{window_silence_flag}},#{!=:#{window-status-activity-style},default}}, #{window-status-activity-style},}}]#{T:window-status-format}#[norange default]#{?window_end_flag,,#{window-status-separator}},#[range=window|#{window_index} list=focus #{?#{!=:#{window-status-current-style},default},#{window-status-current-style},#{window-status-style}}#{?#{&&:#{window_last_flag},#{!=:#{window-status-last-style},default}}, #{window-status-last-style},}#{?#{&&:#{window_bell_flag},#{!=:#{window-status-bell-style},default}}, #{window-status-bell-style},#{?#{&&:#{||:#{window_activity_flag},#{window_silence_flag}},#{!=:#{window-status-activity-style},default}}, #{window-status-activity-style},}}]#{T:window-status-current-format}#[norange list=on default]#{?window_end_flag,,#{window-status-separator}}' with '#[range=window|1 list=focus fg=colour39]#[bold]1 zsh#[norange list=on default]'
1558350616.752820 format_expand1: found #{}: status-right-style
1558350616.752823 format_replace: format 'status-right-style' found: default
1558350616.752826 format_replace: replaced 'status-right-style' with 'default'
1558350616.752829 format_expand1: found #{}: T;=/#{status-right-length}:status-right
1558350616.752832 format_expand1: expanding format: #{status-right-length}
1558350616.752834 format_expand1: found #{}: status-right-length
1558350616.752837 format_replace: format 'status-right-length' found: 150
1558350616.752840 format_replace: replaced 'status-right-length' with '150'
1558350616.752842 format_expand1: result is: 150
1558350616.752845 format_replace: modifier 0 is T
1558350616.752847 format_replace: modifier 1 is =
1558350616.752849 format_replace: modifier 1 argument 0: 150
1558350616.752853 format_replace: format 'status-right' found: #[fg=colour241] %R %d %b #[fg=colour154,bold]#h
1558350616.752856 format_expand1: expanding format: #[fg=colour241] %R %d %b #[fg=colour154,bold]#h
1558350616.752861 format_expand1: after time expanded: #[fg=colour241] 12:10 20 May #[fg=colour154,bold]#h
1558350616.752864 format_expand1: found #h: host_short
1558350616.752869 format_replace: format 'host_short' found: frankenstein
1558350616.752871 format_replace: replaced 'host_short' with 'frankenstein'
1558350616.752874 format_expand1: result is: #[fg=colour241] 12:10 20 May #[fg=colour154,bold]frankenstein
1558350616.752877 format_replace: applied length limit 150: #[fg=colour241] 12:10 20 May #[fg=colour154,bold]frankenstein
1558350616.752880 format_replace: replaced 'T;=/#{status-right-length}:status-right' with '#[fg=colour241] 12:10 20 May #[fg=colour154,bold]frankenstein'
1558350616.752887 format_expand1: result is: #[align=left range=left default]#[fg=colour154,bold] Scope #[norange default]#[list=on align=left]#[list=left-marker]<#[list=right-marker]>#[list=on]#[range=window|1 list=focus fg=colour39]#[bold]1 zsh#[norange list=on default]#[nolist align=right range=right default]#[fg=colour241] 12:10 20 May #[fg=colour154,bold]frankenstein#[norange default]
1558350616.752890 screen_write_collect_flush: flushed 0 items (0 bytes)
1558350616.752893 screen_write_stop: 0 cells (0 written, 0 skipped)
1558350616.752904 unref client 0x55c549201e30 (2 references)
1558350616.752907 status_redraw exit: force=0, changed=0
1558350616.752911 screen_redraw_set_context: /dev/pts/1 @0 ox=0 oy=0 sx=209 sy=56 1/0
1558350616.752914 /dev/pts/1: redraw added 0 bytes
1558350616.752918 @0 active pane changed
1558350616.752920 @0 name timer already queued (371885 left)
1558350616.780224 %2 has 76 bytes
1558350616.780243 @0 alerts timer reset 0
1558350616.780248 screen_write_start: size 69x12, pane %2 (at 70,45)
1558350616.780254 input_parse: %2 ground, 76 bytes: [..................] / rollbackFailedOptional: verb npm-session 5e24\033[0m\033[K\r
1558350616.780261 screen_write_collect_end: 68 [..................] / rollbackFailedOptional: verb npm-session 5e24 (at 0,5)
1558350616.780267 input_csi_dispatch: 'm' "" "0"
1558350616.780271 parameter 0: number 0
1558350616.780275 input_csi_dispatch: 'K' "" ""
1558350616.780302 input_c0_dispatch: '\r'
1558350616.780309 /dev/pts/1: \033[51;71H
1558350616.780317 /dev/pts/1: [..................] / rollbackFailedOptional: verb npm-session 5e24
1558350616.780321 screen_write_collect_flush: flushed 1 items (68 bytes)
1558350616.780323 screen_write_stop: 68 cells (68 written, 0 skipped)
1558350616.780327 cmdq_next <global>: empty
1558350616.780330 cmdq_next <0x55c549201e30>: empty
1558350616.780334 /dev/pts/1: \033[57;141H
1558350616.780339 @0 active pane changed
1558350616.780342 @0 name timer already queued (344463 left)
1558350616.780354 /dev/pts/1: wrote 85 bytes (of 85)
1558350616.780356 cmdq_next <global>: empty
1558350616.780358 cmdq_next <0x55c549201e30>: empty
1558350616.780370 @0 active pane changed
1558350616.780372 @0 name timer already queued (344432 left)
1558350616.790477 cmdq_next <global>: empty
1558350616.790499 cmdq_next <0x55c549201e30>: empty
1558350616.790506 @0 active pane changed
1558350616.790509 @0 name timer already queued (334297 left)
1558350616.830635 %2 has 76 bytes
1558350616.830651 @0 alerts timer reset 0
1558350616.830657 screen_write_start: size 69x12, pane %2 (at 70,45)
1558350616.830664 input_parse: %2 ground, 76 bytes: [..................] / rollbackFailedOptional: verb npm-session 5e24\033[0m\033[K\r
1558350616.830670 screen_write_collect_end: 68 [..................] / rollbackFailedOptional: verb npm-session 5e24 (at 0,5)
1558350616.830676 input_csi_dispatch: 'm' "" "0"
1558350616.830680 parameter 0: number 0
1558350616.830683 input_csi_dispatch: 'K' "" ""
1558350616.830686 input_c0_dispatch: '\r'
1558350616.830693 /dev/pts/1: \033[51;71H
1558350616.830701 /dev/pts/1: [..................] / rollbackFailedOptional: verb npm-session 5e24
1558350616.830705 screen_write_collect_flush: flushed 1 items (68 bytes)
1558350616.830708 screen_write_stop: 68 cells (68 written, 0 skipped)
1558350616.830711 cmdq_next <global>: empty
1558350616.830714 cmdq_next <0x55c549201e30>: empty
1558350616.830718 /dev/pts/1: \033[57;141H
1558350616.830723 @0 active pane changed
1558350616.830726 @0 name timer already queued (294079 left)
1558350616.830737 /dev/pts/1: wrote 85 bytes (of 85)
1558350616.830748 cmdq_next <global>: empty
1558350616.830751 cmdq_next <0x55c549201e30>: empty
1558350616.830753 @0 active pane changed
1558350616.830755 @0 name timer already queued (294050 left)
1558350616.840848 cmdq_next <global>: empty
1558350616.840874 cmdq_next <0x55c549201e30>: empty
1558350616.840889 @0 active pane changed
1558350616.840892 @0 name timer already queued (283914 left)
1558350616.842926 %3 has 338 bytes
1558350616.842942 @0 alerts timer reset 0
1558350616.842948 screen_write_start: size 69x12, pane %3 (at 140,45)
1558350616.842991 input_parse: %3 ground, 338 bytes: \r\033[0m\033[27m\033[24m\033[J\r\n\342\224\214\342\224\200\033[39m\033[0m\033[49m\033[48;5;250m \033[38;5;24m\357\205\274 \033[48;5;24m\033[38;5;250m\356\202\260 \033[38;5;250m\357\201\274 \033[38;5;250m\342\200\246/src/Frontend \033[48;5;172m\033[38;5;24m\356\202\260 \033[38;5;233m\357\204\223  \033[38;5;233m\357\204\246 development \357\201\252 \033[49m\033[38;5;172m\356\202\260\033[39m \r\n\342\224\202\r\n\342\224\224\342\236\244 \033[K\033[62C\033[1A\033[39m\033[0m\033[49m\033[30m\356\202\262\033[39m\033[40m\033[32m \033[32m\342\234\224\033[K\033[00m\033[1B\033[39m\033[49m\033[65D\033[?2004h
1558350616.842996 input_c0_dispatch: '\r'
1558350616.843000 input_csi_dispatch: 'm' "" "0"
1558350616.843004 parameter 0: number 0
1558350616.843008 input_csi_dispatch: 'm' "" "27"
1558350616.843010 parameter 0: number 27
1558350616.843013 input_csi_dispatch: 'm' "" "24"
1558350616.843015 parameter 0: number 24
1558350616.843017 input_csi_dispatch: 'J' "" ""
1558350616.843021 screen_write_collect_flush: flushed 0 items (0 bytes)
1558350616.843028 /dev/pts/1: \033[46;57r
1558350616.843034 fatal: tty_clamp_area: y too big, 4294967295 > 0

编辑:好的,看来问题确实是一致的。

重现步骤:

  • 跑步tmux

  • 垂直分割(顶部和底部的窗格)

  • <mod>alt+3

  • 在底部窗格中运行任何命令,直到终端开始滚动

我使用 tmux 2.9a 和 termite v15

答案1

这似乎是报告 tmux bug 的不明智的地方,但无论如何,这个问题应该通过这个提交来解决:https://github.com/tmux/tmux/commit/38b8a198bac62c16d351c54ed83ead29a2e0ecc8

相关内容