When Live-Updating with some load, Xenstored may hit the assert
req->in == lu_status->in in do_lu_start().
This is happening because the request is stashed when Live-Update
begins. This happens in a different request (see call lu_begin()
when select the new binary) from the one performing Live-Update.
To avoid the problem, stash the request in lu_start().
Fixes: 65f19ed62aa1 ("tools/xenstore: Don't assume conn->in points to the LU request")
Reported-by: Michael Kurth <mku@amazon.com>
Signed-off-by: Julien Grall <jgrall@amazon.com>
Reviewed-by: luca.fancellu@arm.com
Reviewed-by: Juergen Gross <jgross@suse.com>
if (!lu_status)
return "Allocation failure.";
lu_status->conn = conn;
- lu_status->in = conn->in;
talloc_set_destructor(lu_status, lu_destroy);
return NULL;
lu_status->force = force;
lu_status->timeout = to;
lu_status->started_at = time(NULL);
+ lu_status->in = conn->in;
errno = delay_request(conn, conn->in, do_lu_start, conn, false);