[Spice-devel] bad primary surface and server crash after migration

Gerd Hoffmann kraxel at redhat.com
Sun Jul 10 23:48:06 PDT 2011


> Hi, I pushed this fix. But, as Alon discovered, after shutdown of the vm
> and then calling system_reset, it causes another problem:
> before starting the vm, qxl_hard_reset is called. It calls
> destroy_all_surfaces, which attempts to flush the command rings, but
> since the worker is not running, it doesn't. Then qxl_reset_state is
> called and it crashes upon:
> assert(SPICE_RING_IS_EMPTY(&ram->cmd_ring));
> assert(SPICE_RING_IS_EMPTY(&ram->cursor_ring));
>
> what do you think should we do?
> 2) track worker state and assert only if worker is running.

I think this makes sense.  I'm not fully sure why the asserts are there. 
  I guess it is to avoid a race when resetting the rings (worker taking 
commands out of the ring while qxl reinitialized the rings).  But if the 
worker is stopped and thus doesn't process ring commands this can't 
happen ...

cheers,
   Gerd



More information about the Spice-devel mailing list