Richard W.M. Jones
2021-Jul-24 10:40 UTC
[Libguestfs] nbdkit: cow.c:591: cow_extents: Assertion `count > 0' failed.
I wonder if this is an overflow: $ ./nbdkit sparse-random 3G --filter=cow --run 'nbdinfo --map $uri' # OK $ ./nbdkit sparse-random 4G --filter=cow --run 'nbdinfo --map $uri' nbdkit: cow.c:591: cow_extents: Assertion `count > 0' failed. Any size >= 4G seems to cause the crash. Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming and virtualization blog: http://rwmj.wordpress.com virt-p2v converts physical machines to virtual machines. Boot with a live CD or over the network (PXE) and turn machines into KVM guests. http://libguestfs.org/virt-v2v
Martin Kletzander
2021-Jul-26 11:45 UTC
[Libguestfs] nbdkit: cow.c:591: cow_extents: Assertion `count > 0' failed.
On Sat, Jul 24, 2021 at 11:40:49AM +0100, Richard W.M. Jones wrote:>I wonder if this is an overflow: > >$ ./nbdkit sparse-random 3G --filter=cow --run 'nbdinfo --map $uri' ># OK > >$ ./nbdkit sparse-random 4G --filter=cow --run 'nbdinfo --map $uri' >nbdkit: cow.c:591: cow_extents: Assertion `count > 0' failed. >This is OK on my machine as well.>Any size >= 4G seems to cause the crash. >What struck me with this is: cow.c:cow_extents: /* To make this easier, align the requested extents to whole blocks. * Note that count is a 64 bit variable containing at most a 32 bit * value so rounding up is safe here. */ I started debugging the cow filter and the values for 4G image I got are: count=4294966784; offset=0 // Pre-rounding end=4294967296; offset=0; count=4294967296; blknum=0 // Post-rounding It looks like it is not asking for the whole size, but size - 1 block. That gets rounded to 2^32 and sparse-extents then reports: sparse-random: extents count=4294963200 offset=0 req_one=0 sparse-random: extents count=4096 offset=4294963200 req_one=0 Which is 2^32 - 4096. I hope I am not confusing anyone with this, but it seems weird to me. Martin>Rich. > >-- >Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones >Read my programming and virtualization blog: http://rwmj.wordpress.com >virt-p2v converts physical machines to virtual machines. Boot with a >live CD or over the network (PXE) and turn machines into KVM guests. >http://libguestfs.org/virt-v2v >-------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 833 bytes Desc: not available URL: <http://listman.redhat.com/archives/libguestfs/attachments/20210726/41a71af8/attachment.sig>