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