sheepdog: fix a core dump while do auto-reconnecting
We should reinit local_err as NULL inside the while loop or g_free() will report corrupption and abort the QEMU when sheepdog driver tries reconnecting. This was broken in commit 356b4ca. qemu-system-x86_64: failed to get the header, Resource temporarily unavailable qemu-system-x86_64: Failed to connect to socket: Connection refused qemu-system-x86_64: (null) [xcb] Unknown sequence number while awaiting reply [xcb] Most likely this is a multi-threaded client and XInitThreads has not been called [xcb] Aborting, sorry about that. qemu-system-x86_64: ../../src/xcb_io.c:298: poll_for_response: Assertion `!xcb_xlib_threads_sequence_lost' failed. Aborted (core dumped) Cc: qemu-devel@nongnu.org Cc: Markus Armbruster <armbru@redhat.com> Cc: Kevin Wolf <kwolf@redhat.com> Cc: Stefan Hajnoczi <stefanha@redhat.com> Reviewed-by: Markus Armbruster <armbru@redhat.com> Signed-off-by: Liu Yuan <namei.unix@gmail.com> Reviewed-by: Benoît Canet <benoit.canet@nodalink.com> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
		
							parent
							
								
									b493317d34
								
							
						
					
					
						commit
						a780dea045
					
				| @ -716,7 +716,6 @@ static void coroutine_fn send_pending_req(BDRVSheepdogState *s, uint64_t oid) | ||||
| 
 | ||||
| static coroutine_fn void reconnect_to_sdog(void *opaque) | ||||
| { | ||||
|     Error *local_err = NULL; | ||||
|     BDRVSheepdogState *s = opaque; | ||||
|     AIOReq *aio_req, *next; | ||||
| 
 | ||||
| @ -731,6 +730,7 @@ static coroutine_fn void reconnect_to_sdog(void *opaque) | ||||
| 
 | ||||
|     /* Try to reconnect the sheepdog server every one second. */ | ||||
|     while (s->fd < 0) { | ||||
|         Error *local_err = NULL; | ||||
|         s->fd = get_sheep_fd(s, &local_err); | ||||
|         if (s->fd < 0) { | ||||
|             DPRINTF("Wait for connection to be established\n"); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Liu Yuan
						Liu Yuan