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