[libvirt] Libvir JNA report SIGSEGV

Benjamin Wang (gendwang) gendwang at cisco.com
Wed Sep 5 08:59:07 UTC 2012


Hi,
  I try to verify the JNA with concurrent situation but meet some problems. The following is my example code:
    public static void testcase1() throws LibvirtException
    {
        Connect conn=null;
        Connect conn1=null;

        //connect to the hypervisor
        conn = new Connect("esx://10.74.125.68:443/?no_verify=1&transport=https", new ConnectAuthDefault(), 0);
        System.out.println(conn.getVersion());

        //connect to the hypervisor
        conn1 = new Connect("esx://10.74.125.90:443/?no_verify=1&transport=https", new ConnectAuthDefault(), 0);
        System.out.println(conn1.getVersion());


        while(true)
        {
                int[] array = new int[100000000];
                Long version = conn.getVersion();
                Long version1 = conn1.getVersion();

                try
                {
                         Thread.sleep(1000);
                }
                catch(Exception e)
                {
                }
        }
}

When I add line "int[] array = new int[100000000]", then the following error will be generated very quickly:
# An unexpected error has been detected by Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x0000003f9b07046e, pid=30049, tid=1109510464
#
# Java VM: OpenJDK 64-Bit Server VM (1.6.0-b09 mixed mode linux-amd64)
# Problematic frame:
# C  [libc.so.6+0x7046e]
#
# An error report file with more information is saved as:

I have tried to write the similar code as following. It works well.
static void virXenBasic_TC001(void)
{
    virConnectPtr conn = NULL;
    virConnectPtr conn1 = NULL;
    unsigned long version = 0;
    unsigned long version1 = 0;
    char *hostname = NULL;

    conn = virConnectOpenAuth("esx://10.74.125.21/?no_verify=1", virConnectAuthPtrDefault, 0);
    if (conn == NULL) {
        fprintf(stderr, "Failed to open connection to qemu:///system\n");
        return;
    }

    conn1 = virConnectOpenAuth("esx://192.168.119.40/?no_verify=1", virConnectAuthPtrDefault, 0);
    if (conn1 == NULL) {
        fprintf(stderr, "Failed to open connection to qemu:///system\n");
        return;
    }

    while(true)
    {
        hostname = malloc(sizeof(char) * 100000000);
        virConnectGetVersion(conn, &version);
        virConnectGetVersion(conn, &version1);
        free(hostname);
        sleep(1);
    }
    return;
}

B.R.
Benjamin Wang
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20120905/f0d6a383/attachment-0001.htm>


More information about the libvir-list mailing list