If the user recalls a history entry that's taller than the terminal and then attempts to edit it, the process crashes.
fatal error: unexpected signal during runtime execution
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x468a3c7]
runtime stack:
runtime.throw(0x52e4b75, 0x2a)
/usr/lib/go-1.16/src/runtime/panic.go:1117 +0x72
runtime.sigpanic()
/usr/lib/go-1.16/src/runtime/signal_unix.go:718 +0x2e5
goroutine 1 [syscall]:
runtime.cgocall(0x452be10, 0xc00201f368, 0xc000000100)
/usr/lib/go-1.16/src/runtime/cgocall.go:154 +0x5b fp=0xc00201f338 sp=0xc00201f300 pc=0x448f9b
github.com/knz/go-libedit/unix._C2func_go_libedit_gets(0x7fe6e2d51600, 0x7fe6e2deb140, 0x0, 0x0, 0xc002ddded8, 0xc002dddedc, 0x1, 0x0, 0x0, 0x0)
_cgo_gotypes.go:193 +0x51 fp=0xc00201f368 sp=0xc00201f338 pc=0x427e0d1
github.com/knz/go-libedit/unix.EditLine.GetLine.func1(0xc002499880, 0xc002ddded8, 0xc002dddedc, 0x20, 0x7fe6e2deb140, 0x0)
/home/spill/go/src/github.com/cockroachdb/cockroach/vendor/github.com/knz/go-libedit/unix/editline_unix.go:281 +0xe7 fp=0xc00201f3f0 sp=0xc00201f368 pc=0x4282047
github.com/knz/go-libedit/unix.EditLine.GetLine(0x0, 0x20, 0xb, 0x0, 0x0)
/home/spill/go/src/github.com/cockroachdb/cockroach/vendor/github.com/knz/go-libedit/unix/editline_unix.go:281 +0xaa fp=0xc00201f468 sp=0xc00201f3f0 pc=0x42804aa
github.com/cockroachdb/cockroach/pkg/cli/clisqlshell.(*cliState).doReadLine(0xc0012367e0, 0x6, 0x5)
/home/spill/go/src/github.com/cockroachdb/cockroach/pkg/cli/clisqlshell/sql.go:957 +0x60c fp=0xc00201f540 sp=0xc00201f468 pc=0x4287d0c
github.com/cockroachdb/cockroach/pkg/cli/clisqlshell.(*cliState).doRunShell(0xc0012367e0, 0x0, 0xc0001be000, 0xc0001be008, 0xc0001be398, 0x0, 0x0)
/home/spill/go/src/github.com/cockroachdb/cockroach/pkg/cli/clisqlshell/sql.go:1714 +0xbe fp=0xc00201f5b8 sp=0xc00201f540 pc=0x428bffe
github.com/cockroachdb/cockroach/pkg/cli/clisqlshell.(*cliState).RunInteractive(0xc0012367e0, 0xc0001be000, 0xc0001be008, 0xc0001be398, 0x0, 0x0)
/home/spill/go/src/github.com/cockroachdb/cockroach/pkg/cli/clisqlshell/sql.go:1677 +0x52 fp=0xc00201f600 sp=0xc00201f5b8 pc=0x428bf12
github.com/cockroachdb/cockroach/pkg/cli/clisqlcfg.(*Context).Run(0xc000ad7520, 0x6af9d28, 0xc001006c30, 0x6af9d28, 0xc001006c30)
#0 0x000000000468a3c7 in terminal_overwrite () at /home/spill/go/src/github.com/cockroachdb/cockroach/c-deps/libedit/src/terminal.c:643
#1 0x000000000468a246 in terminal_move_to_char () at /home/spill/go/src/github.com/cockroachdb/cockroach/c-deps/libedit/src/terminal.c:591
#2 0x0000000004686e4c in re_refresh_cursor () at /home/spill/go/src/github.com/cockroachdb/cockroach/c-deps/libedit/src/refresh.c:1082
#3 0x000000000468521d in el_wgets () at /home/spill/go/src/github.com/cockroachdb/cockroach/c-deps/libedit/src/read.c:546
#4 0x000000000452d315 in go_libedit_gets (el=0x7fffcaac2600, lprompt=0x7fffca80d000 "demo@127.0.0.1:26257/defaultdb> ", rprompt=0x0, p_sigcfg=<optimized out>, count=0xc0027c89b8, interrupted=0xc0027c89bc,
widechar=1) at c_editline.c:467
#5 0x000000000452be59 in _cgo_69d4664a3f57_C2func_go_libedit_gets (v=0xc0030b1368) at cgo-gcc-prolog:109
#6 0x00000000004b7c90 in runtime.asmcgocall () at /usr/lib/go-1.16/src/runtime/asm_amd64.s:667
#7 0x00000000004874fd in runtime.park_m (gp=0xc000102780) at /usr/lib/go-1.16/src/runtime/proc.go:3274
found by @smcvey
Describe the problem
If the user recalls a history entry that's taller than the terminal and then attempts to edit it, the process crashes.
To Reproduce
select 1, <newline> 1, <newline> ...(10-20 lines), let it runExpected behavior
no crash
Additional data / screenshots
the stack trace from Go's perspective:
The C stack trace, obtained by
gdb:Environment:
crdb 21.2
Jira issue: CRDB-10440
Epic CRDB-22182