Skip to content

bug: "asdf plugin add ..." causes segfault on Fedora 42 in QEMUΒ #2159

@davidjeddy

Description

@davidjeddy

Describe the Bug

Executing asdf plugin-add php https://github.com/... returns a Golang segfault.

Abstractions

MacBook Pros M3 (ARM) host -> UTM 4.5.4 -> Fedora 42(Adam) guest (ARM) -> Fedora 42 container (AMD64) via using podman 5.5.2 -> asdf-vm -> asdf plugin add ...

Steps to Reproduce

  1. Attempt to add plugin via CLI command using both 0.18.0 and 0.17.0

Have tried the following three commands:

All result in a similar segfault with output of:

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

goroutine 0 gp=0xc000006540 m=1 mp=0xc000046008 [idle]:
runtime.netpoll(0xa9be48fd928?)
	/usr/local/go/src/runtime/netpoll_epoll.go:166 +0x24e fp=0xc000025f38 sp=0xc0000258b0 pc=0x43430e
runtime.sysmon()
	/usr/local/go/src/runtime/proc.go:6127 +0x2d7 fp=0xc000025fa0 sp=0xc000025f38 pc=0x447077
runtime.mstart1()
	/usr/local/go/src/runtime/proc.go:1834 +0x93 fp=0xc000025fc8 sp=0xc000025fa0 pc=0x43dc33
runtime.mstart0()
	/usr/local/go/src/runtime/proc.go:1791 +0x76 fp=0xc000025ff8 sp=0xc000025fc8 pc=0x43db76
runtime.mstart()
	/usr/local/go/src/runtime/asm_amd64.s:395 +0x5 fp=0xc000026000 sp=0xc000025ff8 pc=0x473a25

goroutine 1 gp=0xc0000061c0 m=nil [runnable]:
runtime.asyncPreempt2()
	/usr/local/go/src/runtime/preempt.go:308 +0x39 fp=0xc000186508 sp=0xc0001864e8 pc=0x439319
runtime.asyncPreempt()
	/usr/local/go/src/runtime/preempt_amd64.s:53 +0xdb fp=0xc000186690 sp=0xc000186508 pc=0x476e9b
syscall.readlen(0xc000172878?, 0xc00017a000?, 0xb?)
	/usr/local/go/src/syscall/zsyscall_linux_amd64.go:987 +0x2c fp=0xc0001866d0 sp=0xc000186690 pc=0x4c44ac
syscall.forkExec({0xc000102690?, 0xc000172860?}, {0xc000113bc0, 0x3, 0x3}, 0x7dfe01?)
	/usr/local/go/src/syscall/exec_unix.go:220 +0x449 fp=0xc0001867e8 sp=0xc0001866d0 pc=0x4c05c9
syscall.StartProcess(...)
	/usr/local/go/src/syscall/exec_unix.go:258
os.startProcess({0xc000102690, 0xd}, {0xc000113bc0, 0x3, 0x3}, 0xc0001869f0)
	/usr/local/go/src/os/exec_posix.go:55 +0x2f2 fp=0xc0001868d0 sp=0xc0001867e8 pc=0x4eec52
os.StartProcess({0xc000102690, 0xd}, {0xc000113bc0, 0x3, 0x3}, 0xc0001729f0)
	/usr/local/go/src/os/exec.go:319 +0x54 fp=0xc000186910 sp=0xc0001868d0 pc=0x4ee6b4
os/exec.(*Cmd).Start(0xc000176180)
	/usr/local/go/src/os/exec/exec.go:709 +0x5d1 fp=0xc000186a98 sp=0xc000186910 pc=0x553071
os/exec.(*Cmd).Run(0xc000176180)
	/usr/local/go/src/os/exec/exec.go:607 +0x18 fp=0xc000186ab0 sp=0xc000186a98 pc=0x552a58
github.com/asdf-vm/asdf/internal/execute.Command.Run({{0x61e7a6, 0x3}, {0x0, 0x0}, {0xc000114450, 0x3, 0x3}, {0x0, 0x0}, {0x67c018, ...}, ...})
	/github/workspace/internal/execute/execute.go:63 +0x2cf fp=0xc000186b40 sp=0xc000186ab0 pc=0x556f6f
github.com/asdf-vm/asdf/internal/git.exec({0xc000114440?, 0xc000144000?, 0x17?})
	/github/workspace/internal/git/git.go:171 +0x158 fp=0xc000186cb0 sp=0xc000186b40 pc=0x558798
github.com/asdf-vm/asdf/internal/git.Repo.Clone({{0xc0001420d8?, 0x5?}, {0x0?, 0xd?}}, {0xffffaf9ef6f0, 0x2e}, {0x0, 0x0})
	/github/workspace/internal/git/git.go:50 +0x1a5 fp=0xc000186d08 sp=0xc000186cb0 pc=0x5576e5
github.com/asdf-vm/asdf/internal/plugins.Add({{0xc000012035, 0x5}, {0xc0001025f0, 0xd}, {0x621030, 0xe}, {0xc0001025c0, 0xb}, {0x0, 0x0, ...}, ...}, ...)
	/github/workspace/internal/plugins/plugins.go:408 +0x4e7 fp=0xc000186f68 sp=0xc000186d08 pc=0x55cc87
github.com/asdf-vm/asdf/internal/cli.pluginAddCommand(0x5d131b?, {{0xc000012035, 0x5}, {0xc0001025f0, 0xd}, {0x621030, 0xe}, {0xc0001025c0, 0xb}, {0x0, ...}, ...}, ...)
	/github/workspace/internal/cli/cli.go:721 +0xab fp=0xc000187090 sp=0xc000186f68 pc=0x5bb22b
github.com/asdf-vm/asdf/internal/cli.Execute.func12({0xc000154288?, 0x67d518?}, 0xc000154288)
	/github/workspace/internal/cli/cli.go:195 +0x23e fp=0xc0001872f8 sp=0xc000187090 pc=0x5b5e3e
github.com/urfave/cli/v3.(*Command).run(0xc000154288, {0x67d518, 0xc0001139e0}, {0xc0001138f0, 0x3, 0x3})
	/go/pkg/mod/github.com/urfave/cli/[email protected]/command_run.go:336 +0x2674 fp=0xc0001876b8 sp=0xc0001872f8 pc=0x59da54
github.com/urfave/cli/v3.(*Command).run(0xc000154008, {0x67d518, 0xc000113800}, {0xc0001143c0, 0x4, 0x4})
	/go/pkg/mod/github.com/urfave/cli/[email protected]/command_run.go:274 +0x1ee5 fp=0xc000187a78 sp=0xc0001876b8 pc=0x59d2c5
github.com/urfave/cli/v3.(*Command).run(0xc000152008, {0x67d518, 0xc000112810}, {0xc00011a000, 0x5, 0x5})
	/go/pkg/mod/github.com/urfave/cli/[email protected]/command_run.go:274 +0x1ee5 fp=0xc000187e38 sp=0xc000187a78 pc=0x59d2c5
github.com/urfave/cli/v3.(*Command).Run(...)
	/go/pkg/mod/github.com/urfave/cli/[email protected]/command_run.go:94
github.com/asdf-vm/asdf/internal/cli.Execute({0xc00013c040, 0x1a})
	/github/workspace/internal/cli/cli.go:347 +0x1950 fp=0xc000187f30 sp=0xc000187e38 pc=0x5b5410
main.main()
	/github/workspace/cmd/asdf/main.go:18 +0x2a fp=0xc000187f50 sp=0xc000187f30 pc=0x5c5c6a
runtime.main()
	/usr/local/go/src/runtime/proc.go:272 +0x28b fp=0xc000187fe0 sp=0xc000187f50 pc=0x43a78b
runtime.goexit({})
	/usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc000187fe8 sp=0xc000187fe0 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=0xc000040fa8 sp=0xc000040f88 pc=0x46e1ee
runtime.goparkunlock(...)
	/usr/local/go/src/runtime/proc.go:430
runtime.forcegchelper()
	/usr/local/go/src/runtime/proc.go:337 +0xb3 fp=0xc000040fe0 sp=0xc000040fa8 pc=0x43aad3
runtime.goexit({})
	/usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc000040fe8 sp=0xc000040fe0 pc=0x475961
created by runtime.init.7 in goroutine 1
	/usr/local/go/src/runtime/proc.go:325 +0x1a

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

goroutine 18 gp=0xc000084540 m=nil [GC scavenge wait]:
runtime.gopark(0xc000090000?, 0x679560?, 0x1?, 0x0?, 0xc000084540?)
	/usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc00003cf78 sp=0xc00003cf58 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=0xc00003cfa8 sp=0xc00003cf78 pc=0x423269
runtime.bgscavenge(0xc000090000)
	/usr/local/go/src/runtime/mgcscavenge.go:653 +0x3c fp=0xc00003cfc8 sp=0xc00003cfa8 pc=0x4237dc
runtime.gcenable.gowrap2()
	/usr/local/go/src/runtime/mgc.go:205 +0x25 fp=0xc00003cfe0 sp=0xc00003cfc8 pc=0x419ee5
runtime.goexit({})
	/usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc00003cfe8 sp=0xc00003cfe0 pc=0x475961
created by runtime.gcenable in goroutine 1
	/usr/local/go/src/runtime/mgc.go:205 +0xa5

goroutine 33 gp=0xc000118000 m=nil [finalizer wait]:
runtime.gopark(0x490013?, 0xc000040660?, 0x9e?, 0x4?, 0xffffac620328?)
	/usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc000040620 sp=0xc000040600 pc=0x46e1ee
runtime.runfinq()
	/usr/local/go/src/runtime/mfinal.go:193 +0x107 fp=0xc0000407e0 sp=0xc000040620 pc=0x418fc7
runtime.goexit({})
	/usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc0000407e8 sp=0xc0000407e0 pc=0x475961
created by runtime.createfing in goroutine 1
	/usr/local/go/src/runtime/mfinal.go:163 +0x3d

goroutine 34 gp=0xc0001181c0 m=nil [chan receive]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
	/usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc00014a718 sp=0xc00014a6f8 pc=0x46e1ee
runtime.chanrecv(0xc0001000e0, 0x0, 0x1)
	/usr/local/go/src/runtime/chan.go:639 +0x41c fp=0xc00014a790 sp=0xc00014a718 pc=0x409c5c
runtime.chanrecv1(0x0?, 0x0?)
	/usr/local/go/src/runtime/chan.go:489 +0x12 fp=0xc00014a7b8 sp=0xc00014a790 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=0xc00014a7e0 sp=0xc00014a7b8 pc=0x41cf6f
runtime.goexit({})
	/usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc00014a7e8 sp=0xc00014a7e0 pc=0x475961
created by unique.runtime_registerUniqueMapCleanup in goroutine 1
	/usr/local/go/src/runtime/mgc.go:1779 +0x96

rax    0x2
rbx    0x0
rcx    0x0
rdx    0x0
rdi    0x7feb00
rsi    0xffffffffac631698
rbp    0xc000025f28
rsp    0xc0000258b0
r8     0x77
r9     0x72
r10    0x1
r11    0xffffffffffffff58
r12    0xc000025930
r13    0xc000046008
r14    0xc000006540
r15    0xfffffffffffffff
rip    0x43430e
rflags 0x202
cs     0x33
fs     0x0
gs     0x0

Expected Behaviour

Successful (code 0) exit of asdf when trying to add a plugin location,

Actual Behaviour

Segfault exit

Environment

[root@90e59f60b2b8 ~]# asdf --version
asdf version v0.18.0 (revision 2114f1e)
[root@90e59f60b2b8 ~]# cat /etc/fedora-release 
Fedora release 42 (Adams)
[root@90e59f60b2b8 ~]# printenv | sort
GPG_TTY=/dev/pts/0
HOME=/root
HOSTNAME=90e59f60b2b8
JAVA_HOME=/usr/lib/jvm/java-21-amazon-corretto
LANG=C.UTF-8
LESSOPEN=||/usr/bin/lesspipe.sh %s
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;37;41:su=37;41:sg=30;43:ca=00:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.7z=01;31:*.ace=01;31:*.alz=01;31:*.apk=01;31:*.arc=01;31:*.arj=01;31:*.bz=01;31:*.bz2=01;31:*.cab=01;31:*.cpio=01;31:*.crate=01;31:*.deb=01;31:*.drpm=01;31:*.dwm=01;31:*.dz=01;31:*.ear=01;31:*.egg=01;31:*.esd=01;31:*.gz=01;31:*.jar=01;31:*.lha=01;31:*.lrz=01;31:*.lz=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.lzo=01;31:*.pyz=01;31:*.rar=01;31:*.rpm=01;31:*.rz=01;31:*.sar=01;31:*.swm=01;31:*.t7z=01;31:*.tar=01;31:*.taz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tgz=01;31:*.tlz=01;31:*.txz=01;31:*.tz=01;31:*.tzo=01;31:*.tzst=01;31:*.udeb=01;31:*.war=01;31:*.whl=01;31:*.wim=01;31:*.xz=01;31:*.z=01;31:*.zip=01;31:*.zoo=01;31:*.zst=01;31:*.avif=01;35:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.m4a=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.oga=01;36:*.opus=01;36:*.spx=01;36:*.xspf=01;36:*~=00;90:*#=00;90:*.bak=00;90:*.crdownload=00;90:*.dpkg-dist=00;90:*.dpkg-new=00;90:*.dpkg-old=00;90:*.dpkg-tmp=00;90:*.old=00;90:*.orig=00;90:*.part=00;90:*.rej=00;90:*.rpmnew=00;90:*.rpmorig=00;90:*.rpmsave=00;90:*.swp=00;90:*.tmp=00;90:*.ucf-dist=00;90:*.ucf-new=00;90:*.ucf-old=00;90:
PATH=/root/.asdf/shims:/root/.local/bin:/root/bin:/usr/local/bin:/usr/bin
PWD=/root
SHLVL=1
TERM=xterm
_=/usr/bin/printenv
container=oci

asdf plugins affected (if relevant)

maven
sonar-scanner
php
terraform-docs
...
likely others

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