affected version
0.18.0
summary
Crash on completion
related #1511
steps to reproduce
echo `<TAB>
log
goroutine 1 [running]:ty]: unexpected rune '`'
src.elv.sh/pkg/sys.DumpStack()
src.elv.sh/pkg/sys/dumpstack.go:10 +0x66
src.elv.sh/pkg/shell.handlePanic()
src.elv.sh/pkg/shell/interact.go:141 +0x5a
panic({0x5603fb578680, 0xc0001b5818})
runtime/panic.go:838 +0x207
src.elv.sh/pkg/edit/complete.completeVariable({0x0?, 0x0?, 0x0?}, {{0x5603fb598378?, 0xc0001321c0?}, 0xc000474c00?, 0xc0004984e0?})
src.elv.sh/pkg/edit/complete/completers.go:149 +0x2c6
src.elv.sh/pkg/edit/complete.Complete({{0xc0000aa300?, 0xc00021c000?}, 0x0?}, {{0x5603fb598378?, 0xc0001321c0?}, 0xc000474c00?, 0xc0004984e0?})
src.elv.sh/pkg/edit/complete/complete.go:91 +0x256
src.elv.sh/pkg/edit.completionStart({0x5603fb5986b0, 0xc00021c000}, {0x5603fb595218, 0xc000212db0}, {{0x5603fb598378?, 0xc0001321c0?}, 0xc000474c00?, 0xc0004984e0?}, 0x1)
src.elv.sh/pkg/edit/completion.go:180 +0x171
src.elv.sh/pkg/edit.initCompletion.func4()
src.elv.sh/pkg/edit/completion.go:267 +0x70
reflect.Value.call({0x5603fb515900?, 0xc000212e10?, 0x5603fb1a3e4d?}, {0x5603fb47b462, 0x4}, {0x0, 0x0, 0xc00?})
reflect/value.go:556 +0x845
reflect.Value.Call({0x5603fb515900?, 0xc000212e10?, 0x2000?}, {0x0, 0x0, 0x0})
reflect/value.go:339 +0xbf
src.elv.sh/pkg/eval.(*goFn).Call(0xc00021b650, 0xc000162000, {0x0, 0x0, 0x0?}, 0xc00007d290)
src.elv.sh/pkg/eval/go_fn.go:247 +0xb46
src.elv.sh/pkg/eval.(*Evaler).Call(0x5603fb1a156d?, {0x5603fb594af8, 0xc00021b650}, {{0x0, 0x0, 0x0}, 0xc00007d290, {0x5603fb47f6ed, 0x10}}, {{0xc0000ac2b8, ...}, ...})
src.elv.sh/pkg/eval/eval.go:434 +0x376
src.elv.sh/pkg/edit.callWithNotifyPorts({0x5603fb595f78, 0xc000078900}, 0x1?, {0x5603fb594af8, 0xc00021b650}, {0x0, 0x0, 0x0})
src.elv.sh/pkg/edit/key_binding.go:67 +0x1ef
src.elv.sh/pkg/edit.mapBindings.Handle({{0x5603fb595f78, 0xc000078900}, 0xc0001321c0, {0xc00000ed38, 0x1, 0x1}}, {0xc00000ebd0?, 0xc0004f3700?}, {0x5603fb5950d8, 0xc000276428})
src.elv.sh/pkg/edit/key_binding.go:41 +0x10b
src.elv.sh/pkg/cli/tk.(*codeArea).handleKeyEvent(0xc00021c100, {0x4f3798?, 0xc0?})
src.elv.sh/pkg/cli/tk/codearea.go:297 +0xdc
src.elv.sh/pkg/cli/tk.(*codeArea).Handle(0xc00021c000?, {0x5603fb5950d8?, 0xc000276420?})
src.elv.sh/pkg/cli/tk/codearea.go:172 +0x72
src.elv.sh/pkg/cli.(*app).handle(0xc00021c000, {0x5603fb55d620?, 0xc000276420})
src.elv.sh/pkg/cli/app.go:226 +0x165
src.elv.sh/pkg/cli.(*loop).Run(0xc000216640)
src.elv.sh/pkg/cli/loop.go:129 +0x1ac
src.elv.sh/pkg/cli.(*app).ReadCode(0xc00021c000)
src.elv.sh/pkg/cli/app.go:475 +0x49a
src.elv.sh/pkg/edit.(*Editor).ReadCode(0xc000010010?)
src.elv.sh/pkg/edit/editor.go:113 +0x22
src.elv.sh/pkg/shell.interact(0xc0001321c0, {0xc000010010, 0xc000010018, 0xc000010020}, 0xc00020fda0)
src.elv.sh/pkg/shell/interact.go:100 +0x846
src.elv.sh/pkg/shell.(*Program).Run(0xc00007d950, {0xc000010010, 0xc000010018, 0xc000010020}, {0xc000020200, 0x0, 0x0})
src.elv.sh/pkg/shell/shell.go:98 +0x2db
src.elv.sh/pkg/prog.composite.Run(...)
src.elv.sh/pkg/prog/prog.go:118
src.elv.sh/pkg/prog.Run({0xc000010010, 0xc000010018, 0xc000010020}, {0xc000020200, 0x1, 0x1}, {0x5603fb5967e8, 0xc00000e6c0})
src.elv.sh/pkg/prog/prog.go:83 +0x3d4
main.main()
src.elv.sh/cmd/withpprof/elvish/main.go:17 +0x1c5
goroutine 6 [chan receive]:
src.elv.sh/pkg/eval.getBlackholeChan.func1()
src.elv.sh/pkg/eval/port.go:96 +0x3a
created by src.elv.sh/pkg/eval.getBlackholeChan
src.elv.sh/pkg/eval/port.go:95 +0x6a
goroutine 7 [syscall]:
os/signal.signal_recv()
runtime/sigqueue.go:151 +0x2f
os/signal.loop()
os/signal/signal_unix.go:23 +0x19
created by os/signal.Notify.func1.1
os/signal/signal.go:151 +0x2a
goroutine 9 [chan receive]:
src.elv.sh/pkg/shell.initSignal.func1()
src.elv.sh/pkg/shell/shell.go:138 +0x85
created by src.elv.sh/pkg/shell.initSignal
src.elv.sh/pkg/shell/shell.go:137 +0x91
goroutine 11 [chan receive]:
src.elv.sh/pkg/cli/prompt.(*Prompt).loop(0xc00021a460)
src.elv.sh/pkg/cli/prompt/prompt.go:77 +0xb6
created by src.elv.sh/pkg/cli/prompt.New
src.elv.sh/pkg/cli/prompt/prompt.go:70 +0x1bc
goroutine 12 [chan receive]:
src.elv.sh/pkg/cli/prompt.(*Prompt).loop(0xc00021a540)
src.elv.sh/pkg/cli/prompt/prompt.go:77 +0xb6
created by src.elv.sh/pkg/cli/prompt.New
src.elv.sh/pkg/cli/prompt/prompt.go:70 +0x1bc
runtime error: index out of range [0] with length 0
Execing recovery shell /bin/sh
sh-5.1$