Skip to content

bug: Golang SIGSEGV: segmentation violation #2233

@davidjeddy

Description

@davidjeddy

Describe the Bug

When trying to run asdf-vm in a Fedora 42 AMD64 container on a Fedora 42 ARM guest VM on in MacBoo M3 host
(f42 container <- f42 VM <- Mac M3 host) asdf-vm return a Golang SIGSEGV violation.

This occurs no matter the plugin being added (ie, all).

Steps to Reproduce

  • Build a Fedora 42 AMD64 container from a Fedora 42 ARM64
  • Shell into the container
  • Run asdf plugin add ...
  • Observe seg failts

Expected Behaviour

Plugins to load without error.

Actual Behaviour

SIGSEGV: segmentation violation
PC=0x43430e m=4 sigcode=1 addr=0xffffffff870be060

goroutine 0 gp=0xc0000841c0 m=4 mp=0xc000080008 [idle]:
runtime.netpoll(0xc00002e000?)
	/usr/local/go/src/runtime/netpoll_epoll.go:166 +0x24e fp=0xc000097db8 sp=0xc000097730 pc=0x43430e
runtime.findRunnable()
	/usr/local/go/src/runtime/proc.go:3580 +0x8c5 fp=0xc000097f30 sp=0xc000097db8 pc=0x4409e5
runtime.schedule()
	/usr/local/go/src/runtime/proc.go:3995 +0xb1 fp=0xc000097f68 sp=0xc000097f30 pc=0x441f51
runtime.park_m(0xc000007340)
	/usr/local/go/src/runtime/proc.go:4102 +0x1eb fp=0xc000097fc0 sp=0xc000097f68 pc=0x44236b
runtime.mcall()
	/usr/local/go/src/runtime/asm_amd64.s:459 +0x4e fp=0xc000097fd8 sp=0xc000097fc0 pc=0x473aae

goroutine 1 gp=0xc0000061c0 m=nil [runnable]:
runtime.asyncPreempt2()
	/usr/local/go/src/runtime/preempt.go:308 +0x39 fp=0xc0001225e0 sp=0xc0001225c0 pc=0x439319
runtime.asyncPreempt()
	/usr/local/go/src/runtime/preempt_amd64.s:53 +0xdb fp=0xc000122768 sp=0xc0001225e0 pc=0x476e9b
os/exec.(*Cmd).awaitGoroutines(0x615580, 0x5dc600)
	/usr/local/go/src/os/exec/exec.go:943 +0xf fp=0xc000122770 sp=0xc000122768 pc=0x55404f
os/exec.(*Cmd).Wait(0xc000002600)
	/usr/local/go/src/os/exec/exec.go:924 +0x16c fp=0xc0001227d0 sp=0xc000122770 pc=0x553f0c
os/exec.(*Cmd).Run(0xc000002600)
	/usr/local/go/src/os/exec/exec.go:610 +0x2d fp=0xc0001227e8 sp=0xc0001227d0 pc=0x552a6d
github.com/asdf-vm/asdf/internal/execute.Command.Run({{0x61e7a6, 0x3}, {0x0, 0x0}, {0xc00018e1a0, 0x4, 0x4}, {0x0, 0x0}, {0x67c018, ...}, ...})
	/github/workspace/internal/execute/execute.go:63 +0x2cf fp=0xc000122878 sp=0xc0001227e8 pc=0x556f6f
github.com/asdf-vm/asdf/internal/git.exec({0xc00018e190?, 0x20?, 0xc00018cb40?})
	/github/workspace/internal/git/git.go:171 +0x158 fp=0xc0001229e8 sp=0xc000122878 pc=0x558798
github.com/asdf-vm/asdf/internal/git.repositoryExists({0xc000020100, 0x20})
	/github/workspace/internal/git/git.go:185 +0xe7 fp=0xc000122a10 sp=0xc0001229e8 pc=0x558927
github.com/asdf-vm/asdf/internal/git.Repo.Head({{0xc000020100?, 0x44b8a9?}, {0x0?, 0x88763b88?}})
	/github/workspace/internal/git/git.go:60 +0x2b fp=0xc000122a58 sp=0xc000122a10 pc=0x5577cb
github.com/asdf-vm/asdf/internal/git.Repo.Update({{0xc000020100?, 0x6292ef?}, {0x0?, 0xc0001bec38?}}, {0x0, 0x0})
	/github/workspace/internal/git/git.go:94 +0x5f fp=0xc000122bd0 sp=0xc000122a58 pc=0x557b1f
github.com/asdf-vm/asdf/internal/git.(*Repo).Update(0xb?, {0x0?, 0x20?})
	<autogenerated>:1 +0x48 fp=0xc000122c10 sp=0xc000122bd0 pc=0x558bc8
github.com/asdf-vm/asdf/internal/pluginindex.PluginIndex.doUpdate({{0x67d630, 0xc00018cae0}, {0xc000020100, 0x20}, {0x62ba93, 0x2b}, 0x0, 0x3c})
	/github/workspace/internal/pluginindex/pluginindex.go:107 +0x51 fp=0xc000122c58 sp=0xc000122c10 pc=0x5594f1
github.com/asdf-vm/asdf/internal/pluginindex.PluginIndex.Refresh({{0x67d630, 0xc00018cae0}, {0xc000020100, 0x20}, {0x62ba93, 0x2b}, 0x0, 0x3c})
	/github/workspace/internal/pluginindex/pluginindex.go:91 +0x1d1 fp=0xc000122cb8 sp=0xc000122c58 pc=0x559411
github.com/asdf-vm/asdf/internal/pluginindex.PluginIndex.GetPluginSourceURL({{0x67d630, 0xc00018cae0}, {0xc000020100, 0x20}, {0x62ba93, 0x2b}, 0x0, 0x3c}, {0xffff879ef5ce, 0x5})
	/github/workspace/internal/pluginindex/pluginindex.go:119 +0x68 fp=0xc000122d08 sp=0xc000122cb8 pc=0x559628
github.com/asdf-vm/asdf/internal/plugins.Add({{0xc000018065, 0xd}, {0xc000018138, 0x15}, {0x621030, 0xe}, {0xc0000180f0, 0x13}, {0x0, 0x0, ...}, ...}, ...)
	/github/workspace/internal/plugins/plugins.go:396 +0x2f7 fp=0xc000122f68 sp=0xc000122d08 pc=0x55ca97
github.com/asdf-vm/asdf/internal/cli.pluginAddCommand(0x5d131b?, {{0xc000018065, 0xd}, {0xc000018138, 0x15}, {0x621030, 0xe}, {0xc0000180f0, 0x13}, {0x0, ...}, ...}, ...)
	/github/workspace/internal/cli/cli.go:721 +0xab fp=0xc000123090 sp=0xc000122f68 pc=0x5bb22b
github.com/asdf-vm/asdf/internal/cli.Execute.func12({0xc0001a0288?, 0x67d518?}, 0xc0001a0288)
	/github/workspace/internal/cli/cli.go:195 +0x23e fp=0xc0001232f8 sp=0xc000123090 pc=0x5b5e3e
github.com/urfave/cli/v3.(*Command).run(0xc0001a0288, {0x67d518, 0xc00002f9e0}, {0xc00018c840, 0x2, 0x2})
	/go/pkg/mod/github.com/urfave/cli/v3@v3.3.3/command_run.go:336 +0x2674 fp=0xc0001236b8 sp=0xc0001232f8 pc=0x59da54
github.com/urfave/cli/v3.(*Command).run(0xc0001a0008, {0x67d518, 0xc00002f8c0}, {0xc00002f7d0, 0x3, 0x3})
	/go/pkg/mod/github.com/urfave/cli/v3@v3.3.3/command_run.go:274 +0x1ee5 fp=0xc000123a78 sp=0xc0001236b8 pc=0x59d2c5
github.com/urfave/cli/v3.(*Command).run(0xc00019e008, {0x67d518, 0xc00002e840}, {0xc000014100, 0x4, 0x4})
	/go/pkg/mod/github.com/urfave/cli/v3@v3.3.3/command_run.go:274 +0x1ee5 fp=0xc000123e38 sp=0xc000123a78 pc=0x59d2c5
github.com/urfave/cli/v3.(*Command).Run(...)
	/go/pkg/mod/github.com/urfave/cli/v3@v3.3.3/command_run.go:94
github.com/asdf-vm/asdf/internal/cli.Execute({0xc000020060, 0x1a})
	/github/workspace/internal/cli/cli.go:347 +0x1950 fp=0xc000123f30 sp=0xc000123e38 pc=0x5b5410
main.main()
	/github/workspace/cmd/asdf/main.go:18 +0x2a fp=0xc000123f50 sp=0xc000123f30 pc=0x5c5c6a
runtime.main()
	/usr/local/go/src/runtime/proc.go:272 +0x28b fp=0xc000123fe0 sp=0xc000123f50 pc=0x43a78b
runtime.goexit({})
	/usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc000123fe8 sp=0xc000123fe0 pc=0x475961

goroutine 2 gp=0xc000006700 m=nil [force gc (idle)]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
	/usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc000042fa8 sp=0xc000042f88 pc=0x46e1ee
runtime.goparkunlock(...)
	/usr/local/go/src/runtime/proc.go:430
runtime.forcegchelper()
	/usr/local/go/src/runtime/proc.go:337 +0xb3 fp=0xc000042fe0 sp=0xc000042fa8 pc=0x43aad3
runtime.goexit({})
	/usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc000042fe8 sp=0xc000042fe0 pc=0x475961
created by runtime.init.7 in goroutine 1
	/usr/local/go/src/runtime/proc.go:325 +0x1a

goroutine 17 gp=0xc000104380 m=nil [GC sweep wait]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
	/usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc00003e780 sp=0xc00003e760 pc=0x46e1ee
runtime.goparkunlock(...)
	/usr/local/go/src/runtime/proc.go:430
runtime.bgsweep(0xc000110000)
	/usr/local/go/src/runtime/mgcsweep.go:277 +0x94 fp=0xc00003e7c8 sp=0xc00003e780 pc=0x425834
runtime.gcenable.gowrap1()
	/usr/local/go/src/runtime/mgc.go:204 +0x25 fp=0xc00003e7e0 sp=0xc00003e7c8 pc=0x419f45
runtime.goexit({})
	/usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc00003e7e8 sp=0xc00003e7e0 pc=0x475961
created by runtime.gcenable in goroutine 1
	/usr/local/go/src/runtime/mgc.go:204 +0x66

goroutine 18 gp=0xc000104540 m=nil [GC scavenge wait]:
runtime.gopark(0xc000110000?, 0x679560?, 0x1?, 0x0?, 0xc000104540?)
	/usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc00003ef78 sp=0xc00003ef58 pc=0x46e1ee
runtime.goparkunlock(...)
	/usr/local/go/src/runtime/proc.go:430
runtime.(*scavengerState).park(0x7def80)
	/usr/local/go/src/runtime/mgcscavenge.go:425 +0x49 fp=0xc00003efa8 sp=0xc00003ef78 pc=0x423269
runtime.bgscavenge(0xc000110000)
	/usr/local/go/src/runtime/mgcscavenge.go:653 +0x3c fp=0xc00003efc8 sp=0xc00003efa8 pc=0x4237dc
runtime.gcenable.gowrap2()
	/usr/local/go/src/runtime/mgc.go:205 +0x25 fp=0xc00003efe0 sp=0xc00003efc8 pc=0x419ee5
runtime.goexit({})
	/usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc00003efe8 sp=0xc00003efe0 pc=0x475961
created by runtime.gcenable in goroutine 1
	/usr/local/go/src/runtime/mgc.go:205 +0xa5

goroutine 3 gp=0xc000006fc0 m=nil [finalizer wait]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
	/usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc000043620 sp=0xc000043600 pc=0x46e1ee
runtime.runfinq()
	/usr/local/go/src/runtime/mfinal.go:193 +0x107 fp=0xc0000437e0 sp=0xc000043620 pc=0x418fc7
runtime.goexit({})
	/usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc0000437e8 sp=0xc0000437e0 pc=0x475961
created by runtime.createfing in goroutine 1
	/usr/local/go/src/runtime/mfinal.go:163 +0x3d

goroutine 4 gp=0xc000007180 m=nil [chan receive]:
runtime.gopark(0x0?, 0x419e01?, 0xd8?, 0x29?, 0x7c29d8?)
	/usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc000042718 sp=0xc0000426f8 pc=0x46e1ee
runtime.chanrecv(0xc0000700e0, 0x0, 0x1)
	/usr/local/go/src/runtime/chan.go:639 +0x41c fp=0xc000042790 sp=0xc000042718 pc=0x409c5c
runtime.chanrecv1(0x43a920?, 0xc000042776?)
	/usr/local/go/src/runtime/chan.go:489 +0x12 fp=0xc0000427b8 sp=0xc000042790 pc=0x409832
runtime.unique_runtime_registerUniqueMapCleanup.func1(...)
	/usr/local/go/src/runtime/mgc.go:1781
runtime.unique_runtime_registerUniqueMapCleanup.gowrap1()
	/usr/local/go/src/runtime/mgc.go:1784 +0x2f fp=0xc0000427e0 sp=0xc0000427b8 pc=0x41cf6f
runtime.goexit({})
	/usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc0000427e8 sp=0xc0000427e0 pc=0x475961
created by unique.runtime_registerUniqueMapCleanup in goroutine 1
	/usr/local/go/src/runtime/mgc.go:1779 +0x96

goroutine 5 gp=0xc000007340 m=nil [IO wait]:
runtime.gopark(0x4326ca?, 0x21260?, 0x12?, 0x3b?, 0xb?)
	/usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc000043bf8 sp=0xc000043bd8 pc=0x46e1ee
runtime.netpollblock(0x4c41f8?, 0x407e66?, 0x0?)
	/usr/local/go/src/runtime/netpoll.go:575 +0xf7 fp=0xc000043c30 sp=0xc000043bf8 pc=0x433757
internal/poll.runtime_pollWait(0xffff870be050, 0x72)
	/usr/local/go/src/runtime/netpoll.go:351 +0x85 fp=0xc000043c50 sp=0xc000043c30 pc=0x46d4e5
internal/poll.(*pollDesc).wait(0xc00006e2a0?, 0xc000208000?, 0x1)
	/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x27 fp=0xc000043c78 sp=0xc000043c50 pc=0x4e2f47
internal/poll.(*pollDesc).waitRead(...)
	/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc00006e2a0, {0xc000208000, 0x8000, 0x8000})
	/usr/local/go/src/internal/poll/fd_unix.go:165 +0x27a fp=0xc000043d10 sp=0xc000043c78 pc=0x4e423a
os.(*File).read(...)
	/usr/local/go/src/os/file_posix.go:29
os.(*File).Read(0xc000046530, {0xc000208000?, 0x5dc680?, 0x5f0901?})
	/usr/local/go/src/os/file.go:124 +0x52 fp=0xc000043d50 sp=0xc000043d10 pc=0x4ef7d2
os.(*fileWithoutWriteTo).Read(0x7d4b10?, {0xc000208000?, 0x46c71f?, 0xc000206000?})
	<autogenerated>:1 +0x25 fp=0xc000043d80 sp=0xc000043d50 pc=0x4f7985
io.copyBuffer({0x67c018, 0xc00018cb60}, {0x67c220, 0xc000206000}, {0x0, 0x0, 0x0})
	/usr/local/go/src/io/io.go:429 +0x191 fp=0xc000043df8 sp=0xc000043d80 pc=0x4b8f51
io.Copy(...)
	/usr/local/go/src/io/io.go:388
os.genericWriteTo(0xc000046530?, {0x67c018, 0xc00018cb60})
	/usr/local/go/src/os/file.go:275 +0x4f fp=0xc000043e48 sp=0xc000043df8 pc=0x4f010f
os.(*File).WriteTo(0xc000046530, {0x67c018, 0xc00018cb60})
	/usr/local/go/src/os/file.go:253 +0x9c fp=0xc000043e88 sp=0xc000043e48 pc=0x4f003c
io.copyBuffer({0x67c018, 0xc00018cb60}, {0x67bf58, 0xc000046530}, {0x0, 0x0, 0x0})
	/usr/local/go/src/io/io.go:411 +0x9d fp=0xc000043f00 sp=0xc000043e88 pc=0x4b8e5d
io.Copy(...)
	/usr/local/go/src/io/io.go:388
os/exec.(*Cmd).writerDescriptor.func1()
	/usr/local/go/src/os/exec/exec.go:580 +0x34 fp=0xc000043f60 sp=0xc000043f00 pc=0x5529f4
os/exec.(*Cmd).Start.func2(0x0?)
	/usr/local/go/src/os/exec/exec.go:733 +0x2c fp=0xc000043fc8 sp=0xc000043f60 pc=0x55366c
os/exec.(*Cmd).Start.gowrap1()
	/usr/local/go/src/os/exec/exec.go:745 +0x24 fp=0xc000043fe0 sp=0xc000043fc8 pc=0x553604
runtime.goexit({})
	/usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc000043fe8 sp=0xc000043fe0 pc=0x475961
created by os/exec.(*Cmd).Start in goroutine 1
	/usr/local/go/src/os/exec/exec.go:732 +0x98b

goroutine 6 gp=0xc000007500 m=nil [IO wait]:
runtime.gopark(0x4326ca?, 0x176c0?, 0x12?, 0x3b?, 0xb?)
	/usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc0000443f8 sp=0xc0000443d8 pc=0x46e1ee
runtime.netpollblock(0x4c41f8?, 0x407e66?, 0x0?)
	/usr/local/go/src/runtime/netpoll.go:575 +0xf7 fp=0xc000044430 sp=0xc0000443f8 pc=0x433757
internal/poll.runtime_pollWait(0xffff870bde20, 0x72)
	/usr/local/go/src/runtime/netpoll.go:351 +0x85 fp=0xc000044450 sp=0xc000044430 pc=0x46d4e5
internal/poll.(*pollDesc).wait(0xc00006e360?, 0xc000286000?, 0x1)
	/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x27 fp=0xc000044478 sp=0xc000044450 pc=0x4e2f47
internal/poll.(*pollDesc).waitRead(...)
	/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc00006e360, {0xc000286000, 0x8000, 0x8000})
	/usr/local/go/src/internal/poll/fd_unix.go:165 +0x27a fp=0xc000044510 sp=0xc000044478 pc=0x4e423a
os.(*File).read(...)
	/usr/local/go/src/os/file_posix.go:29
os.(*File).Read(0xc000046548, {0xc000286000?, 0x5dc680?, 0x5f0901?})
	/usr/local/go/src/os/file.go:124 +0x52 fp=0xc000044550 sp=0xc000044510 pc=0x4ef7d2
os.(*fileWithoutWriteTo).Read(0x7d4b10?, {0xc000286000?, 0x46c71f?, 0xc000284000?})
	<autogenerated>:1 +0x25 fp=0xc000044580 sp=0xc000044550 pc=0x4f7985
io.copyBuffer({0x67c018, 0xc00018cb80}, {0x67c220, 0xc000284000}, {0x0, 0x0, 0x0})
	/usr/local/go/src/io/io.go:429 +0x191 fp=0xc0000445f8 sp=0xc000044580 pc=0x4b8f51
io.Copy(...)
	/usr/local/go/src/io/io.go:388
os.genericWriteTo(0xc000046548?, {0x67c018, 0xc00018cb80})
	/usr/local/go/src/os/file.go:275 +0x4f fp=0xc000044648 sp=0xc0000445f8 pc=0x4f010f
os.(*File).WriteTo(0xc000046548, {0x67c018, 0xc00018cb80})
	/usr/local/go/src/os/file.go:253 +0x9c fp=0xc000044688 sp=0xc000044648 pc=0x4f003c
io.copyBuffer({0x67c018, 0xc00018cb80}, {0x67bf58, 0xc000046548}, {0x0, 0x0, 0x0})
	/usr/local/go/src/io/io.go:411 +0x9d fp=0xc000044700 sp=0xc000044688 pc=0x4b8e5d
io.Copy(...)
	/usr/local/go/src/io/io.go:388
os/exec.(*Cmd).writerDescriptor.func1()
	/usr/local/go/src/os/exec/exec.go:580 +0x34 fp=0xc000044760 sp=0xc000044700 pc=0x5529f4
os/exec.(*Cmd).Start.func2(0x0?)
	/usr/local/go/src/os/exec/exec.go:733 +0x2c fp=0xc0000447c8 sp=0xc000044760 pc=0x55366c
os/exec.(*Cmd).Start.gowrap1()
	/usr/local/go/src/os/exec/exec.go:745 +0x24 fp=0xc0000447e0 sp=0xc0000447c8 pc=0x553604
runtime.goexit({})
	/usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc0000447e8 sp=0xc0000447e0 pc=0x475961
created by os/exec.(*Cmd).Start in goroutine 1
	/usr/local/go/src/os/exec/exec.go:732 +0x98b

rax    0x1
rbx    0x0
rcx    0x0
rdx    0xffffffffffffffff
rdi    0x7feb00
rsi    0xffffffff870be050
rbp    0xc000097da8
rsp    0xc000097730
r8     0x72
r9     0x72
r10    0x2
r11    0x0
r12    0xc0000977b0
r13    0x1
r14    0xc0000841c0
r15    0x1
rip    0x43430e
rflags 0x202
cs     0x33
fs     0x0
gs     0x0

Environment

OS:
Linux 20c89c9fbe74 6.18.4-100.fc42.aarch64 #1 SMP PREEMPT_DYNAMIC Thu Jan  8 17:44:41 UTC 2026 x86_64 GNU/Linux

SHELL:
GNU bash, version 5.2.37(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2022 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

BASH VERSION:
5.2.37(1)-release

ASDF VERSION:
v0.18.0 (revision 2114f1e)

ASDF INTERNAL VARIABLES:
ASDF_TOOL_VERSIONS_FILENAME=.tool-versions
ASDF_DATA_DIR=/home/jenkins/.asdf
ASDF_CONFIG_FILE=/home/jenkins/.asdfrc

ASDF INSTALLED PLUGINS:

asdf plugins affected (if relevant)

List of plugins attempted with (.tool-versions)

aws-sso-cli 2.0.3
awscli 2.31.2
checkov 3.2.467
hcl2json 0.6.7
iam-policy-json-to-terraform 1.9.1
opentofu 1.10.6
steampipe 2.1.0
syft 1.27.1
terraform 1.6.2
terraform-docs 0.20.0
terragrunt 0.87.7
tflint 0.58.0
tfsec 1.28.14
trivy 0.63.0

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions