interface conversion: opencode.MessageMetadataErrorUnion is opencode.MessageMetadataErrorMessageOutputLengthError, not shared.UnknownError #399

Closed
opened 2026-02-16 17:26:36 -05:00 by yindo · 2 comments
Owner

Originally created by @vian21 on GitHub (Jun 30, 2025).

Originally assigned to: @adamdotdevin on GitHub.

I was running opencode with Claude (Github). I asked it to complete some test file with missing tests given a test plan (table in .md). OpenCode crashed after doing some grep to check what tests were missing. Tests had a prefix + numbere.g test_[number]

I can't even resume the session. Here is the end of strace when I try to resume the session and openCode crashes immediately.

$ opencode --print-logs
INFO  2025-06-30T04:01:11 +29ms service=default version=0.1.165 args=--print-logs opencode
INFO  2025-06-30T04:01:11 +0ms service=app cwd=OMITTED creating
INFO  2025-06-30T04:01:11 +3ms service=app git
INFO  2025-06-30T04:01:11 +1ms service=bus type=storage.write subscribing
INFO  2025-06-30T04:01:11 +0ms service=app name=bus registering service
INFO  2025-06-30T04:01:11 +0ms service=format init
INFO  2025-06-30T04:01:11 +0ms service=bus type=file.edited subscribing
INFO  2025-06-30T04:01:11 +1ms service=config.hooks init
INFO  2025-06-30T04:01:11 +0ms service=bus type=file.edited subscribing
INFO  2025-06-30T04:01:11 +0ms service=bus type=session.idle subscribing
INFO  2025-06-30T04:01:11 +0ms service=app name=provider registering service
INFO  2025-06-30T04:01:11 +1ms service=app name=config registering service
INFO  2025-06-30T04:01:11 +1ms service=config loaded
INFO  2025-06-30T04:01:11 +1ms service=models.dev refreshing
INFO  2025-06-30T04:01:11 +1ms service=provider init
INFO  2025-06-30T04:01:11 +1ms service=provider providerID=github-copilot found
INFO  2025-06-30T04:01:11 +31ms service=server method=GET path=/config request
INFO  2025-06-30T04:01:11 +0ms service=server duration=0 response
INFO  2025-06-30T04:01:11 +5ms service=server method=GET path=/event request
INFO  2025-06-30T04:01:11 +0ms service=server event connected
INFO  2025-06-30T04:01:11 +2ms service=bus type=* subscribing
INFO  2025-06-30T04:01:11 +1ms service=server duration=3 response
INFO  2025-06-30T04:01:11 +10ms service=server method=GET path=/config/providers request
                                                                                        INFO  2025-06-30T04:01:11 +1ms service=server duration=1 response
                                                                                                                                                         Caught panic:

interface conversion: opencode.MessageMetadataErrorUnion is opencode.MessageMetadataErrorMessageOutputLengthError, not shared.UnknownError

Restoring terminal...

goroutine 245 [running]:
runtime/debug.Stack()
        /opt/hostedtoolcache/go/1.24.4/x64/src/runtime/debug/stack.go:26 +0x5e
runtime/debug.PrintStack()
        /opt/hostedtoolcache/go/1.24.4/x64/src/runtime/debug/stack.go:18 +0x13
github.com/charmbracelet/bubbletea/v2.(*Program).recoverFromPanic(0xc000af8000, {0xc31e40, 0xc0053cac30})
        /home/runner/go/pkg/mod/github.com/charmbracelet/bubbletea/v2@v2.0.0-beta.3/tea.go:1134 +0xc5
github.com/charmbracelet/bubbletea/v2.(*Program).handleCommands.func1.1.1()
        /home/runner/go/pkg/mod/github.com/charmbracelet/bubbletea/v2@v2.0.0-beta.3/tea.go:482 +0x3a
panic({0xc31e40?, 0xc0053cac30?})
        /opt/hostedtoolcache/go/1.24.4/x64/src/runtime/panic.go:792 +0x132
github.com/sst/opencode/internal/components/chat.renderToolInvocation({{{0xc00070478a, 0x6}, {0xc0007047b2, 0x1e}, {0xc00070479e, 0x4}, {0xc3d780, 0xc000213980}, {0xc0007047e6, 0x13}, ...}, ...}, ...)
        /home/runner/work/opencode/opencode/packages/tui/internal/components/chat/message.go:348 +0x447b
github.com/sst/opencode/internal/components/chat.(*messagesComponent).renderView(0xc000adf508)
        /home/runner/work/opencode/opencode/packages/tui/internal/components/chat/messages.go:208 +0x138d
github.com/sst/opencode/internal/components/chat.(*messagesComponent).Update.(*messagesComponent).Reload.func3()
        /home/runner/work/opencode/opencode/packages/tui/internal/components/chat/messages.go:418 +0x17
github.com/charmbracelet/bubbletea/v2.(*Program).handleCommands.func1.1()
        /home/runner/go/pkg/mod/github.com/charmbracelet/bubbletea/v2@v2.0.0-beta.3/tea.go:487 +0x7d
created by github.com/charmbracelet/bubbletea/v2.(*Program).handleCommands.func1 in goroutine 64
        /home/runner/go/pkg/mod/github.com/charmbracelet/bubbletea/v2@v2.0.0-beta.3/tea.go:477 +0x131
INFO  2025-06-30T04:01:19 +431ms service=bus type=* unsubscribing
INFO  2025-06-30T04:01:19 +0ms service=server event disconnected
INFO  2025-06-30T04:01:19 +7ms service=app name=session shutdown

Strace

write(14, "INFO  2025-06-30T03:53:14 +5ms s"..., 77) = 77
write(14, "INFO  2025-06-30T03:53:14 +0ms s"..., 62) = 62
pread64(11, "18499630 25987 10883 14486 0 180"..., 256, 0) = 40
write(14, "INFO  2025-06-30T03:53:14 +1ms s"..., 62) = 62
pread64(11, "18499630 26051 10915 14486 0 180"..., 256, 0) = 40
write(14, "INFO  2025-06-30T03:53:14 +1ms s"..., 66) = 66
sendto(22, "HTTP/1.1 200 OK\r\nContent-Type: t"..., 181, MSG_DONTWAIT|MSG_NOSIGNAL, NULL, 0) = 181
clock_gettime(CLOCK_MONOTONIC_COARSE, {tv_sec=296577, tv_nsec=572020115}) = 0
epoll_pwait2(4, [{events=EPOLLIN, data={u32=810320368, u64=810320368}}], 1024, NULL, [], 8) = 1
read(8, "\1\0\0\0\0\0\0\0", 8)          = 8
                                           clock_gettime(CLOCK_MONOTONIC_COARSE, {tv_sec=296577, tv_nsec=572020115}) = 0
                                                                                                                        timerfd_settime(8, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=16000000}}, NULL) = 0
                                                     epoll_ctl(4, EPOLL_CTL_ADD, 8, {events=EPOLLIN, data={u32=810320368, u64=810320368}}) = -1 EEXIST (File exists)
                                                                                                                                                                    futex(0x72f0b01ec8e0, FUTEX_WAKE_PRIVATE, 1) = 1
                                      futex(0x72f0b0514164, FUTEX_WAKE_PRIVATE, 1) = 1
                                                                                      epoll_pwait2(4, 0x304bcf10, 1024, NULL, 0x7ffedeff1ec0, 8) = -1 EINTR (Interrupted system call)
       --- SIGPWR {si_signo=SIGPWR, si_code=SI_TKILL, si_pid=694849, si_uid=1000} ---
                                                                                     futex(0x645bd00, FUTEX_WAKE_PRIVATE, 1) = 1
                                                                                                                                rt_sigsuspend(~[PWR RTMIN RT_1], 8)     = ? ERESTARTNOHAND (To be restarted if no handler)
                                            --- SIGPWR {si_signo=SIGPWR, si_code=SI_TKILL, si_pid=694849, si_uid=1000} ---
                                                                                                                          rt_sigreturn({mask=[PWR]})              = -1 EINTR (Interrupted system call)
                        futex(0x645bd00, FUTEX_WAKE_PRIVATE, 1) = 1
                                                                   rt_sigreturn({mask=[]})                 = -1 EINTR (Interrupted system call)
                                                                                                                                               --- SIGPWR {si_signo=SIGPWR, si_code=SI_TKILL, si_pid=694849, si_uid=1000} ---
                                               futex(0x645bd00, FUTEX_WAKE_PRIVATE, 1) = 1
                                                                                          rt_sigsuspend(~[PWR RTMIN RT_1], 8)     = ? ERESTARTNOHAND (To be restarted if no handler)
      --- SIGPWR {si_signo=SIGPWR, si_code=SI_TKILL, si_pid=694849, si_uid=1000} ---
                                                                                    rt_sigreturn({mask=[PWR]})              = -1 EINTR (Interrupted system call)
                                                                                                                                                                futex(0x645bd00, FUTEX_WAKE_PRIVATE, 1) = 1
                             rt_sigreturn({mask=[]})                 = -1 EINTR (Interrupted system call)
                                                                                                         epoll_pwait2(4, [{events=EPOLLIN, data={u32=810361712, u64=810361712}}], 1024, NULL, [], 8) = 1
                          accept4(24, {sa_family=AF_INET, sin_port=htons(53206), sin_addr=inet_addr("127.0.0.1")}, [128 => 16], SOCK_CLOEXEC|SOCK_NONBLOCK) = 23
                                                                                                                                                                epoll_ctl(4, EPOLL_CTL_ADD, 23, {events=EPOLLIN, data={u32=810362048, u64=810362048}}) = 0
                                                                            setsockopt(23, SOL_TCP, TCP_NODELAY, [1], 4) = 0
                                                                                                                            accept4(24, 0x7ffedeff1ec0, [128], SOCK_CLOEXEC|SOCK_NONBLOCK) = -1 EAGAIN (Resource temporarily unavailable)
                                                           clock_gettime(CLOCK_MONOTONIC_COARSE, {tv_sec=296577, tv_nsec=580020097}) = 0
                                                                                                                                        epoll_pwait2(4, [{events=EPOLLIN, data={u32=810362048, u64=810362048}}], 1024, NULL, [], 8) = 1
                                                         recvfrom(23, "GET /config/providers HTTP/1.1\r\n"..., 524288, MSG_DONTWAIT|MSG_NOSIGNAL, NULL, NULL) = 349
                                                                                                                                                                   write(14, "INFO  2025-06-30T03:53:14 +10ms "..., 89) = 89
                                              futex(0x72f0b01ec8e0, FUTEX_WAKE_PRIVATE, 1) = 1
                                                                                              futex(0x72f0b0220164, FUTEX_WAKE_PRIVATE, 1) = 1
                                                                                                                                              futex(0x72f0b01ec8e4, FUTEX_WAKE_PRIVATE, 1) = 1
                futex(0x72f0b01ec8e0, FUTEX_WAKE_PRIVATE, 1) = 1
                                                                futex(0x72f0b0220164, FUTEX_WAKE_PRIVATE, 1) = 1
                                                                                                                futex(0x72f0b01ec8e4, FUTEX_WAKE_PRIVATE, 1) = 1
                                                                                                                                                                futex(0x72f0b0220164, FUTEX_WAKE_PRIVATE, 1) = 1
                                  futex(0x72f0b01ec8e0, FUTEX_WAKE_PRIVATE, 1) = 1
                                                                                  sched_yield()                           = 0
                                                                                                                             futex(0x72f0b01ec8e4, FUTEX_WAKE_PRIVATE, 1) = 1
                                                                                                                                                                             sched_yield()                           = 0
                                          futex(0x72f0b01ec8e0, FUTEX_WAKE_PRIVATE, 1) = 1
                                                                                          sched_yield()                           = 0
                                                                                                                                     futex(0x72f0b01ec8e4, FUTEX_WAKE_PRIVATE, 1) = 1
       sched_yield()                           = 0
                                                  write(14, "INFO  2025-06-30T03:53:14 +2ms s"..., 66) = 66
                                                                                                           sendto(23, "HTTP/1.1 200 OK\r\nContent-Type: a"..., 4390, MSG_DONTWAIT|MSG_NOSIGNAL, NULL, 0) = 4390
                                 clock_gettime(CLOCK_MONOTONIC_COARSE, {tv_sec=296577, tv_nsec=583020091}) = 0
                                                                                                              epoll_pwait2(4, [{events=EPOLLIN, data={u32=810320368, u64=810320368}}], 1024, NULL, [], 8) = 1
                               read(8, "\1\0\0\0\0\0\0\0", 8)          = 8
                                                                          clock_gettime(CLOCK_MONOTONIC_COARSE, {tv_sec=296577, tv_nsec=588020080}) = 0
                                                                                                                                                       timerfd_settime(8, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=16000000}}, NULL) = 0
                                                                                    epoll_ctl(4, EPOLL_CTL_ADD, 8, {events=EPOLLIN, data={u32=810320368, u64=810320368}}) = -1 EEXIST (File exists)
                     futex(0x72f0b0514160, FUTEX_WAKE_PRIVATE, 1) = 1
                                                                     epoll_pwait2(4, 0x304bcf10, 1024, NULL, 0x7ffedeff1ec0, 8) = -1 EINTR (Interrupted system call)
                                                                                                                                                                    --- SIGPWR {si_signo=SIGPWR, si_code=SI_TKILL, si_pid=694849, si_uid=1000} ---
                                                                    futex(0x645bd00, FUTEX_WAKE_PRIVATE, 1) = 1
                                                                                                               rt_sigsuspend(~[PWR RTMIN RT_1], 8)     = ? ERESTARTNOHAND (To be restarted if no handler)
                           --- SIGPWR {si_signo=SIGPWR, si_code=SI_TKILL, si_pid=694849, si_uid=1000} ---
                                                                                                         rt_sigreturn({mask=[PWR]})              = -1 EINTR (Interrupted system call)
       futex(0x645bd00, FUTEX_WAKE_PRIVATE, 1) = 1
                                                  rt_sigreturn({mask=[]})                 = -1 EINTR (Interrupted system call)
                                                                                                                              --- SIGPWR {si_signo=SIGPWR, si_code=SI_TKILL, si_pid=694849, si_uid=1000} ---
                              futex(0x645bd00, FUTEX_WAKE_PRIVATE, 1) = 1
                                                                         rt_sigsuspend(~[PWR RTMIN RT_1], 8)     = ? ERESTARTNOHAND (To be restarted if no handler)
                                                                                                                                                                   --- SIGPWR {si_signo=SIGPWR, si_code=SI_TKILL, si_pid=694849, si_uid=1000} ---
                                                                   rt_sigreturn({mask=[PWR]})              = -1 EINTR (Interrupted system call)
                                                                                                                                               futex(0x645bd00, FUTEX_WAKE_PRIVATE, 1) = 1
            rt_sigreturn({mask=[]})                 = -1 EINTR (Interrupted system call)
                                                                                        epoll_pwait2(4, Caught panic:

interface conversion: opencode.MessageMetadataErrorUnion is opencode.MessageMetadataErrorMessageOutputLengthError, not shared.UnknownError

Restoring terminal...

goroutine 329 [running]:
runtime/debug.Stack()
        /opt/hostedtoolcache/go/1.24.4/x64/src/runtime/debug/stack.go:26 +0x5e
runtime/debug.PrintStack()
        /opt/hostedtoolcache/go/1.24.4/x64/src/runtime/debug/stack.go:18 +0x13
github.com/charmbracelet/bubbletea/v2.(*Program).recoverFromPanic(0xc000b3a000, {0xc31e40, 0xc0073fcc90})
        /home/runner/go/pkg/mod/github.com/charmbracelet/bubbletea/v2@v2.0.0-beta.3/tea.go:1134 +0xc5
github.com/charmbracelet/bubbletea/v2.(*Program).handleCommands.func1.1.1()
        /home/runner/go/pkg/mod/github.com/charmbracelet/bubbletea/v2@v2.0.0-beta.3/tea.go:482 +0x3a
panic({0xc31e40?, 0xc0073fcc90?})
        /opt/hostedtoolcache/go/1.24.4/x64/src/runtime/panic.go:792 +0x132
github.com/sst/opencode/internal/components/chat.renderToolInvocation({{{0xc000094d0a, 0x6}, {0xc000094d32, 0x1e}, {0xc000094d1e, 0x4}, {0xc3d780, 0xc00028ec00}, {0xc000094d66, 0x13}, ...}, ...}, ...)
        /home/runner/work/opencode/opencode/packages/tui/internal/components/chat/message.go:348 +0x447b
github.com/sst/opencode/internal/components/chat.(*messagesComponent).renderView(0xc000b23508)
        /home/runner/work/opencode/opencode/packages/tui/internal/components/chat/messages.go:208 +0x138d
github.com/sst/opencode/internal/components/chat.(*messagesComponent).Update.(*messagesComponent).Reload.func3()
        /home/runner/work/opencode/opencode/packages/tui/internal/components/chat/messages.go:418 +0x17
github.com/charmbracelet/bubbletea/v2.(*Program).handleCommands.func1.1()
        /home/runner/go/pkg/mod/github.com/charmbracelet/bubbletea/v2@v2.0.0-beta.3/tea.go:487 +0x7d
created by github.com/charmbracelet/bubbletea/v2.(*Program).handleCommands.func1 in goroutine 102
        /home/runner/go/pkg/mod/github.com/charmbracelet/bubbletea/v2@v2.0.0-beta.3/tea.go:477 +0x131
[{events=EPOLLIN, data={u32=810361824, u64=810361824}}], 1024, NULL, [], 8) = 1
recvfrom(22, "", 524288, MSG_DONTWAIT|MSG_NOSIGNAL, NULL, NULL) = 0
epoll_ctl(4, EPOLL_CTL_DEL, 22, 0x7ffedeff1e78) = 0
close(22)                               = 0
madvise(0x72f0b11a8000, 16384, MADV_DODUMP) = 0
write(14, "INFO  2025-06-30T03:53:32 +426ms"..., 66) = 66
write(14, "INFO  2025-06-30T03:53:32 +0ms s"..., 65) = 65
timerfd_settime(8, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=16000000}}, NULL) = 0
epoll_ctl(4, EPOLL_CTL_ADD, 8, {events=EPOLLIN, data={u32=810320368, u64=810320368}}) = -1 EEXIST (File exists)
clock_gettime(CLOCK_MONOTONIC_COARSE, {tv_sec=296595, tv_nsec=317981679}) = 0
clock_gettime(CLOCK_MONOTONIC_COARSE, {tv_sec=296595, tv_nsec=317981679}) = 0
clock_gettime(CLOCK_MONOTONIC_COARSE, {tv_sec=296595, tv_nsec=317981679}) = 0
epoll_pwait2(4, [{events=EPOLLIN, data={u32=810362048, u64=810362048}}, {events=EPOLLIN, data={u32=175767632, u64=576463793316036688}}], 1024, NULL, [], 8) = 2
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=694873, si_uid=1000, si_status=0, si_utime=346 /* 3.46 s */, si_stime=30 /* 0.30 s */} ---
recvfrom(23, "", 524288, MSG_DONTWAIT|MSG_NOSIGNAL, NULL, NULL) = 0
epoll_ctl(4, EPOLL_CTL_DEL, 23, 0x7ffedeff1e78) = 0
close(23)                               = 0
wait4(694873, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], WNOHANG, {ru_utime={tv_sec=3, tv_usec=597152}, ru_stime={tv_sec=0, tv_usec=323783}, ...}) = 694873
close(25)                               = 0
epoll_ctl(4, EPOLL_CTL_DEL, 24, 0x7ffedeff0d1c) = 0
close(24)                               = 0
futex(0x72f0b01ec8e0, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b0220160, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b01ec8e4, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b01ec8e0, FUTEX_WAKE_PRIVATE, 1) = 1
write(14, "INFO  2025-06-30T03:53:32 +8ms s"..., 65) = 65
madvise(0x72f0b11ac000, 4096, MADV_DODUMP) = 0
pread64(11, "18499835 25769 11239 14486 0 180"..., 256, 0) = 40
clock_gettime(CLOCK_MONOTONIC_COARSE, {tv_sec=296595, tv_nsec=325981662}) = 0
clock_gettime(CLOCK_MONOTONIC_COARSE, {tv_sec=296595, tv_nsec=325981662}) = 0
clock_gettime(CLOCK_MONOTONIC_COARSE, {tv_sec=296595, tv_nsec=325981662}) = 0
futex(0x72f0b00b0160, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00bc164, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00d0160, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00d8160, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00e0164, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00f4164, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00fc164, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00b0164, FUTEX_WAKE_PRIVATE, 1) = 1
sched_yield()                           = 0
futex(0x72f0b00d8160, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00bc160, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00b0160, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00d0164, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00f4164, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00e0160, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00fc160, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00bc160, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00b0160, FUTEX_WAKE_PRIVATE, 1) = 1
sched_yield()                           = 0
madvise(0x72f0b1900000, 131072, MADV_DODUMP) = 0
futex(0x72f0b00d0164, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00f4160, FUTEX_WAKE_PRIVATE, 1) = 1
sched_yield()                           = 0
sched_yield()                           = 0
sched_yield()                           = 0
futex(0x72f0b0514164, FUTEX_WAKE_PRIVATE, 1) = 1
sched_yield()                           = 0
futex(0x72f0b00a1ae4, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 0, NULL, FUTEX_BITSET_MATCH_ANY) = 0
futex(0x72f0b00a1a90, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0x72f0b00fc160, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00b0160, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00d8164, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00e0160, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00d0164, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00f4160, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00bc164, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00fc164, FUTEX_WAKE_PRIVATE, 1) = 1
sched_yield()                           = 0
futex(0x72f0b00d8164, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00d0160, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00e0164, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00bc164, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00bc160, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00d8160, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00f4160, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00b0164, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00e0164, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00d0164, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00d8164, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00d0160, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00fc164, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00bc160, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00f4160, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00b0164, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00d8160, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00e0164, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00d0164, FUTEX_WAKE_PRIVATE, 1) = 1
sched_yield()                           = 0
futex(0x72f0b00fc164, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00d0164, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00f4164, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00b0160, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00d8164, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00bc160, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00e0164, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00fc160, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00d8160, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00fc164, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00d0164, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00f4164, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00b0160, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00bc160, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00e0164, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00d8164, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00fc160, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00b0164, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00fc164, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00d0164, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00f4164, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00bc160, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00e0164, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00d8164, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00b0160, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00fc160, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00b0160, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00b0164, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00bc160, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00f4164, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00fc164, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00d8164, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00e0164, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00e0160, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00d8160, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00d0164, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00b0164, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00bc164, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00f4160, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00fc160, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00e0164, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x72f0b00a1ae0, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 0, NULL, FUTEX_BITSET_MATCH_ANY) = 0
futex(0x72f0b00a1a90, FUTEX_WAKE_PRIVATE, 1) = 0
clock_gettime(CLOCK_MONOTONIC_COARSE, {tv_sec=296595, tv_nsec=331981649}) = 0
pread64(11, "18499835 25769 11239 14486 0 180"..., 256, 0) = 40
pread64(11, "18499835 25769 11239 14486 0 180"..., 256, 0) = 40
sched_yield()                           = 0
rt_sigprocmask(SIG_BLOCK, [TTOU], NULL, 8) = 0
ioctl(0, TCGETS, {c_iflag=ICRNL|IXON|IUTF8, c_oflag=NL0|CR0|TAB0|BS0|VT0|FF0|OPOST|ONLCR, c_cflag=B38400|CS8|CREAD, c_lflag=ISIG|ICANON|ECHO|ECHOE|ECHOK|IEXTEN|ECHOCTL|ECHOKE, ...}) = 0
ioctl(0, TCSETS, {c_iflag=ICRNL|IXON|IUTF8, c_oflag=NL0|CR0|TAB0|BS0|VT0|FF0|OPOST|ONLCR, c_cflag=B38400|CS8|CREAD, c_lflag=ISIG|ICANON|ECHO|ECHOE|ECHOK|IEXTEN|ECHOCTL|ECHOKE, ...}) = 0
ioctl(0, TCGETS, {c_iflag=ICRNL|IXON|IUTF8, c_oflag=NL0|CR0|TAB0|BS0|VT0|FF0|OPOST|ONLCR, c_cflag=B38400|CS8|CREAD, c_lflag=ISIG|ICANON|ECHO|ECHOE|ECHOK|IEXTEN|ECHOCTL|ECHOKE, ...}) = 0
rt_sigprocmask(SIG_UNBLOCK, [TTOU], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [TTOU], NULL, 8) = 0
ioctl(1, TCGETS, {c_iflag=ICRNL|IXON|IUTF8, c_oflag=NL0|CR0|TAB0|BS0|VT0|FF0|OPOST|ONLCR, c_cflag=B38400|CS8|CREAD, c_lflag=ISIG|ICANON|ECHO|ECHOE|ECHOK|IEXTEN|ECHOCTL|ECHOKE, ...}) = 0
ioctl(1, TCSETS, {c_iflag=ICRNL|IXON|IUTF8, c_oflag=NL0|CR0|TAB0|BS0|VT0|FF0|OPOST|ONLCR, c_cflag=B38400|CS8|CREAD, c_lflag=ISIG|ICANON|ECHO|ECHOE|ECHOK|IEXTEN|ECHOCTL|ECHOKE, ...}) = 0
ioctl(1, TCGETS, {c_iflag=ICRNL|IXON|IUTF8, c_oflag=NL0|CR0|TAB0|BS0|VT0|FF0|OPOST|ONLCR, c_cflag=B38400|CS8|CREAD, c_lflag=ISIG|ICANON|ECHO|ECHOE|ECHOK|IEXTEN|ECHOCTL|ECHOKE, ...}) = 0
rt_sigprocmask(SIG_UNBLOCK, [TTOU], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [TTOU], NULL, 8) = 0
ioctl(2, TCGETS, {c_iflag=ICRNL|IXON|IUTF8, c_oflag=NL0|CR0|TAB0|BS0|VT0|FF0|OPOST|ONLCR, c_cflag=B38400|CS8|CREAD, c_lflag=ISIG|ICANON|ECHO|ECHOE|ECHOK|IEXTEN|ECHOCTL|ECHOKE, ...}) = 0
ioctl(2, TCSETS, {c_iflag=ICRNL|IXON|IUTF8, c_oflag=NL0|CR0|TAB0|BS0|VT0|FF0|OPOST|ONLCR, c_cflag=B38400|CS8|CREAD, c_lflag=ISIG|ICANON|ECHO|ECHOE|ECHOK|IEXTEN|ECHOCTL|ECHOKE, ...}) = 0
ioctl(2, TCGETS, {c_iflag=ICRNL|IXON|IUTF8, c_oflag=NL0|CR0|TAB0|BS0|VT0|FF0|OPOST|ONLCR, c_cflag=B38400|CS8|CREAD, c_lflag=ISIG|ICANON|ECHO|ECHOE|ECHOK|IEXTEN|ECHOCTL|ECHOKE, ...}) = 0
rt_sigprocmask(SIG_UNBLOCK, [TTOU], NULL, 8) = 0
exit_group(0)                           = ?
+++ exited with 0 +++

Originally created by @vian21 on GitHub (Jun 30, 2025). Originally assigned to: @adamdotdevin on GitHub. I was running opencode with Claude (Github). I asked it to complete some test file with missing tests given a test plan (table in .md). OpenCode crashed after doing some `grep` to check what tests were missing. Tests had a prefix + numbere.g `test_[number]` I can't even resume the session. Here is the end of `strace` when I try to resume the session and openCode crashes immediately. ```sh $ opencode --print-logs INFO 2025-06-30T04:01:11 +29ms service=default version=0.1.165 args=--print-logs opencode INFO 2025-06-30T04:01:11 +0ms service=app cwd=OMITTED creating INFO 2025-06-30T04:01:11 +3ms service=app git INFO 2025-06-30T04:01:11 +1ms service=bus type=storage.write subscribing INFO 2025-06-30T04:01:11 +0ms service=app name=bus registering service INFO 2025-06-30T04:01:11 +0ms service=format init INFO 2025-06-30T04:01:11 +0ms service=bus type=file.edited subscribing INFO 2025-06-30T04:01:11 +1ms service=config.hooks init INFO 2025-06-30T04:01:11 +0ms service=bus type=file.edited subscribing INFO 2025-06-30T04:01:11 +0ms service=bus type=session.idle subscribing INFO 2025-06-30T04:01:11 +0ms service=app name=provider registering service INFO 2025-06-30T04:01:11 +1ms service=app name=config registering service INFO 2025-06-30T04:01:11 +1ms service=config loaded INFO 2025-06-30T04:01:11 +1ms service=models.dev refreshing INFO 2025-06-30T04:01:11 +1ms service=provider init INFO 2025-06-30T04:01:11 +1ms service=provider providerID=github-copilot found INFO 2025-06-30T04:01:11 +31ms service=server method=GET path=/config request INFO 2025-06-30T04:01:11 +0ms service=server duration=0 response INFO 2025-06-30T04:01:11 +5ms service=server method=GET path=/event request INFO 2025-06-30T04:01:11 +0ms service=server event connected INFO 2025-06-30T04:01:11 +2ms service=bus type=* subscribing INFO 2025-06-30T04:01:11 +1ms service=server duration=3 response INFO 2025-06-30T04:01:11 +10ms service=server method=GET path=/config/providers request INFO 2025-06-30T04:01:11 +1ms service=server duration=1 response Caught panic: interface conversion: opencode.MessageMetadataErrorUnion is opencode.MessageMetadataErrorMessageOutputLengthError, not shared.UnknownError Restoring terminal... goroutine 245 [running]: runtime/debug.Stack() /opt/hostedtoolcache/go/1.24.4/x64/src/runtime/debug/stack.go:26 +0x5e runtime/debug.PrintStack() /opt/hostedtoolcache/go/1.24.4/x64/src/runtime/debug/stack.go:18 +0x13 github.com/charmbracelet/bubbletea/v2.(*Program).recoverFromPanic(0xc000af8000, {0xc31e40, 0xc0053cac30}) /home/runner/go/pkg/mod/github.com/charmbracelet/bubbletea/v2@v2.0.0-beta.3/tea.go:1134 +0xc5 github.com/charmbracelet/bubbletea/v2.(*Program).handleCommands.func1.1.1() /home/runner/go/pkg/mod/github.com/charmbracelet/bubbletea/v2@v2.0.0-beta.3/tea.go:482 +0x3a panic({0xc31e40?, 0xc0053cac30?}) /opt/hostedtoolcache/go/1.24.4/x64/src/runtime/panic.go:792 +0x132 github.com/sst/opencode/internal/components/chat.renderToolInvocation({{{0xc00070478a, 0x6}, {0xc0007047b2, 0x1e}, {0xc00070479e, 0x4}, {0xc3d780, 0xc000213980}, {0xc0007047e6, 0x13}, ...}, ...}, ...) /home/runner/work/opencode/opencode/packages/tui/internal/components/chat/message.go:348 +0x447b github.com/sst/opencode/internal/components/chat.(*messagesComponent).renderView(0xc000adf508) /home/runner/work/opencode/opencode/packages/tui/internal/components/chat/messages.go:208 +0x138d github.com/sst/opencode/internal/components/chat.(*messagesComponent).Update.(*messagesComponent).Reload.func3() /home/runner/work/opencode/opencode/packages/tui/internal/components/chat/messages.go:418 +0x17 github.com/charmbracelet/bubbletea/v2.(*Program).handleCommands.func1.1() /home/runner/go/pkg/mod/github.com/charmbracelet/bubbletea/v2@v2.0.0-beta.3/tea.go:487 +0x7d created by github.com/charmbracelet/bubbletea/v2.(*Program).handleCommands.func1 in goroutine 64 /home/runner/go/pkg/mod/github.com/charmbracelet/bubbletea/v2@v2.0.0-beta.3/tea.go:477 +0x131 INFO 2025-06-30T04:01:19 +431ms service=bus type=* unsubscribing INFO 2025-06-30T04:01:19 +0ms service=server event disconnected INFO 2025-06-30T04:01:19 +7ms service=app name=session shutdown ``` ### Strace ```sh write(14, "INFO 2025-06-30T03:53:14 +5ms s"..., 77) = 77 write(14, "INFO 2025-06-30T03:53:14 +0ms s"..., 62) = 62 pread64(11, "18499630 25987 10883 14486 0 180"..., 256, 0) = 40 write(14, "INFO 2025-06-30T03:53:14 +1ms s"..., 62) = 62 pread64(11, "18499630 26051 10915 14486 0 180"..., 256, 0) = 40 write(14, "INFO 2025-06-30T03:53:14 +1ms s"..., 66) = 66 sendto(22, "HTTP/1.1 200 OK\r\nContent-Type: t"..., 181, MSG_DONTWAIT|MSG_NOSIGNAL, NULL, 0) = 181 clock_gettime(CLOCK_MONOTONIC_COARSE, {tv_sec=296577, tv_nsec=572020115}) = 0 epoll_pwait2(4, [{events=EPOLLIN, data={u32=810320368, u64=810320368}}], 1024, NULL, [], 8) = 1 read(8, "\1\0\0\0\0\0\0\0", 8) = 8 clock_gettime(CLOCK_MONOTONIC_COARSE, {tv_sec=296577, tv_nsec=572020115}) = 0 timerfd_settime(8, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=16000000}}, NULL) = 0 epoll_ctl(4, EPOLL_CTL_ADD, 8, {events=EPOLLIN, data={u32=810320368, u64=810320368}}) = -1 EEXIST (File exists) futex(0x72f0b01ec8e0, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b0514164, FUTEX_WAKE_PRIVATE, 1) = 1 epoll_pwait2(4, 0x304bcf10, 1024, NULL, 0x7ffedeff1ec0, 8) = -1 EINTR (Interrupted system call) --- SIGPWR {si_signo=SIGPWR, si_code=SI_TKILL, si_pid=694849, si_uid=1000} --- futex(0x645bd00, FUTEX_WAKE_PRIVATE, 1) = 1 rt_sigsuspend(~[PWR RTMIN RT_1], 8) = ? ERESTARTNOHAND (To be restarted if no handler) --- SIGPWR {si_signo=SIGPWR, si_code=SI_TKILL, si_pid=694849, si_uid=1000} --- rt_sigreturn({mask=[PWR]}) = -1 EINTR (Interrupted system call) futex(0x645bd00, FUTEX_WAKE_PRIVATE, 1) = 1 rt_sigreturn({mask=[]}) = -1 EINTR (Interrupted system call) --- SIGPWR {si_signo=SIGPWR, si_code=SI_TKILL, si_pid=694849, si_uid=1000} --- futex(0x645bd00, FUTEX_WAKE_PRIVATE, 1) = 1 rt_sigsuspend(~[PWR RTMIN RT_1], 8) = ? ERESTARTNOHAND (To be restarted if no handler) --- SIGPWR {si_signo=SIGPWR, si_code=SI_TKILL, si_pid=694849, si_uid=1000} --- rt_sigreturn({mask=[PWR]}) = -1 EINTR (Interrupted system call) futex(0x645bd00, FUTEX_WAKE_PRIVATE, 1) = 1 rt_sigreturn({mask=[]}) = -1 EINTR (Interrupted system call) epoll_pwait2(4, [{events=EPOLLIN, data={u32=810361712, u64=810361712}}], 1024, NULL, [], 8) = 1 accept4(24, {sa_family=AF_INET, sin_port=htons(53206), sin_addr=inet_addr("127.0.0.1")}, [128 => 16], SOCK_CLOEXEC|SOCK_NONBLOCK) = 23 epoll_ctl(4, EPOLL_CTL_ADD, 23, {events=EPOLLIN, data={u32=810362048, u64=810362048}}) = 0 setsockopt(23, SOL_TCP, TCP_NODELAY, [1], 4) = 0 accept4(24, 0x7ffedeff1ec0, [128], SOCK_CLOEXEC|SOCK_NONBLOCK) = -1 EAGAIN (Resource temporarily unavailable) clock_gettime(CLOCK_MONOTONIC_COARSE, {tv_sec=296577, tv_nsec=580020097}) = 0 epoll_pwait2(4, [{events=EPOLLIN, data={u32=810362048, u64=810362048}}], 1024, NULL, [], 8) = 1 recvfrom(23, "GET /config/providers HTTP/1.1\r\n"..., 524288, MSG_DONTWAIT|MSG_NOSIGNAL, NULL, NULL) = 349 write(14, "INFO 2025-06-30T03:53:14 +10ms "..., 89) = 89 futex(0x72f0b01ec8e0, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b0220164, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b01ec8e4, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b01ec8e0, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b0220164, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b01ec8e4, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b0220164, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b01ec8e0, FUTEX_WAKE_PRIVATE, 1) = 1 sched_yield() = 0 futex(0x72f0b01ec8e4, FUTEX_WAKE_PRIVATE, 1) = 1 sched_yield() = 0 futex(0x72f0b01ec8e0, FUTEX_WAKE_PRIVATE, 1) = 1 sched_yield() = 0 futex(0x72f0b01ec8e4, FUTEX_WAKE_PRIVATE, 1) = 1 sched_yield() = 0 write(14, "INFO 2025-06-30T03:53:14 +2ms s"..., 66) = 66 sendto(23, "HTTP/1.1 200 OK\r\nContent-Type: a"..., 4390, MSG_DONTWAIT|MSG_NOSIGNAL, NULL, 0) = 4390 clock_gettime(CLOCK_MONOTONIC_COARSE, {tv_sec=296577, tv_nsec=583020091}) = 0 epoll_pwait2(4, [{events=EPOLLIN, data={u32=810320368, u64=810320368}}], 1024, NULL, [], 8) = 1 read(8, "\1\0\0\0\0\0\0\0", 8) = 8 clock_gettime(CLOCK_MONOTONIC_COARSE, {tv_sec=296577, tv_nsec=588020080}) = 0 timerfd_settime(8, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=16000000}}, NULL) = 0 epoll_ctl(4, EPOLL_CTL_ADD, 8, {events=EPOLLIN, data={u32=810320368, u64=810320368}}) = -1 EEXIST (File exists) futex(0x72f0b0514160, FUTEX_WAKE_PRIVATE, 1) = 1 epoll_pwait2(4, 0x304bcf10, 1024, NULL, 0x7ffedeff1ec0, 8) = -1 EINTR (Interrupted system call) --- SIGPWR {si_signo=SIGPWR, si_code=SI_TKILL, si_pid=694849, si_uid=1000} --- futex(0x645bd00, FUTEX_WAKE_PRIVATE, 1) = 1 rt_sigsuspend(~[PWR RTMIN RT_1], 8) = ? ERESTARTNOHAND (To be restarted if no handler) --- SIGPWR {si_signo=SIGPWR, si_code=SI_TKILL, si_pid=694849, si_uid=1000} --- rt_sigreturn({mask=[PWR]}) = -1 EINTR (Interrupted system call) futex(0x645bd00, FUTEX_WAKE_PRIVATE, 1) = 1 rt_sigreturn({mask=[]}) = -1 EINTR (Interrupted system call) --- SIGPWR {si_signo=SIGPWR, si_code=SI_TKILL, si_pid=694849, si_uid=1000} --- futex(0x645bd00, FUTEX_WAKE_PRIVATE, 1) = 1 rt_sigsuspend(~[PWR RTMIN RT_1], 8) = ? ERESTARTNOHAND (To be restarted if no handler) --- SIGPWR {si_signo=SIGPWR, si_code=SI_TKILL, si_pid=694849, si_uid=1000} --- rt_sigreturn({mask=[PWR]}) = -1 EINTR (Interrupted system call) futex(0x645bd00, FUTEX_WAKE_PRIVATE, 1) = 1 rt_sigreturn({mask=[]}) = -1 EINTR (Interrupted system call) epoll_pwait2(4, Caught panic: interface conversion: opencode.MessageMetadataErrorUnion is opencode.MessageMetadataErrorMessageOutputLengthError, not shared.UnknownError Restoring terminal... goroutine 329 [running]: runtime/debug.Stack() /opt/hostedtoolcache/go/1.24.4/x64/src/runtime/debug/stack.go:26 +0x5e runtime/debug.PrintStack() /opt/hostedtoolcache/go/1.24.4/x64/src/runtime/debug/stack.go:18 +0x13 github.com/charmbracelet/bubbletea/v2.(*Program).recoverFromPanic(0xc000b3a000, {0xc31e40, 0xc0073fcc90}) /home/runner/go/pkg/mod/github.com/charmbracelet/bubbletea/v2@v2.0.0-beta.3/tea.go:1134 +0xc5 github.com/charmbracelet/bubbletea/v2.(*Program).handleCommands.func1.1.1() /home/runner/go/pkg/mod/github.com/charmbracelet/bubbletea/v2@v2.0.0-beta.3/tea.go:482 +0x3a panic({0xc31e40?, 0xc0073fcc90?}) /opt/hostedtoolcache/go/1.24.4/x64/src/runtime/panic.go:792 +0x132 github.com/sst/opencode/internal/components/chat.renderToolInvocation({{{0xc000094d0a, 0x6}, {0xc000094d32, 0x1e}, {0xc000094d1e, 0x4}, {0xc3d780, 0xc00028ec00}, {0xc000094d66, 0x13}, ...}, ...}, ...) /home/runner/work/opencode/opencode/packages/tui/internal/components/chat/message.go:348 +0x447b github.com/sst/opencode/internal/components/chat.(*messagesComponent).renderView(0xc000b23508) /home/runner/work/opencode/opencode/packages/tui/internal/components/chat/messages.go:208 +0x138d github.com/sst/opencode/internal/components/chat.(*messagesComponent).Update.(*messagesComponent).Reload.func3() /home/runner/work/opencode/opencode/packages/tui/internal/components/chat/messages.go:418 +0x17 github.com/charmbracelet/bubbletea/v2.(*Program).handleCommands.func1.1() /home/runner/go/pkg/mod/github.com/charmbracelet/bubbletea/v2@v2.0.0-beta.3/tea.go:487 +0x7d created by github.com/charmbracelet/bubbletea/v2.(*Program).handleCommands.func1 in goroutine 102 /home/runner/go/pkg/mod/github.com/charmbracelet/bubbletea/v2@v2.0.0-beta.3/tea.go:477 +0x131 [{events=EPOLLIN, data={u32=810361824, u64=810361824}}], 1024, NULL, [], 8) = 1 recvfrom(22, "", 524288, MSG_DONTWAIT|MSG_NOSIGNAL, NULL, NULL) = 0 epoll_ctl(4, EPOLL_CTL_DEL, 22, 0x7ffedeff1e78) = 0 close(22) = 0 madvise(0x72f0b11a8000, 16384, MADV_DODUMP) = 0 write(14, "INFO 2025-06-30T03:53:32 +426ms"..., 66) = 66 write(14, "INFO 2025-06-30T03:53:32 +0ms s"..., 65) = 65 timerfd_settime(8, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=16000000}}, NULL) = 0 epoll_ctl(4, EPOLL_CTL_ADD, 8, {events=EPOLLIN, data={u32=810320368, u64=810320368}}) = -1 EEXIST (File exists) clock_gettime(CLOCK_MONOTONIC_COARSE, {tv_sec=296595, tv_nsec=317981679}) = 0 clock_gettime(CLOCK_MONOTONIC_COARSE, {tv_sec=296595, tv_nsec=317981679}) = 0 clock_gettime(CLOCK_MONOTONIC_COARSE, {tv_sec=296595, tv_nsec=317981679}) = 0 epoll_pwait2(4, [{events=EPOLLIN, data={u32=810362048, u64=810362048}}, {events=EPOLLIN, data={u32=175767632, u64=576463793316036688}}], 1024, NULL, [], 8) = 2 --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=694873, si_uid=1000, si_status=0, si_utime=346 /* 3.46 s */, si_stime=30 /* 0.30 s */} --- recvfrom(23, "", 524288, MSG_DONTWAIT|MSG_NOSIGNAL, NULL, NULL) = 0 epoll_ctl(4, EPOLL_CTL_DEL, 23, 0x7ffedeff1e78) = 0 close(23) = 0 wait4(694873, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], WNOHANG, {ru_utime={tv_sec=3, tv_usec=597152}, ru_stime={tv_sec=0, tv_usec=323783}, ...}) = 694873 close(25) = 0 epoll_ctl(4, EPOLL_CTL_DEL, 24, 0x7ffedeff0d1c) = 0 close(24) = 0 futex(0x72f0b01ec8e0, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b0220160, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b01ec8e4, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b01ec8e0, FUTEX_WAKE_PRIVATE, 1) = 1 write(14, "INFO 2025-06-30T03:53:32 +8ms s"..., 65) = 65 madvise(0x72f0b11ac000, 4096, MADV_DODUMP) = 0 pread64(11, "18499835 25769 11239 14486 0 180"..., 256, 0) = 40 clock_gettime(CLOCK_MONOTONIC_COARSE, {tv_sec=296595, tv_nsec=325981662}) = 0 clock_gettime(CLOCK_MONOTONIC_COARSE, {tv_sec=296595, tv_nsec=325981662}) = 0 clock_gettime(CLOCK_MONOTONIC_COARSE, {tv_sec=296595, tv_nsec=325981662}) = 0 futex(0x72f0b00b0160, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00bc164, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00d0160, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00d8160, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00e0164, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00f4164, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00fc164, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00b0164, FUTEX_WAKE_PRIVATE, 1) = 1 sched_yield() = 0 futex(0x72f0b00d8160, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00bc160, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00b0160, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00d0164, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00f4164, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00e0160, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00fc160, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00bc160, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00b0160, FUTEX_WAKE_PRIVATE, 1) = 1 sched_yield() = 0 madvise(0x72f0b1900000, 131072, MADV_DODUMP) = 0 futex(0x72f0b00d0164, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00f4160, FUTEX_WAKE_PRIVATE, 1) = 1 sched_yield() = 0 sched_yield() = 0 sched_yield() = 0 futex(0x72f0b0514164, FUTEX_WAKE_PRIVATE, 1) = 1 sched_yield() = 0 futex(0x72f0b00a1ae4, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 0, NULL, FUTEX_BITSET_MATCH_ANY) = 0 futex(0x72f0b00a1a90, FUTEX_WAKE_PRIVATE, 1) = 0 futex(0x72f0b00fc160, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00b0160, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00d8164, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00e0160, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00d0164, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00f4160, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00bc164, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00fc164, FUTEX_WAKE_PRIVATE, 1) = 1 sched_yield() = 0 futex(0x72f0b00d8164, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00d0160, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00e0164, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00bc164, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00bc160, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00d8160, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00f4160, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00b0164, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00e0164, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00d0164, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00d8164, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00d0160, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00fc164, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00bc160, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00f4160, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00b0164, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00d8160, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00e0164, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00d0164, FUTEX_WAKE_PRIVATE, 1) = 1 sched_yield() = 0 futex(0x72f0b00fc164, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00d0164, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00f4164, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00b0160, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00d8164, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00bc160, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00e0164, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00fc160, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00d8160, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00fc164, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00d0164, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00f4164, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00b0160, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00bc160, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00e0164, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00d8164, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00fc160, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00b0164, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00fc164, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00d0164, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00f4164, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00bc160, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00e0164, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00d8164, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00b0160, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00fc160, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00b0160, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00b0164, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00bc160, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00f4164, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00fc164, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00d8164, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00e0164, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00e0160, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00d8160, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00d0164, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00b0164, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00bc164, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00f4160, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00fc160, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00e0164, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x72f0b00a1ae0, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 0, NULL, FUTEX_BITSET_MATCH_ANY) = 0 futex(0x72f0b00a1a90, FUTEX_WAKE_PRIVATE, 1) = 0 clock_gettime(CLOCK_MONOTONIC_COARSE, {tv_sec=296595, tv_nsec=331981649}) = 0 pread64(11, "18499835 25769 11239 14486 0 180"..., 256, 0) = 40 pread64(11, "18499835 25769 11239 14486 0 180"..., 256, 0) = 40 sched_yield() = 0 rt_sigprocmask(SIG_BLOCK, [TTOU], NULL, 8) = 0 ioctl(0, TCGETS, {c_iflag=ICRNL|IXON|IUTF8, c_oflag=NL0|CR0|TAB0|BS0|VT0|FF0|OPOST|ONLCR, c_cflag=B38400|CS8|CREAD, c_lflag=ISIG|ICANON|ECHO|ECHOE|ECHOK|IEXTEN|ECHOCTL|ECHOKE, ...}) = 0 ioctl(0, TCSETS, {c_iflag=ICRNL|IXON|IUTF8, c_oflag=NL0|CR0|TAB0|BS0|VT0|FF0|OPOST|ONLCR, c_cflag=B38400|CS8|CREAD, c_lflag=ISIG|ICANON|ECHO|ECHOE|ECHOK|IEXTEN|ECHOCTL|ECHOKE, ...}) = 0 ioctl(0, TCGETS, {c_iflag=ICRNL|IXON|IUTF8, c_oflag=NL0|CR0|TAB0|BS0|VT0|FF0|OPOST|ONLCR, c_cflag=B38400|CS8|CREAD, c_lflag=ISIG|ICANON|ECHO|ECHOE|ECHOK|IEXTEN|ECHOCTL|ECHOKE, ...}) = 0 rt_sigprocmask(SIG_UNBLOCK, [TTOU], NULL, 8) = 0 rt_sigprocmask(SIG_BLOCK, [TTOU], NULL, 8) = 0 ioctl(1, TCGETS, {c_iflag=ICRNL|IXON|IUTF8, c_oflag=NL0|CR0|TAB0|BS0|VT0|FF0|OPOST|ONLCR, c_cflag=B38400|CS8|CREAD, c_lflag=ISIG|ICANON|ECHO|ECHOE|ECHOK|IEXTEN|ECHOCTL|ECHOKE, ...}) = 0 ioctl(1, TCSETS, {c_iflag=ICRNL|IXON|IUTF8, c_oflag=NL0|CR0|TAB0|BS0|VT0|FF0|OPOST|ONLCR, c_cflag=B38400|CS8|CREAD, c_lflag=ISIG|ICANON|ECHO|ECHOE|ECHOK|IEXTEN|ECHOCTL|ECHOKE, ...}) = 0 ioctl(1, TCGETS, {c_iflag=ICRNL|IXON|IUTF8, c_oflag=NL0|CR0|TAB0|BS0|VT0|FF0|OPOST|ONLCR, c_cflag=B38400|CS8|CREAD, c_lflag=ISIG|ICANON|ECHO|ECHOE|ECHOK|IEXTEN|ECHOCTL|ECHOKE, ...}) = 0 rt_sigprocmask(SIG_UNBLOCK, [TTOU], NULL, 8) = 0 rt_sigprocmask(SIG_BLOCK, [TTOU], NULL, 8) = 0 ioctl(2, TCGETS, {c_iflag=ICRNL|IXON|IUTF8, c_oflag=NL0|CR0|TAB0|BS0|VT0|FF0|OPOST|ONLCR, c_cflag=B38400|CS8|CREAD, c_lflag=ISIG|ICANON|ECHO|ECHOE|ECHOK|IEXTEN|ECHOCTL|ECHOKE, ...}) = 0 ioctl(2, TCSETS, {c_iflag=ICRNL|IXON|IUTF8, c_oflag=NL0|CR0|TAB0|BS0|VT0|FF0|OPOST|ONLCR, c_cflag=B38400|CS8|CREAD, c_lflag=ISIG|ICANON|ECHO|ECHOE|ECHOK|IEXTEN|ECHOCTL|ECHOKE, ...}) = 0 ioctl(2, TCGETS, {c_iflag=ICRNL|IXON|IUTF8, c_oflag=NL0|CR0|TAB0|BS0|VT0|FF0|OPOST|ONLCR, c_cflag=B38400|CS8|CREAD, c_lflag=ISIG|ICANON|ECHO|ECHOE|ECHOK|IEXTEN|ECHOCTL|ECHOKE, ...}) = 0 rt_sigprocmask(SIG_UNBLOCK, [TTOU], NULL, 8) = 0 exit_group(0) = ? +++ exited with 0 +++ ```
yindo closed this issue 2026-02-16 17:26:36 -05:00
Author
Owner

@thdxr commented on GitHub (Jun 30, 2025):

do the SDKs need regenerating or something?

@thdxr commented on GitHub (Jun 30, 2025): do the SDKs need regenerating or something?
Author
Owner

@rekram1-node commented on GitHub (Dec 27, 2025):

[automated] Closing due to 90+ days of inactivity. Feel free to reopen if you still need this!

@rekram1-node commented on GitHub (Dec 27, 2025): [automated] Closing due to 90+ days of inactivity. Feel free to reopen if you still need this!
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: anomalyco/opencode#399