Subject: Childhurd fails to run inside ‘guix systemvm’
From: Ludovic Courtès <[email-masked]>
To: [email-masked]
Date: Sun, 17 Sep 2023 17:21:33 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

Hello!

I’m failing to run a childhurd inside a ‘guix system vm’ GNU/Linux VM as
of fc3a53525ab3dcaf7c22eec8d62294017f9760fe.

--8<---------------cut here---------------start------------->8---
Sep 17 17:03:25 localhost shepherd[1]: [qemu-system-i386] qemu-system-i386: Slirp: Failed to send packet, ret: -1 
Sep 17 17:03:37 localhost shepherd[1]: [qemu-system-i386] qemu-system-i386: Slirp: Failed to send packet, ret: -1 
Sep 17 17:03:43 localhost shepherd[1]: [qemu-system-i386] qemu-system-i386: Bad ram pointer 0x7f739ac0001e 
Sep 17 17:03:43 localhost shepherd[1]: secret service: invalid handshake #<eof> 
Sep 17 17:03:43 localhost shepherd[1]: Service hurd-vm could not be started. 
Sep 17 17:03:43 localhost shepherd[1]: Service hurd-vm failed to start. 
--8<---------------cut here---------------end--------------->8---

When I run it by hand with KVM on my bare-metal GNU/Linux machine, it’s
all good: 👍

--8<---------------cut here---------------start------------->8---
$ "/gnu/store/1rg1fb9mj65rh82467vwlrkmi12p4v89-qemu-minimal-8.1.0/bin/qemu-system-i386" "-m" 2048 "--device" "rtl8139,netdev=net0" "--netdev" "user,id=net0,hostfwd=tcp:127.0.0.1:11004-:1004,hostfwd=tcp:127.0.0.1:10022-:2222,hostfwd=tcp:127.0.0.1:15900-:5900" "--snapshot" "--hda" "/gnu/store/iqacww23byvw9c5ssja9fkx6m4s057b0-disk-image" "--no-reboot" --enable-kvm
VNC server running on 127.0.0.1:5900
--8<---------------cut here---------------end--------------->8---

However, the same thing *without* KVM (as happens within ‘guix system
vm’) reproduces the “Bad ram pointer” issue:

--8<---------------cut here---------------start------------->8---
$ "/gnu/store/1rg1fb9mj65rh82467vwlrkmi12p4v89-qemu-minimal-8.1.0/bin/qemu-system-i386" "-m" 2048 "--device" "rtl8139,netdev=net0" "--netdev" "user,id=net0,hostfwd=tcp:127.0.0.1:11004-:1004,hostfwd=tcp:127.0.0.1:10022-:2222,hostfwd=tcp:127.0.0.1:15900-:5900" "--snapshot" "--hda" "/gnu/store/iqacww23byvw9c5ssja9fkx6m4s057b0-disk-image" "--no-reboot" 
VNC server running on 127.0.0.1:5900
qemu-system-i386: Bad ram pointer 0x7fa930e0001e
Aborted
--8<---------------cut here---------------end--------------->8---

Good news: I found a workaround!  Just use the x86_64 emulator:

--8<---------------cut here---------------start------------->8---
$ "/gnu/store/1rg1fb9mj65rh82467vwlrkmi12p4v89-qemu-minimal-8.1.0/bin/qemu-system-x86_64" "-m" 2048 "--device" "rtl8139,netdev=net0" "--netdev" "user,id=net0,hostfwd=tcp:127.0.0.1:11004-:1004,hostfwd=tcp:127.0.0.1:10022-:2222,hostfwd=tcp:127.0.0.1:15900-:5900" "--snapshot" "--hda" "/gnu/store/iqacww23byvw9c5ssja9fkx6m4s057b0-disk-image" "--no-reboot" 
VNC server running on 127.0.0.1:5900
--8<---------------cut here---------------end--------------->8---

Obviously, I have no clue why that works, but who cares, right?  :-)

Thoughts?

Ludo’.