[Pkg-libvirt-maintainers] Bug#565983: Bug#565983: libvirt-bin: libvirtd crashes when accessed through virt-manager

Luca Tettamanti kronos.it at gmail.com
Fri Jan 22 14:03:47 UTC 2010


On Fri, Jan 22, 2010 at 1:21 PM, Guido Günther <agx at sigxcpu.org> wrote:
>
> ----- Ursprüngliche Mitteilung -----
>> On Thu, Jan 21, 2010 at 11:49:47PM +0100, Laurent Léonard wrote:
>> > Le jeudi 21 janvier 2010 à 23:16, Luca Tettamanti a écrit :
>> > > I encountered the same problem on my machine. The bug appeared after a
>> > > recent upgrade, I've downgraded to 0.7.5-4 and I can connect with
>> > > virt-manager again.
>> >
>> > I noticed libvirt only crashed at the first connection with Virt-manager. If I
>> > start libvirt again and try to reconnect it works. I can confirm all Debian
>> > revisions of libvirt 0.7.5 are affected by that bug.
>> >
>> > See the upstream bug report https://bugzilla.redhat.com/show_bug.cgi?id=556815
>> > for more informations.
>>
>> The stack trace matches what I'm seeing on my machine, however 0.7.5-4 works
>> fine here. I only connect via ssh though.
> The trace lacks the glibc part (libc6-dbg).

Yeah, this is production machine...

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7f8115bb8910 (LWP 17259)]
strlen () at ../sysdeps/x86_64/strlen.S:31
31      ../sysdeps/x86_64/strlen.S: No such file or directory.
        in ../sysdeps/x86_64/strlen.S
Current language:  auto; currently asm
(gdb) bt
#0  strlen () at ../sysdeps/x86_64/strlen.S:31
#1  0x00007f8119508516 in *__GI___strdup (s=0x63735f74736f6850
<Address 0x63735f74736f6850 out of bounds>) at strdup.c:42
#2  0x000000000041d1ff in remoteDispatchNodeDeviceLookupByName
(server=<value optimized out>, client=<value optimized out>,
    conn=0x14ea030, hdr=<value optimized out>, rerr=0x7f8115bb7e30,
args=<value optimized out>, ret=0x7f8115bb7e80)
    at remote.c:5401
#3  0x0000000000424ab1 in remoteDispatchClientCall (server=<value
optimized out>, client=0x7f810c000ac0, msg=0x7f810c000c10)
    at dispatch.c:506
#4  0x0000000000424e63 in remoteDispatchClientRequest
(server=0x14c7570, client=0x7f810c000ac0, msg=0x7f810c000c10)
    at dispatch.c:388
#5  0x000000000041826c in qemudWorker (data=<value optimized out>) at
libvirtd.c:1522
#6  0x00007f81197e973a in start_thread (arg=<value optimized out>) at
pthread_create.c:300
#7  0x00007f811955a6dd in clone () at
../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#8  0x0000000000000000 in ?? ()
(gdb) disas
Dump of assembler code for function strlen:
0x00007f81195087b0 <strlen+0>:  mov    %rdi,%rcx
0x00007f81195087b3 <strlen+3>:  mov    %rdi,%r8
0x00007f81195087b6 <strlen+6>:  and    $0xfffffffffffffff0,%rdi
0x00007f81195087ba <strlen+10>: pxor   %xmm1,%xmm1
0x00007f81195087be <strlen+14>: or     $0xffffffffffffffff,%esi
0x00007f81195087c1 <strlen+17>: movdqa (%rdi),%xmm0
0x00007f81195087c5 <strlen+21>: sub    %rdi,%rcx
0x00007f81195087c8 <strlen+24>: lea    0x10(%rdi),%rdi
0x00007f81195087cc <strlen+28>: pcmpeqb %xmm1,%xmm0
0x00007f81195087d0 <strlen+32>: shl    %cl,%esi
0x00007f81195087d2 <strlen+34>: pmovmskb %xmm0,%edx
0x00007f81195087d6 <strlen+38>: xor    %eax,%eax
0x00007f81195087d8 <strlen+40>: neg    %r8
0x00007f81195087db <strlen+43>: and    %esi,%edx
0x00007f81195087dd <strlen+45>: jne    0x7f81195087f3 <strlen+67>
0x00007f81195087df <strlen+47>: movdqa (%rdi),%xmm0
0x00007f81195087e3 <strlen+51>: lea    0x10(%rdi),%rdi
0x00007f81195087e7 <strlen+55>: pcmpeqb %xmm1,%xmm0
0x00007f81195087eb <strlen+59>: pmovmskb %xmm0,%edx
0x00007f81195087ef <strlen+63>: test   %edx,%edx
0x00007f81195087f1 <strlen+65>: je     0x7f81195087df <strlen+47>
0x00007f81195087f3 <strlen+67>: lea    -0x10(%rdi,%r8,1),%rdi
0x00007f81195087f8 <strlen+72>: bsf    %edx,%eax
0x00007f81195087fb <strlen+75>: add    %rdi,%rax
0x00007f81195087fe <strlen+78>: retq
End of assembler dump.

strdup is called by make_nonnull_node_device (which is inlined):
dev_dst->name = strdup(dev_src->name);

Luca





More information about the Pkg-libvirt-maintainers mailing list