If a domain has no snapshots and 'virsh snapshot-list' is called, this gets all the way down to virshSnapshotListCollect() which then collects all snapshots (none), and passes them to qsort() which doesn't like being called with NULL: extern void qsort (void *__base, size_t __nmemb, size_t __size, __compar_fn_t __compar) __nonnull ((1, 4)); Resolves: https://gitlab.com/libvirt/libvirt/-/issues/533 Signed-off-by: Michal Privoznik <mprivozn@xxxxxxxxxx> --- tools/virsh-snapshot.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tools/virsh-snapshot.c b/tools/virsh-snapshot.c index d7889a38e4..ecb935b2b4 100644 --- a/tools/virsh-snapshot.c +++ b/tools/virsh-snapshot.c @@ -1310,9 +1310,11 @@ virshSnapshotListCollect(vshControl *ctl, virDomainPtr dom, } } } - if (!(orig_flags & VIR_DOMAIN_SNAPSHOT_LIST_TOPOLOGICAL)) + if (!(orig_flags & VIR_DOMAIN_SNAPSHOT_LIST_TOPOLOGICAL) && + snaplist->snaps) { qsort(snaplist->snaps, snaplist->nsnaps, sizeof(*snaplist->snaps), virshSnapSorter); + } snaplist->nsnaps -= deleted; ret = g_steal_pointer(&snaplist); -- 2.41.0