On 10/12/2015 06:25 AM, Michal Privoznik wrote: > So we have this mechanism that on SIGUSR1 the virtlockd dumps its > internal state into a JSON file, reexec itself and the reloads > the internal state back. However, there's a bug in our > implementation: > > (gdb) signal SIGUSR1 > Continuing with signal SIGUSR1. > [Thread 0x7fd094f7b700 (LWP 10602) exited] > process 10600 is executing new program: /home/zippy/work/libvirt/libvirt.git/src/virtlockd > warning: Could not load shared library symbols for linux-vdso.so.1. > Do you need "set solib-search-path" or "set sysroot"? > [Thread debugging using libthread_db enabled] > Using host libthread_db library "/lib64/libthread_db.so.1". > [New Thread 0x7fb28bc3c700 (LWP 14501)] > > Program received signal SIGSEGV, Segmentation fault. > 0x00007fb29133d530 in virExpandN (ptrptr=0x70, size=8, countptr=0x68, add=1, report=true, domcode=7, filename=0x7fb29138aeab "rpc/virnetserver.c", funcname=0x7fb29138b680 <__FUNCTION__.15821> "virNetServerAddProgram", linenr=661) at util/viralloc.c:288 > 288 if (*countptr + add < *countptr) { > (gdb) bt > #0 0x00007fb29133d530 in virExpandN (ptrptr=0x70, size=8, countptr=0x68, add=1, report=true, domcode=7, filename=0x7fb29138aeab "rpc/virnetserver.c", funcname=0x7fb29138b680 <__FUNCTION__.15821> "virNetServerAddProgram", linenr=661) at util/viralloc.c:288 > #1 0x00007fb29132a267 in virNetServerAddProgram (srv=0x0, prog=0x7fb2915d08b0) at rpc/virnetserver.c:661 > #2 0x00007fb29131f27f in main (argc=1, argv=0x7fff8f771298) at locking/lock_daemon.c:1445 > > Notice the NULL @srv passed to frame 2? Usually, the @srv > variable is initialized on fresh start. However, in case of > daemon reload, the code path that is responsible for initializing > the value was not triggered and therefore we crashed immediately. > Fix this by always setting the variable. > > Signed-off-by: Michal Privoznik <mprivozn@xxxxxxxxxx> > --- > src/locking/lock_daemon.c | 2 ++ > 1 file changed, 2 insertions(+) > ACK - although you may want to considering altering the comment after the virLockDaemonPostExecRestart call to indicate that getting the need to get the srv pointer again... John -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list