[libvirt] JNA Error Callback could cause core dump.

Benjamin Wang (gendwang) gendwang at cisco.com
Fri Oct 19 12:12:08 UTC 2012


Hi,
  I am using JNA 3.4.1. The problem is caused by libvirt java. You are right.

B.R.
Benjamin Wang

-----Original Message-----
From: Claudio Bley [mailto:cbley at av-test.de] 
Sent: 2012年10月19日 19:36
To: Benjamin Wang (gendwang)
Cc: libvir-list at redhat.com; Guannan Ren; Daniel Veillard; Yang Zhou (yangzho)
Subject: Re: JNA Error Callback could cause core dump.

>>>>> "BW" == Benjamin Wang (gendwang) <gendwang at cisco.com> writes:

    BW> Hi, When I changed code as following:

    BW> public class Connect {

    BW>     // Load the native part

    BW>     static {

    BW>         Libvirt.INSTANCE.virInitialize();

    BW>         try {

    BW>             ErrorHandler.processError(Libvirt.INSTANCE);

    BW>         } catch (Exception e) {

    BW>             e.printStackTrace();

    BW>         }

    BW>   + Libvirt.INSTANCE.virSetErrorFunc(null, new
    BW> ErrorCallback());

    BW> }

    BW> The problem was caused that when JNA call setErrorFunc, it
    BW> will create ErrorCallback object. But when GC is executed, the
    BW> object is GCed.

Yes, that's why you should keep a reference to the object around.

    BW> But even I change code as following.

    BW> When GC is excuted, the callback object will be moved. Then C
    BW> can’t find this object. Both of scenarios will cause core
    BW> dump. It seems that JNA mustn’t provide ErrorCallback Class,

First off, JNA does not provide this class, it is provided by the libvirt-java wrapper.

Which version of JNA did you use? As I said in a previous mail, I had crashes with JNA < 3.4.2. Consequently, I cannot reproduce the crash using your code, JNA 3.4.2 and with having this series
(https://www.redhat.com/archives/libvir-list/2012-October/msg00578.html)
applied. (at least patch #15 is needed when using JNA 3.4.2)
--
AV-Test GmbH, Klewitzstr. 7, 39112 Magdeburg, Germany
Phone: +49 391 6075466, Fax: +49 391 6075469
Web: <http://www.av-test.org>

Eingetragen am / Registered at: Amtsgericht Stendal (HRB 114076) Geschaeftsfuehrer (CEO): Andreas Marx, Guido Habicht, Maik Morgenstern




More information about the libvir-list mailing list