WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

[Xen-devel] libxenserver : xen_vm_get_record() fails with SIGSEGV

To: "xen-devel@xxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxx>
Subject: [Xen-devel] libxenserver : xen_vm_get_record() fails with SIGSEGV
From: "Sane, Abhijeet" <Abhijeet_Sane@xxxxxxx>
Date: Tue, 29 Dec 2009 01:50:26 -0700
Accept-language: en-US
Acceptlanguage: en-US
Delivery-date: Tue, 29 Dec 2009 00:51:21 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
Thread-index: AcqIY/cU2QFWP5u+S1+RhN/v1oAGUg==
Thread-topic: libxenserver : xen_vm_get_record() fails with SIGSEGV
Hi ,

I am getting a SIGSEGV when calling xen_vm_get_record() function.
Please guide me if I am doing anything wrong.

<CodeSnippet>
                        struct xen_vm_set * vm_list = NULL;
                        //xen_vm_get_all(session,&vm_list);
                        xen_host_get_resident_vms(session,&vm_list,host);
                        if ( NULL == vm_list )
                        {
                                print_error(session);
                                xen_host_free(host);
                                cleanup();
                                return 1;
                        }

                        printf("Total number of virtual machines found on Xen 
Server %d\n",vm_list->size);
                        for(int i = 0 ; i < vm_list->size ; i++)
                        {
                                xen_vm_record * vm_rec = NULL;
                                printf("Trying to get VM record\n");
                                          //--- This is where it fails
                                xen_vm_get_record(session,&vm_rec ,*( 
vm_list->contents[i]));  
                                if ( NULL == vm_rec )
                                {
                                        print_error(session);
                                        xen_host_free(host);
                                        cleanup();
                                        return 1;
                                }
                                printf("(%d) == > UUID = %s ",i,vm_rec->uuid);
                        }

</CodeSnippet>

I am using the following libraries for development

XenServer Product Information 
------------------------------       
                                     
Name             XenServer           
Version          5.5.0-15119p        
Xen Version      3.3.1               
Kernel Version   2.6.18-128.1.6.el5.x
                 s5.5.0.496.1012xen  

CURL : 
-------
curl-7.9.8-54
curl-devel-7.9.8-54

GCC : 
-----
gcc-c++-3.2.2-38
libgcc-3.2.2-38
gcc-3.2.2-38

libXML : 
libxml2-2.7.6


libXenServer:
libxenserver-5.5.0-1


<execution trace >

Starting program: ./print_host_vm
[New Thread 1024 (LWP 9997)]
Initializing XML Parser
Initializing Xen
Creating Session with login/password
Session established
Host has the following capabilities:
xen-3.0-x86_64
xen-3.0-x86_32p
hvm-3.0-x86_32
hvm-3.0-x86_32p
hvm-3.0-x86_64


Host Record  list
UUID = 86f59fe9-6428-4742-b95e-22c284d60525
Name = xxxxxx
Hostname= xxxxxxx
Address = xxx.xxx.xxx.xxx
Host CPU Record size = 2
CPU Configuration size 0
Total number of virtual machines found on Xen Server 3
Trying to get VM record

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 1024 (LWP 9997)]
xmlStringGetNodeList (doc=0x815fa08, value=0x7161704f <Address 0x7161704f out 
of bounds>) at tree.c:1454
1454        while (*cur != 0) {
(gdb) where
#0  xmlStringGetNodeList (doc=0x815fa08, value=0x7161704f <Address 0x7161704f 
out of bounds>) at tree.c:1454
#1  0x08067124 in xmlNewDocNode (doc=0x815fa08, ns=0x8154220, name=0x6 <Address 
0x6 out of bounds>,
    content=0x7161704f <Address 0x7161704f out of bounds>) at tree.c:2271
#2  0x0806798c in xmlNewChild (parent=0x81541d0, ns=0x0, name=0x6 <Address 0x6 
out of bounds>,
    content=0x7161704f <Address 0x7161704f out of bounds>) at tree.c:2843
#3  0x40030f8f in add_value (parent=0x8154180, type=0x4005c28c "string", 
value=0x7161704f <Address 0x7161704f out of bounds>)
    at src/xen_common.c:1673
#4  0x40030f32 in add_param (params_node=0x814d390, type=0x4005c28c "string", 
value=0x7161704f <Address 0x7161704f out of bounds>)
    at src/xen_common.c:1660
#5  0x400305ed in make_body_add_type (typename=STRING, v=0x814d32c, 
params_node=0x814d390) at src/xen_common.c:1328
#6  0x40030a23 in make_body (method_name=0x40061cbc "VM.get_record", 
params=0x814d320, param_count=2) at src/xen_common.c:1459
#7  0x4002efa7 in call_raw (s=0x8148630, method_name=0x40061cbc 
"VM.get_record", params=0x814d320, param_count=2, result_type=0xbfffeec0,
    value=0xbfffef4c) at src/xen_common.c:538
#8  0x4002ef21 in xen_call_ (s=0x8148630, method_name=0x40061cbc 
"VM.get_record", params=0xbfffeef0, param_count=1, result_type=0xbfffeec0,
    value=0xbfffef4c) at src/xen_common.c:518
#9  0x40053b6b in xen_vm_get_record (session=0x8148630, result=0xbfffef4c, 
vm=0x7161704f) at src/xen_vm.c:311
#10 0x0804aaaf in main ()
#11 0x401824c2 in __libc_start_main () from /lib/i686/libc.so.6
(gdb)



</execution trace>


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel

<Prev in Thread] Current Thread [Next in Thread>