[Libvir] crash on domain shutdown (via ruby)

David Lutterkort dlutter at redhat.com
Fri Apr 11 23:55:15 UTC 2008


On Fri, 2008-04-11 at 15:32 -0700, Vadim Zaliva wrote:
> I was too quick to speak. I got another crash:
> 
> *** glibc detected *** ruby: double free or corruption (out):  
> 0x08e78608 ***
> ======= Backtrace: =========
> /lib/i686/nosegneg/libc.so.6[0x5166a6]
> /lib/i686/nosegneg/libc.so.6(cfree+0x90)[0x519c10]
> /usr/lib/libvirt.so.0(virResetError+0x44)[0x64af3f4]
> /usr/lib/libvirt.so.0(virConnResetLastError+0x24)[0x64af634]
> /usr/lib/libvirt.so.0[0x649f618]
> /usr/lib/libvirt.so.0(virDomainLookupByUUID+0xb7)[0x648e7d7]
> /usr/lib/libvirt.so.0(virDomainLookupByUUIDString+0x14d)[0x648f90d]
> /usr/lib/ruby/site_ruby/1.8/i386-linux/ 
> _libvirt.so(libvirt_conn_lookup_domain_by_uuid+0x3d)[0x15f8cd]

Did your program while it ran have any errors before ? This is somewhere
in the guts of libvirt, and I would guess it's a double free caused by
the ruby bindings first calling virResetError on an unrelated error, and
then libvirt crashing on a second error since the first virResetError
freed various strings it didn't really own.

Try commenting the call to virResetError in _libvirt.c in the ruby
bindings out entirely, and see if you still get a crash.

David





More information about the libvir-list mailing list