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

_______________________________________________
Spice-devel mailing list
Spice-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/spice-devel

Reply via email to