On Tue, Jan 22, 2013 at 11:31:27AM +0000, Pankaj Rawat wrote: > Hi, > I am using libvirt api to create an app, I am facing a problem. > I can connect to connection object 20 number of times in programm > after that it gives connection object null. By default libvirtd has a limit of 20 concurrent active connections/ > Here is the sample code. > > Normally code should run 1000 times but it only runs 20 times > Filename: list.cpp > > #include<pthread.h> > #include<stdlib.h> > #include<stdio.h> > #include<malloc.h> > #include <iostream> > #include<string.h> > #include <libvirt/libvirt.h> > #include <libvirt/virterror.h> > static int count; > static void customErrorFunc(void *userdata, virErrorPtr err) > { > } > > int main() > { > virConnectPtr conn; > > for ( int i=0; i< 1000;i++) > { > conn = virConnectOpen("qemu:///system"); > if (conn == NULL) { > fprintf(stderr, "Failed to open connection to qemu:///system\n"); > printf("Failed to open connection to qemu:///system\n"); > virConnectClose(conn); > return NULL; > } > printf("Hello %d\n",i); > virError err; > virSetErrorFunc(NULL, customErrorFunc); > int j; > int numDomains1,numDomains2,numDomains; > int *activeDomains; > numDomains1 = virConnectNumOfDomains(conn); > activeDomains = (int*)malloc(sizeof(int) * numDomains1); > numDomains1 = virConnectListDomains(conn, activeDomains, numDomains1); > for (int j = 0 ; j < numDomains1 ; j++) > { > virDomainPtr dom; > dom = virDomainLookupByID(conn,activeDomains[j]); > free(dom); You should be using virDomainFree(dom), not 'free(dom)' The latter is leaking memory & loosing the reference on virConnectPtr causing the connection to be left open. Hence you are hitting the 20 conn limit. > } > free(activeDomains); > count--; > virConnectClose(conn); > } > } Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :| -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list