[libvirt] JNA Error Callback could cause core dump.

Claudio Bley cbley at av-test.de
Fri Oct 19 11:36:16 UTC 2012


>>>>> "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