• D
    Initialize threading & error layer in LXC controller · ccd639d8
    Daniel P. Berrange 提交于
    In Fedora 20, libvirt_lxc crashes immediately at startup with a
    trace
    
     #0  0x00007f0cddb653ec in free () from /lib64/libc.so.6
     #1  0x00007f0ce0e16f4a in virFree (ptrptr=ptrptr@entry=0x7f0ce1830058) at util/viralloc.c:580
     #2  0x00007f0ce0e2764b in virResetError (err=0x7f0ce1830030) at util/virerror.c:354
     #3  0x00007f0ce0e27a5a in virResetLastError () at util/virerror.c:387
     #4  0x00007f0ce0e28858 in virEventRegisterDefaultImpl () at util/virevent.c:233
     #5  0x00007f0ce0db47c6 in main (argc=11, argv=0x7fff4596c328) at lxc/lxc_controller.c:2352
    
    Normally virInitialize calls virErrorInitialize and
    virThreadInitialize, but we don't link to libvirt.so
    in libvirt_lxc, and nor did we ever call the error
    or thread initializers.
    
    I have absolutely no idea how this has ever worked, let alone
    what caused it to stop working in Fedora 20.
    
    In addition not all code paths from virLogSetFromEnv will
    ensure virLogInitialize is called correctly, which is another
    possible crash scenario.
    Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
    (cherry picked from commit 97973ebb)
    ccd639d8
virlog.c 43.0 KB