Subject: bug#34276: ‘guix system disk-im age’ successfully builds a bad image

From: Ludovic Courtès <[email-masked]>
Date: Sat, 21 Mar 2020 16:58:02 +0100

Hi Brice,

Brice Waegeneire <[email-masked]> skribis:

>> I investigated a bit.  I managed to get our code to cause a kernel 
>> panic
>> upon failure (patch below).  However I fail to turn that guest kernel
>> panic into a different QEMU exit code.
>> 
>> I tried to use the “pvpanic” paravirtualized device (the ‘pvpanic.ko’
>> module in the guest, and “-device pvpanic” on the QEMU command line),
>> but unfortunately that thing is almost undocumented and I can’t get it
>> to turn the panic into a non-zero exit code, nor do I know if it’s
>> possible.
>> 
>> Thoughts anyone?
>
> I looked a little into it and I have found how to use pvpanic.
> Unfortunately it's not as straight forward as getting a non-zero exit
> code form qemu. When pvpanic is loaded in a VṂ, as you did with 
> “-device
> pvpanic”, generate events[0] on the QMP interface when a crash happen
> and qemu either shutdown or pause when using --no-shutdown[1].
>
> (gnu build marionette) which use the “-monitor” interface could be
> recycled to use “-qmp” a machine interface using JSON.
>
> Following is log of a QMP session where the guest panicked[2]:

Oooh, I see, thanks for digging into this!

Any idea how to implement it?  Is QMP a request/reply kind of interface
like the monitor?

Ludo’.