On 04/21/2012 11:11 AM, Matthias Bolte wrote: > virThreadSelf tries to access the virThreadPtr stored in TLS for the > current thread via TlsGetValue. When virThreadSelf is called on a thread > that was not created via virThreadCreate (e.g. the main thread) then > TlsGetValue returns NULL as TlsAlloc initializes TLS slots to NULL. > > virThreadSelf can be called on the main thread via this call chain from > virsh > > vshDeinit > virEventAddTimeout > virEventPollAddTimeout > virEventPollInterruptLocked > virThreadIsSelf > > triggering a segfault as virThreadSelf unconditionally dereferences the > return value of TlsGetValue. > > Fix this by making virThreadSelf check the TLS slot value for NULL and > setting the given virThreadPtr accordingly. > > Reported by Marcel Müller. > --- > src/util/threads-win32.c | 11 +++++++++-- > 1 files changed, 9 insertions(+), 2 deletions(-) ACK. -- Eric Blake eblake@xxxxxxxxxx +1-919-301-3266 Libvirt virtualization library http://libvirt.org
Attachment:
signature.asc
Description: OpenPGP digital signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list