do not call g_thread_init() for glib >= 2.31
glib >= 2.31 always enables thread support and g_thread_supported() is #defined to 1, there's no need to call g_thread_init() anymore, and it definitely does not need to report error which never happens. Keep code for old < 2.31 glibc anyway for now, just #ifdef it differently. Signed-off-by: Michael Tokarev <mjt@tls.msk.ru> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Cc: qemu-trivial@nongnu.org
This commit is contained in:
		
							parent
							
								
									69b15212d7
								
							
						
					
					
						commit
						f33cc84dd4
					
				@ -115,14 +115,11 @@ static inline GThread *create_thread(GThreadFunc func, gpointer data)
 | 
			
		||||
 | 
			
		||||
static void __attribute__((constructor)) coroutine_init(void)
 | 
			
		||||
{
 | 
			
		||||
    if (!g_thread_supported()) {
 | 
			
		||||
#if !GLIB_CHECK_VERSION(2, 31, 0)
 | 
			
		||||
    if (!g_thread_supported()) {
 | 
			
		||||
        g_thread_init(NULL);
 | 
			
		||||
#else
 | 
			
		||||
        fprintf(stderr, "glib threading failed to initialize.\n");
 | 
			
		||||
        exit(1);
 | 
			
		||||
#endif
 | 
			
		||||
    }
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    init_coroutine_cond();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										15
									
								
								util/osdep.c
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								util/osdep.c
									
									
									
									
									
								
							@ -436,23 +436,20 @@ int socket_init(void)
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Ensure that glib is running in multi-threaded mode */
 | 
			
		||||
static void __attribute__((constructor)) thread_init(void)
 | 
			
		||||
{
 | 
			
		||||
    if (!g_thread_supported()) {
 | 
			
		||||
#if !GLIB_CHECK_VERSION(2, 31, 0)
 | 
			
		||||
        /* Old versions of glib require explicit initialization.  Failure to do
 | 
			
		||||
/* Ensure that glib is running in multi-threaded mode
 | 
			
		||||
 * Old versions of glib require explicit initialization.  Failure to do
 | 
			
		||||
 * this results in the single-threaded code paths being taken inside
 | 
			
		||||
 * glib.  For example, the g_slice allocator will not be thread-safe
 | 
			
		||||
 * and cause crashes.
 | 
			
		||||
 */
 | 
			
		||||
static void __attribute__((constructor)) thread_init(void)
 | 
			
		||||
{
 | 
			
		||||
    if (!g_thread_supported()) {
 | 
			
		||||
       g_thread_init(NULL);
 | 
			
		||||
#else
 | 
			
		||||
        fprintf(stderr, "glib threading failed to initialize.\n");
 | 
			
		||||
        exit(1);
 | 
			
		||||
#endif
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef CONFIG_IOVEC
 | 
			
		||||
/* helper function for iov_send_recv() */
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user