Skip to content

bug: asdf plugin add * results in golang SIGSEGV: segmentation violation #2219

@davidjeddy

Description

@davidjeddy

Describe the Bug

When running asdf plugin add [[PACKAGE NAME]], in a x64 container on a Fedora 42 ARM VM hosted on a MacOS M3 host, Golang returns a segmentation failure. We attempted with a handful of packages an all return similar error messages.

Steps to Reproduce

x64 container running in a ARM guest VM on a ARM physical host

asdf plugin maven

Expected Behaviour

Plugin is added to plugin list.

Actual Behaviour

Attempted with maven, argo, chromedriver, and via asdf plugin add sonarscanner https://github.com/virtualstaticvoid/asdf-sonarscanner.git (so we know it is not only an problem with non-url based plugins actios).

$ asdf plugin add maven
SIGSEGV: segmentation violation
PC=0x43430e m=2 sigcode=1 addr=0xffffffff980cf060

goroutine 0 gp=0xc0000068c0 m=2 mp=0xc000048708 [idle]:
runtime.netpoll(0xc00002e000?)
	/usr/local/go/src/runtime/netpoll_epoll.go:166 +0x24e fp=0xc000063db8 sp=0xc000063730 pc=0x43430e
runtime.findRunnable()
	/usr/local/go/src/runtime/proc.go:3580 +0x8c5 fp=0xc000063f30 sp=0xc000063db8 pc=0x4409e5
runtime.schedule()
	/usr/local/go/src/runtime/proc.go:3995 +0xb1 fp=0xc000063f68 sp=0xc000063f30 pc=0x441f51
runtime.park_m(0xc000007340)
	/usr/local/go/src/runtime/proc.go:4102 +0x1eb fp=0xc000063fc0 sp=0xc000063f68 pc=0x44236b
runtime.mcall()
	/usr/local/go/src/runtime/asm_amd64.s:459 +0x4e fp=0xc000063fd8 sp=0xc000063fc0 pc=0x473aae

goroutine 1 gp=0xc0000061c0 m=nil [runnable]:
runtime.asyncPreempt2()
	/usr/local/go/src/runtime/preempt.go:308 +0x39 fp=0xc0001cc5e8 sp=0xc0001cc5c8 pc=0x439319
runtime.asyncPreempt()
	/usr/local/go/src/runtime/preempt_amd64.s:53 +0xdb fp=0xc0001cc770 sp=0xc0001cc5e8 pc=0x476e9b
os/exec.(*Cmd).Wait(0xc000002300)
	/usr/local/go/src/os/exec/exec.go:924 +0x157 fp=0xc0001cc7d0 sp=0xc0001cc770 pc=0x553ef7
os/exec.(*Cmd).Run(0xc000002300)
	/usr/local/go/src/os/exec/exec.go:610 +0x2d fp=0xc0001cc7e8 sp=0xc0001cc7d0 pc=0x552a6d
github.com/asdf-vm/asdf/internal/execute.Command.Run({{0x61e7a6, 0x3}, {0x0, 0x0}, {0xc00018c1a0, 0x4, 0x4}, {0x0, 0x0}, {0x67c018, ...}, ...})
	/github/workspace/internal/execute/execute.go:63 +0x2cf fp=0xc0001cc878 sp=0xc0001cc7e8 pc=0x556f6f
github.com/asdf-vm/asdf/internal/git.exec({0xc00018c190?, 0x18?, 0xc00018ab20?})
	/github/workspace/internal/git/git.go:171 +0x158 fp=0xc0001cc9e8 sp=0xc0001cc878 pc=0x558798
github.com/asdf-vm/asdf/internal/git.repositoryExists({0xc000018138, 0x18})
	/github/workspace/internal/git/git.go:185 +0xe7 fp=0xc0001cca10 sp=0xc0001cc9e8 pc=0x558927
github.com/asdf-vm/asdf/internal/git.Repo.Head({{0xc000018138?, 0x44b8a9?}, {0x0?, 0x9a065608?}})
	/github/workspace/internal/git/git.go:60 +0x2b fp=0xc0001cca58 sp=0xc0001cca10 pc=0x5577cb
github.com/asdf-vm/asdf/internal/git.Repo.Update({{0xc000018138?, 0x6292ef?}, {0x0?, 0xc0001bec38?}}, {0x0, 0x0})
	/github/workspace/internal/git/git.go:94 +0x5f fp=0xc0001ccbd0 sp=0xc0001cca58 pc=0x557b1f
github.com/asdf-vm/asdf/internal/git.(*Repo).Update(0x1?, {0x0?, 0x18?})
	<autogenerated>:1 +0x48 fp=0xc0001ccc10 sp=0xc0001ccbd0 pc=0x558bc8
github.com/asdf-vm/asdf/internal/pluginindex.PluginIndex.doUpdate({{0x67d630, 0xc00018aae0}, {0xc000018138, 0x18}, {0x62ba93, 0x2b}, 0x0, 0x3c})
	/github/workspace/internal/pluginindex/pluginindex.go:107 +0x51 fp=0xc0001ccc58 sp=0xc0001ccc10 pc=0x5594f1
github.com/asdf-vm/asdf/internal/pluginindex.PluginIndex.Refresh({{0x67d630, 0xc00018aae0}, {0xc000018138, 0x18}, {0x62ba93, 0x2b}, 0x0, 0x3c})
	/github/workspace/internal/pluginindex/pluginindex.go:91 +0x1d1 fp=0xc0001cccb8 sp=0xc0001ccc58 pc=0x559411
github.com/asdf-vm/asdf/internal/pluginindex.PluginIndex.GetPluginSourceURL({{0x67d630, 0xc00018aae0}, {0xc000018138, 0x18}, {0x62ba93, 0x2b}, 0x0, 0x3c}, {0xffff993ef68d, 0x5})
	/github/workspace/internal/pluginindex/pluginindex.go:119 +0x68 fp=0xc0001ccd08 sp=0xc0001cccb8 pc=0x559628
github.com/asdf-vm/asdf/internal/plugins.Add({{0xc000012035, 0x5}, {0xc000012670, 0xd}, {0x621030, 0xe}, {0xc000012640, 0xb}, {0x0, 0x0, ...}, ...}, ...)
	/github/workspace/internal/plugins/plugins.go:396 +0x2f7 fp=0xc0001ccf68 sp=0xc0001ccd08 pc=0x55ca97
github.com/asdf-vm/asdf/internal/cli.pluginAddCommand(0x5d131b?, {{0xc000012035, 0x5}, {0xc000012670, 0xd}, {0x621030, 0xe}, {0xc000012640, 0xb}, {0x0, ...}, ...}, ...)
	/github/workspace/internal/cli/cli.go:721 +0xab fp=0xc0001cd090 sp=0xc0001ccf68 pc=0x5bb22b
github.com/asdf-vm/asdf/internal/cli.Execute.func12({0xc0001a0288?, 0x67d518?}, 0xc0001a0288)
	/github/workspace/internal/cli/cli.go:195 +0x23e fp=0xc0001cd2f8 sp=0xc0001cd090 pc=0x5b5e3e
github.com/urfave/cli/v3.(*Command).run(0xc0001a0288, {0x67d518, 0xc00002f9e0}, {0xc00018a840, 0x2, 0x2})
	/go/pkg/mod/github.com/urfave/cli/v3@v3.3.3/command_run.go:336 +0x2674 fp=0xc0001cd6b8 sp=0xc0001cd2f8 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=0xc0001cda78 sp=0xc0001cd6b8 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=0xc0001cde38 sp=0xc0001cda78 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({0xc000194040, 0x1a})
	/github/workspace/internal/cli/cli.go:347 +0x1950 fp=0xc0001cdf30 sp=0xc0001cde38 pc=0x5b5410
main.main()
	/github/workspace/cmd/asdf/main.go:18 +0x2a fp=0xc0001cdf50 sp=0xc0001cdf30 pc=0x5c5c6a
runtime.main()
	/usr/local/go/src/runtime/proc.go:272 +0x28b fp=0xc0001cdfe0 sp=0xc0001cdf50 pc=0x43a78b
runtime.goexit({})
	/usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc0001cdfe8 sp=0xc0001cdfe0 pc=0x475961

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

goroutine 18 gp=0xc000084540 m=nil [GC sweep wait]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
	/usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc00003ef80 sp=0xc00003ef60 pc=0x46e1ee
runtime.goparkunlock(...)
	/usr/local/go/src/runtime/proc.go:430
runtime.bgsweep(0xc00009a000)
	/usr/local/go/src/runtime/mgcsweep.go:277 +0x94 fp=0xc00003efc8 sp=0xc00003ef80 pc=0x425834
runtime.gcenable.gowrap1()
	/usr/local/go/src/runtime/mgc.go:204 +0x25 fp=0xc00003efe0 sp=0xc00003efc8 pc=0x419f45
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:204 +0x66

goroutine 19 gp=0xc000084700 m=nil [GC scavenge wait]:
runtime.gopark(0xc00009a000?, 0x679560?, 0x1?, 0x0?, 0xc000084700?)
	/usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc00003f778 sp=0xc00003f758 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=0xc00003f7a8 sp=0xc00003f778 pc=0x423269
runtime.bgscavenge(0xc00009a000)
	/usr/local/go/src/runtime/mgcscavenge.go:653 +0x3c fp=0xc00003f7c8 sp=0xc00003f7a8 pc=0x4237dc
runtime.gcenable.gowrap2()
	/usr/local/go/src/runtime/mgc.go:205 +0x25 fp=0xc00003f7e0 sp=0xc00003f7c8 pc=0x419ee5
runtime.goexit({})
	/usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc00003f7e8 sp=0xc00003f7e0 pc=0x475961
created by runtime.gcenable in goroutine 1
	/usr/local/go/src/runtime/mgc.go:205 +0xa5

goroutine 2 gp=0xc000006e00 m=nil [finalizer wait]:
runtime.gopark(0x0?, 0xffff980317c8?, 0x15?, 0x0?, 0xc0000426d8?)
	/usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc000042620 sp=0xc000042600 pc=0x46e1ee
runtime.runfinq()
	/usr/local/go/src/runtime/mfinal.go:193 +0x107 fp=0xc0000427e0 sp=0xc000042620 pc=0x418fc7
runtime.goexit({})
	/usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc0000427e8 sp=0xc0000427e0 pc=0x475961
created by runtime.createfing in goroutine 1
	/usr/local/go/src/runtime/mfinal.go:163 +0x3d

goroutine 3 gp=0xc000006fc0 m=nil [chan receive]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
	/usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc000042f18 sp=0xc000042ef8 pc=0x46e1ee
runtime.chanrecv(0xc000020150, 0x0, 0x1)
	/usr/local/go/src/runtime/chan.go:639 +0x41c fp=0xc000042f90 sp=0xc000042f18 pc=0x409c5c
runtime.chanrecv1(0x0?, 0x0?)
	/usr/local/go/src/runtime/chan.go:489 +0x12 fp=0xc000042fb8 sp=0xc000042f90 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=0xc000042fe0 sp=0xc000042fb8 pc=0x41cf6f
runtime.goexit({})
	/usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc000042fe8 sp=0xc000042fe0 pc=0x475961
created by unique.runtime_registerUniqueMapCleanup in goroutine 1
	/usr/local/go/src/runtime/mgc.go:1779 +0x96

goroutine 4 gp=0xc000007180 m=nil [IO wait]:
runtime.gopark(0x4326ca?, 0x21260?, 0x12?, 0x3b?, 0xb?)
	/usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc0000433f8 sp=0xc0000433d8 pc=0x46e1ee
runtime.netpollblock(0x4c41f8?, 0x407e66?, 0x0?)
	/usr/local/go/src/runtime/netpoll.go:575 +0xf7 fp=0xc000043430 sp=0xc0000433f8 pc=0x433757
internal/poll.runtime_pollWait(0xffff980cf050, 0x72)
	/usr/local/go/src/runtime/netpoll.go:351 +0x85 fp=0xc000043450 sp=0xc000043430 pc=0x46d4e5
internal/poll.(*pollDesc).wait(0xc0000762a0?, 0xc000118000?, 0x1)
	/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x27 fp=0xc000043478 sp=0xc000043450 pc=0x4e2f47
internal/poll.(*pollDesc).waitRead(...)
	/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc0000762a0, {0xc000118000, 0x8000, 0x8000})
	/usr/local/go/src/internal/poll/fd_unix.go:165 +0x27a fp=0xc000043510 sp=0xc000043478 pc=0x4e423a
os.(*File).read(...)
	/usr/local/go/src/os/file_posix.go:29
os.(*File).Read(0xc000046530, {0xc000118000?, 0x5dc680?, 0x5f0901?})
	/usr/local/go/src/os/file.go:124 +0x52 fp=0xc000043550 sp=0xc000043510 pc=0x4ef7d2
os.(*fileWithoutWriteTo).Read(0x7d4b10?, {0xc000118000?, 0x46c71f?, 0xc000116000?})
	<autogenerated>:1 +0x25 fp=0xc000043580 sp=0xc000043550 pc=0x4f7985
io.copyBuffer({0x67c018, 0xc00018ab40}, {0x67c220, 0xc000116000}, {0x0, 0x0, 0x0})
	/usr/local/go/src/io/io.go:429 +0x191 fp=0xc0000435f8 sp=0xc000043580 pc=0x4b8f51
io.Copy(...)
	/usr/local/go/src/io/io.go:388
os.genericWriteTo(0xc000046530?, {0x67c018, 0xc00018ab40})
	/usr/local/go/src/os/file.go:275 +0x4f fp=0xc000043648 sp=0xc0000435f8 pc=0x4f010f
os.(*File).WriteTo(0xc000046530, {0x67c018, 0xc00018ab40})
	/usr/local/go/src/os/file.go:253 +0x9c fp=0xc000043688 sp=0xc000043648 pc=0x4f003c
io.copyBuffer({0x67c018, 0xc00018ab40}, {0x67bf58, 0xc000046530}, {0x0, 0x0, 0x0})
	/usr/local/go/src/io/io.go:411 +0x9d fp=0xc000043700 sp=0xc000043688 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=0xc000043760 sp=0xc000043700 pc=0x5529f4
os/exec.(*Cmd).Start.func2(0x0?)
	/usr/local/go/src/os/exec/exec.go:733 +0x2c fp=0xc0000437c8 sp=0xc000043760 pc=0x55366c
os/exec.(*Cmd).Start.gowrap1()
	/usr/local/go/src/os/exec/exec.go:745 +0x24 fp=0xc0000437e0 sp=0xc0000437c8 pc=0x553604
runtime.goexit({})
	/usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc0000437e8 sp=0xc0000437e0 pc=0x475961
created by os/exec.(*Cmd).Start in goroutine 1
	/usr/local/go/src/os/exec/exec.go:732 +0x98b

goroutine 5 gp=0xc000007340 m=nil [IO wait]:
runtime.gopark(0x4326ca?, 0x176c0?, 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(0xffff980cee20, 0x72)
	/usr/local/go/src/runtime/netpoll.go:351 +0x85 fp=0xc000043c50 sp=0xc000043c30 pc=0x46d4e5
internal/poll.(*pollDesc).wait(0xc000076360?, 0xc0000a4000?, 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(0xc000076360, {0xc0000a4000, 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(0xc000046548, {0xc0000a4000?, 0x5dc680?, 0x5f0901?})
	/usr/local/go/src/os/file.go:124 +0x52 fp=0xc000043d50 sp=0xc000043d10 pc=0x4ef7d2
os.(*fileWithoutWriteTo).Read(0x7d4b10?, {0xc0000a4000?, 0x46c71f?, 0xc0000a2000?})
	<autogenerated>:1 +0x25 fp=0xc000043d80 sp=0xc000043d50 pc=0x4f7985
io.copyBuffer({0x67c018, 0xc00018ab60}, {0x67c220, 0xc0000a2000}, {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(0xc000046548?, {0x67c018, 0xc00018ab60})
	/usr/local/go/src/os/file.go:275 +0x4f fp=0xc000043e48 sp=0xc000043df8 pc=0x4f010f
os.(*File).WriteTo(0xc000046548, {0x67c018, 0xc00018ab60})
	/usr/local/go/src/os/file.go:253 +0x9c fp=0xc000043e88 sp=0xc000043e48 pc=0x4f003c
io.copyBuffer({0x67c018, 0xc00018ab60}, {0x67bf58, 0xc000046548}, {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

rax    0x1
rbx    0x0
rcx    0x0
rdx    0xffffffffffffffff
rdi    0x7feb00
rsi    0xffffffff980cf050
rbp    0xc000063da8
rsp    0xc000063730
r8     0x72
r9     0x72
r10    0x2
r11    0x0
r12    0xc0000637b0
r13    0x1
r14    0xc0000068c0
r15    0x1
rip    0x43430e
rflags 0x202
cs     0x33
fs     0x0
gs     0x0

Environment

Fedora 42 x64 container on a Fedora 42 ARM OS on a MacOs M3 host

asdf plugins affected (if relevant)

All tested:

  • argo
  • maven
  • sonarscanner
  • opentofu
  • syft
  • tflint

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