blink bug revealed by running Go binary on linux/amd64
Author: glycerineCreated Jun 20, 2026Updated Jun 20, 2026
blink appears to corrupt data somewhere that shows up when I run my lisp interpreter, https://github.com/glycerine/zygomys, on it. To fetch: go install github.com/glycerine/zygomys/cmd/zygo@latest under go1.25.6.
This does not happen running the native amd64 binary.
go version go1.25.6 linux/amd64
$ uname -a
Linux rog 6.14.0-37-generic #37~24.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 20 10:25:38 UTC 2 x86_64 x86_64 x86_64 GNU/Linux
(goivy-venv) jaten@rog ~/go/src/github.com/jart/blink (master) $ file `which zygo`
file `which zygo`
/home/jaten/go/bin/zygo: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=b19e\
d790efe983885198985b3b1630284bade0ac, with debug_info, not stripped
(goivy-venv) jaten@rog ~/go/src/github.com/jart/blink (master) $ blink `which zygo`
blink `which zygo`
zygo version v9.6.0/fd768f9fcf055e3105abe356eae47324c9e0c699
press tab (repeatedly) to get completion suggestions. Shift-tab goes back. Ctrl-d to exit.
zygo> a=10
a=10
10
zygo> fatal error: slice bounds out of range
goroutine 1 gp=0xc000002380 m=5 mp=0xc000100008 [running]:
runtime.throw({0x8e74ab?, 0xc9f740?})
/mnt/oldrog/usr/local/go1.25.6/src/runtime/panic.go:1094 +0x48 fp=0xc0001bf2d8 sp=0xc0001bf2a8 pc=0x481548
runtime.panicCheck1(0xc0001bf320?, {0x8e74ab, 0x19})
/mnt/oldrog/usr/local/go1.25.6/src/runtime/panic.go:59 +0x94 fp=0xc0001bf2f8 sp=0xc0001bf2d8 pc=0x446eb4
runtime.goPanicSliceAlen(0x6, 0x20)
/mnt/oldrog/usr/local/go1.25.6/src/runtime/panic.go:128 +0x2e fp=0xc0001bf338 sp=0xc0001bf2f8 pc=0x4470ae
runtime.stringtoslicerune(0xc0001bf414, {0x8db6c4, 0x6})
/mnt/oldrog/usr/local/go1.25.6/src/runtime/string.go:241 +0x152 fp=0xc0001bf380 sp=0xc0001bf338 pc=0x4683d2
github.com/glycerine/liner.(*State).Prompt(0xc0001e1680, {0x8db6c4, 0x6})
/home/jaten/go/pkg/mod/github.com/glycerine/[email protected]/line.go:582 +0x187 fp=0xc0001bf938 sp=0xc0001bf380 pc=0x7139a7
github.com/glycerine/zygomys/v9/zygo.(*Prompter).Getline(0xc00026a180, 0x0)
/home/jaten/go/src/github.com/glycerine/zygomys/zygo/liner.go:125 +0xb2 fp=0xc0001bf9a0 sp=0xc0001bf938 pc=0x798772
github.com/glycerine/zygomys/v9/zygo.(*Prompter).getExpressionWithLiner(0xc00026a180, 0xc00020eea0, 0x0, 0x0)
/home/jaten/go/src/github.com/glycerine/zygomys/zygo/repl.go:91 +0x145 fp=0xc0001bfaf8 sp=0xc0001bf9a0 pc=0x7a87a5
github.com/glycerine/zygomys/v9/zygo.Repl(0xc00020eea0, 0xc0001f9ea0)
/home/jaten/go/src/github.com/glycerine/zygomys/zygo/repl.go:183 +0x485 fp=0xc0001bfe10 sp=0xc0001bfaf8 pc=0x7aa3a5
github.com/glycerine/zygomys/v9/zygo.ReplMain(0xc0001f9ea0)
/home/jaten/go/src/github.com/glycerine/zygomys/zygo/repl.go:499 +0x405 fp=0xc0001bff00 sp=0xc0001bfe10 pc=0x7abfa5
main.main()
/home/jaten/go/src/github.com/glycerine/zygomys/cmd/zygo/main.go:37 +0x18f fp=0xc0001bff50 sp=0xc0001bff00 pc=0x7becef
runtime.main()
/mnt/oldrog/usr/local/go1.25.6/src/runtime/proc.go:285 +0x29d fp=0xc0001bffe0 sp=0xc0001bff50 pc=0x44c41d
runtime.goexit({})
/mnt/oldrog/usr/local/go1.25.6/src/runtime/asm_amd64.s:1693 +0x1 fp=0xc0001bffe8 sp=0xc0001bffe0 pc=0x489701Source: jart/blink