
On Mon, Jul 15, 2013 at 7:37 AM, Dennis Jenkins <dennis.jenkins.75@gmail.com
wrote:
Ah ha! I just learned about "gdb bt full". The existing core dump might have what you need: Line #442. However, the line numbers for the source code in the source tree that my Gentoo system is building from does not match exactly what you listed.
Line #442 for me is the one containing the "STREQ" macro:
virObjectLock(mgr);
for (i = 0; i < vm->nseclabels; i++) { for (j = 0; sec_managers[j]; j++) if (STREQ(vm->seclabels[i]->model, sec_managers[j]->drv->name)) break;
I can rebuild with "-O0" and try again. If I can still trigger the crash, the backtrace might have useful values for the optimized variables. I'll post again in a few minutes.
On Mon, Jul 15, 2013 at 7:06 AM, Dennis Jenkins < dennis.jenkins.75@gmail.com> wrote:
On Mon, Jul 15, 2013 at 3:18 AM, Michal Privoznik <mprivozn@redhat.com>wrote:
Interesting. If you are still able to reproduce the crash, can you try to get the line number within virSecurityManagerGenLabel where the crash happened? I think it's the STREQ line (440 linenr). Question is whether model or name is NULL.
I'll try.
I'm not sure why GDB failed to list line numbers in the backtrace. I will recompile libvirt with "-O0 -g3" and try again.
TL;DR: "vm->seclabels[i]->model" is NULL. (gdb) bt full #0 0x00007ffff6fc5d76 in __strcmp_sse42 () from /lib64/libc.so.6 No symbol table info available. #1 0x00007ffff76e2ae2 in virSecurityManagerGenLabel (mgr=0x7fffe40bef20, vm=0x7fffd00097a0) at security/security_manager.c:442 ret = -1 i = 0 j = 0 sec_managers = 0x7fffd8003e60 seclabel = 0x7ffff74c4911 <virAllocN+54> generated = false __FUNCTION__ = "virSecurityManagerGenLabel" __func__ = "virSecurityManagerGenLabel" (gdb) list 436,450 436 if ((sec_managers = virSecurityManagerGetNested(mgr)) == NULL) 437 return ret; 438 439 virObjectLock(mgr); 440 for (i = 0; i < vm->nseclabels; i++) { 441 for (j = 0; sec_managers[j]; j++) 442 if (STREQ(vm->seclabels[i]->model, sec_managers[j]->drv->name)) 443 break; 444 445 if (!sec_managers[j]) { 446 virReportError(VIR_ERR_CONFIG_UNSUPPORTED, 447 _("Unable to find security driver for label %s"), 448 vm->seclabels[i]->model); 449 goto cleanup; 450 } (gdb) frame 1 #1 0x00007ffff76e2ae2 in virSecurityManagerGenLabel (mgr=0x7fffe40bef20, vm=0x7fffd00097a0) at security/security_manager.c:442 442 if (STREQ(vm->seclabels[i]->model, sec_managers[j]->drv->name)) (gdb) print vm->nseclabels $1 = 1 (gdb) print sec_managers $2 = (virSecurityManagerPtr *) 0x7fffd8003e60 (gdb) print sec_managers[0] $3 = (virSecurityManagerPtr) 0x7fffe40bef20 (gdb) print vm->seclabels[i]->model $4 = 0x0 (gdb) print sec_managers[j]->drv->name $5 = 0x7ffff77729c0 "none"