
On 3/22/19 4:46 AM, Andrea Bolognani wrote:
On Wed, 2019-03-20 at 00:40 -0500, Eric Blake wrote:
A couple of these have seen the list before, but most of them are new. The bulk of this series is about refactoring snapshot_conf.c into smaller pieces that I can then reuse for implementing checkpoints, without having to open-code the hierarchy algorithms a second time (one of John's complaints against my v4 incremental backup series).
I suspect that src/vz/ builds may break on one or more of these patches; I could not get a working vz build environment.
Eric Blake (16): test: Avoid use-after-free on virDomainSnapshotDelete snapshot: Use accessors for virDomainSnapshot members snapshot: Create virDomainMoment base class vbox: Clean up some snapshot usage snapshot: Drop virDomainSnapshotDef.current snapshot: Track current snapshot in virDomainSnapshotObjList snapshot: Add accessors for updating snapshot list relations snapshot: Access snapshot def directly when needed snapshot: Refactor list filtering snapshot: Factor out virDomainMomentDef class snapshot: Switch type of virDomainSnapshotObj.def snapshot: Rename virDomainSnapshotObjPtr snapshot: Rename file for virDomainMomentObj snapshot: Move snapshot list code into generic file snapshot: Tweaks to support new bulk dumpxml/import API backup: Introduce virDomainCheckpointPtr
This causes libvirtd to crash at startup on my machine.
Have a backtrace:
Thread 19 (Thread 0x7fffaa4e0700 (LWP 31651)): #0 0x00007ffff72ecd31 in open64 () from /lib64/libc.so.6 #1 0x00007ffff727d3f6 in _IO_file_open () from /lib64/libc.so.6 #2 0x00007ffff727d5ad in __GI__IO_file_fopen () from /lib64/libc.so.6 #3 0x00007ffff727132d in __fopen_internal () from /lib64/libc.so.6 #4 0x00007ffff71199d8 in ?? () from /lib64/libudev.so.1 #5 0x00007ffff71146dd in ?? () from /lib64/libudev.so.1 #6 0x00007ffff71173ed in ?? () from /lib64/libudev.so.1 #7 0x00007ffff71179d9 in ?? () from /lib64/libudev.so.1 #8 0x00007ffff710be77 in udev_device_get_property_value () from /lib64/libudev.so.1 #9 0x00007fffc2e8a3ef in udevGetDeviceProperty (udev_device=udev_device@entry=0x7fff900606e0, property_key=property_key@entry=0x7fffc2ea3504 "DRIVER") at node_device/node_device_udev.c:140 #10 0x00007fffc2e8a459 in udevGetStringProperty (udev_device=udev_device@entry=0x7fff900606e0, property_key=property_key@entry=0x7fffc2ea3504 "DRIVER", value=0x7fff900f98d8) at node_device/node_device_udev.c:154 #11 0x00007fffc2e8b3ad in udevAddOneDevice (device=device@entry=0x7fff900606e0) at node_device/node_device_udev.c:1369 #12 0x00007fffc2e8d27e in udevProcessDeviceListEntry (list_entry=0x7fff9004f350, udev=0x7fff98120f00) at node_device/node_device_udev.c:1435 #13 udevEnumerateDevices (udev=0x7fff98120f00) at node_device/node_device_udev.c:1489 #14 nodeStateInitializeEnumerate (opaque=0x7fff98120f00) at node_device/node_device_udev.c:1798 #15 0x00007ffff7c5a2c2 in virThreadHelper (data=<optimized out>) at util/virthread.c:206 #16 0x00007ffff740d58e in start_thread () from /lib64/libpthread.so.0 #17 0x00007ffff72fc6a3 in clone () from /lib64/libc.so.6
Very strange - I don't recall the patches touching any of the virnodedeviceobj* code. Is it possible to bisect to something after the below? Although there were changes by Nikolay right at the top of tree that did... Can you go back to top, revert Nikolay's changes and see if that does it? You will need Michal's change to virDomainMomentAssignDef. John [...]
If I revert back to 320a1480d0dbe77ae9da08b6ce6c3ad5e2706b63 or delete all snapshots, then it works fine.