[Pkg-libvirt-maintainers] Bug#605965: python-libvirt: segfaults after making lots of readonly connections

david b db.pub.mail at gmail.com
Sun Dec 5 05:26:06 UTC 2010


Package: python-libvirt
Version: 0.8.3-4
Severity: normal

Here is an example python script you can use to reproduce the problem:

import libvirt
import sys


def main():
	conn = libvirt.openReadOnly(None)

if __name__ == "__main__":
	for i in range(0, 10000):
		main()

If you run it after a number of connections python will segfault.

Some gdb output
...
[New Thread 0x7ffff7e8f710 (LWP 22195)]
[Thread 0x7ffff7e8f710 (LWP 22195) exited]
[Thread 0x7ffff7e6e710 (LWP 22194) exited]

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff474c9e3 in ?? () from /usr/lib/virtualbox/VBoxXPCOMC.so

gdb) bt
#0  0x00007ffff474c9e3 in ?? () from /usr/lib/virtualbox/VBoxXPCOMC.so
#1  0x00007ffff474a429 in ?? () from /usr/lib/virtualbox/VBoxXPCOMC.so
#2  0x00007ffff4749a3c in ?? () from /usr/lib/virtualbox/VBoxXPCOMC.so
#3  0x00007ffff63aa5f5 in vboxInitialize (conn=0x7fffec008a60, auth=<value optimized out>, flags=<value optimized out>)
    at vbox/vbox_tmpl.c:681
#4  vboxOpen (conn=0x7fffec008a60, auth=<value optimized out>, flags=<value optimized out>) at vbox/vbox_tmpl.c:815
#5  0x00007ffff63115b7 in do_open (name=<value optimized out>, auth=0x0, flags=1) at libvirt.c:1244
#6  0x00007ffff6312327 in virConnectOpenReadOnly (name=0x0) at libvirt.c:1461
#7  0x00007ffff662d9f5 in libvirt_virConnectOpenReadOnly (self=<value optimized out>, args=<value optimized out>) at libvirt.c:2480
#8  0x00000000004a7ba5 in call_function (f=
    Frame 0x91be20, for file /usr/lib/python2.6/dist-packages/libvirt.py, line 179, in openReadOnly (name=None), 
    throwflag=<value optimized out>) at ../Python/ceval.c:3750
#9  PyEval_EvalFrameEx (f=Frame 0x91be20, for file /usr/lib/python2.6/dist-packages/libvirt.py, line 179, in openReadOnly (name=None), 
    throwflag=<value optimized out>) at ../Python/ceval.c:2412
#10 0x00000000004a84a0 in fast_function (f=Frame 0x953000, for file example.py, line 6, in main (), throwflag=<value optimized out>)
    at ../Python/ceval.c:3836
#11 call_function (f=Frame 0x953000, for file example.py, line 6, in main (), throwflag=<value optimized out>) at ../Python/ceval.c:3771
#12 PyEval_EvalFrameEx (f=Frame 0x953000, for file example.py, line 6, in main (), throwflag=<value optimized out>) at ../Python/ceval.c:2412
#13 0x00000000004a84a0 in fast_function (f=Frame 0x91afd0, for file example.py, line 16, in <module> (), throwflag=<value optimized out>)
    at ../Python/ceval.c:3836
#14 call_function (f=Frame 0x91afd0, for file example.py, line 16, in <module> (), throwflag=<value optimized out>) at ../Python/ceval.c:3771
#15 PyEval_EvalFrameEx (f=Frame 0x91afd0, for file example.py, line 16, in <module> (), throwflag=<value optimized out>)
    at ../Python/ceval.c:2412
#16 0x00000000004a95c1 in PyEval_EvalCodeEx (co=0x7ffff7f07f30, globals=<value optimized out>, locals=<value optimized out>, args=0x0, 
    argcount=<value optimized out>, kws=<value optimized out>, kwcount=0, defs=0x0, defcount=0, closure=0x0) at ../Python/ceval.c:3000
#17 0x00000000004a9692 in PyEval_EvalCode (co=0x0, globals=<unknown at remote 0x7fffffff983c>, locals=<unknown at remote 0xffffffff>)
    at ../Python/ceval.c:541
#18 0x00000000004c98be in run_mod (fp=<value optimized out>, filename=0x7fffffffe623 "example.py", start=<value optimized out>, 
    globals=<value optimized out>, locals=<value optimized out>, closeit=1, flags=0x7fffffffe240) at ../Python/pythonrun.c:1351
#19 PyRun_FileExFlags (fp=<value optimized out>, filename=0x7fffffffe623 "example.py", start=<value optimized out>, 
    globals=<value optimized out>, locals=<value optimized out>, closeit=1, flags=0x7fffffffe240) at ../Python/pythonrun.c:1337
#20 0x00000000004c9ad4 in PyRun_SimpleFileExFlags (fp=<value optimized out>, filename=0x7fffffffe623 "example.py", closeit=1, flags=
    0x7fffffffe240) at ../Python/pythonrun.c:941
#21 0x000000000041a6bd in Py_Main (argc=-135262080, argv=<value optimized out>) at ../Modules/main.c:577
#22 0x00007ffff6a09c4d in __libc_start_main (main=<value optimized out>, argc=<value optimized out>, ubp_av=<value optimized out>, 
    init=<value optimized out>, fini=<value optimized out>, rtld_fini=<value optimized out>, stack_end=0x7fffffffe358) at libc-start.c:228
#23 0x00000000004198d9 in _start ()


(gdb) i r 
rax            0x7fffec00b470	140737152857200
rbx            0x80004005	2147500037
rcx            0x7ffff7dda280	140737351885440
rdx            0xffffffff	4294967295
rsi            0x7fffffff983c	140737488328764
rdi            0x0	0
rbp            0x7fffffff9870	0x7fffffff9870
rsp            0x7fffffff9800	0x7fffffff9800
r8             0x7fffec00b460	140737152857184
r9             0x10	16
r10            0x7ffff6a677d0	140737331492816
r11            0x0	0
r12            0x7fffffff9810	140737488328720
r13            0x7fffffff9820	140737488328736
r14            0x7fffffff9830	140737488328752
r15            0x7fffffff9820	140737488328736
rip            0x7ffff474c9e3	0x7ffff474c9e3
eflags         0x10202	[ IF RF ]
cs             0x33	51
ss             0x2b	43
ds             0x0	0
es             0x0	0
fs             0x0	0
gs             0x0	0


-- System Information:
Debian Release: 5.0.7
  APT prefers stable
  APT policy: (900, 'stable'), (650, 'testing')
Architecture: amd64 (x86_64)

Kernel: Linux 2.6.36.1 (SMP w/4 CPU cores)
Locale: LANG=en_AU.UTF-8, LC_CTYPE=en_AU.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash





More information about the Pkg-libvirt-maintainers mailing list