Discussion:
[Qemu-discuss] SIGSEV when using egl-headless on a headless server
Frederik Carlier
2018-11-25 20:55:42 UTC
Permalink
Hello,

I'm trying to use qemu with the egl-headless display display on a headless server.
Unfortunately, I get a segmentation fault (see below) when running qemu-system-x86_64.

I assume this is because OpenGL isn't initialized correctly, perhaps because there's no X server running.

Is this a supported scenario? Is there anything I can do to troubleshoot this further?

Thanks!

Frederik.

--

I'm running qemu 3.0, virglrenderer master and libepoxy master (all compiled from source) on a headless server running Ubuntu 18.04.
The GPU is an Intel Iris Pro Graphics P580.

I'm using the following command to boot QEMU:

qemu-system-x86_64 \
-enable-kvm \
-m 2048 -smp 2 -cpu host \
-device virtio-mouse-pci -device virtio-keyboard-pci \
-serial mon:stdio \
-netdev user,id=mynet,hostfwd=tcp::5555-:5555 -device virtio-net-pci,netdev=mynet \
-vga virtio \
-display egl-headless \
-vnc 0.0.0.0:5900 \
-hda android-x86.qcow2

I've debugged the process using gdb and got the following stack trace:

#0 0x00007ffff5cb7703 in __rawmemchr_avx2 () at ../sysdeps/x86_64/multiarch/memchr-avx2.S:61
#1 0x00007ffff5bbd352 in _IO_str_init_static_internal (sf=***@entry=0x7fffffffda90, ptr=***@entry=0x0, size=***@entry=0, pstart=***@entry=0x0) at strops.c:41
#2 0x00007ffff5bae78d in _IO_vsscanf (string=0x0, format=0x7ffff7babf61 "%i.%i", args=***@entry=0x7fffffffdbc0)
at iovsscanf.c:40
#3 0x00007ffff5ba81a4 in __sscanf (s=<optimized out>, format=<optimized out>) at sscanf.c:32
#4 0x00007ffff7b69063 in vrender_get_glsl_version (glsl_version=0x555557c07f28) at vrend_renderer.c:7969
#5 0x00007ffff7b615f7 in vrend_create_context (id=0, nlen=4, debug_name=0x7ffff7baba40 "HOST")
at vrend_renderer.c:5481
#6 0x00007ffff7b8a797 in vrend_renderer_context_create_internal (handle=0, nlen=4, debug_name=0x7ffff7baba40 "HOST")
at vrend_decode.c:1307
#7 0x00007ffff7b60e6c in vrend_renderer_init (cbs=0x7ffff7dcc2c0 <virgl_cbs>, flags=0) at vrend_renderer.c:5311
#8 0x00007ffff7b5060c in virgl_renderer_init (cookie=0x555557263990, flags=0, cbs=0x55555655a700 <virtio_gpu_3d_cbs>)
at virglrenderer.c:342
#9 0x00005555558c0e74 in virtio_gpu_virgl_init (g=0x555557263990) at /root/qemu-3.0.0/hw/display/virtio-gpu-3d.c:627
#10 0x00005555558bcc99 in virtio_gpu_handle_ctrl (vdev=0x555557263990, vq=0x7ffff025a010)
at /root/qemu-3.0.0/hw/display/virtio-gpu.c:926
#11 0x00005555558bcda3 in virtio_gpu_ctrl_bh (opaque=0x555557263990) at /root/qemu-3.0.0/hw/display/virtio-gpu.c:953
[...]

In frame 4, I can see version_str is NULL, which would explain the exception.
Loading...