
2010/6/10 Emre Erenoglu <erenoglu@gmail.com>:
On Thu, Jun 10, 2010 at 2:05 PM, Matthias Bolte <matthias.bolte@googlemail.com> wrote:
2010/6/10 Emre Erenoglu <erenoglu@gmail.com>:
Dear list,
I'm trying to package libvirt 0.8.1 for our distribution, Pardus 2009.2. libvirt is installed perfectly normal, and libvirtd runs OK when I start it in a console using root account.
However, when I start libvirtd as a service, with the same parameters, through the normal service startup functions, it segfaults.
The services in Pardus 2009.2 are started using a management backend which works with python and service start/stop scripts are python based.
For libvirt, it's the following: http://svn.pardus.org.tr/pardus/playground/ozan/libvirt/comar/service.py
Whatever I did, I couldn't find why libvirt is crashing. It works normal when I run it from console with exactly the same parameters. Here's an earlier syslog section ending with the crash:
There are some things to consider:
- Did you use the exact same commandline as the initscript when testing manually?
Yes. In fact, the only parameter passed is the --daemon parameter with current configuration.
With absolute path as the initscript? /usr/sbin/libvirtd --daemon --config /etc/libvirt/libvirtd.conf Assuming LIBVIRTD_ARGS is empty in the initscript.
- Did you make sure to use the same environment variable configuration when starting libvirtd manually, compared to the initscript?
Here's the environment of the root user, I will try to find out the environment of the service script:
MANPATH=/usr/local/share/man:/usr/share/man:/opt/sun-jre/man:/usr/kde/4/share/man HOSTNAME=EMRE SHELL=/bin/bash TERM=linux XDG_SESSION_COOKIE=3d6ade2bb28141896f3212d64bf41670-1276174999.886063-1263776093 HUSHLOGIN=FALSE LC_ALL=en_US.UTF-8 USER=root LS_COLORS= ... GUILE_LOAD_PATH=/usr/share/guile/1.8 MC_ENV=/usr/share/mc/bin/mc.sh PAGER=/usr/bin/less CONFIG_PROTECT_MASK=/etc/texmf/web2c /etc/texmf/language.dat.d /etc/texmf/language.def.d /etc/texmf/updmap.d PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin:/opt/sun-jre/bin:/usr/kde/4/sbin:/usr/kde/4/bin
I asked about the environment variables and the commandline because you have /usr/local/sbin befreo /usr/bin in PATH. So you might have two libvirtds installed, one in /usr/local/sbin and one in /usr/sbin. The initscript explicitly starts the one in /usr/sbin. If you just start libvirtd manually without an absolute path then you'll start the one in /usr/local/sbin. This might explain why you cannot reproduce the segfault manually, but it doesn't explain why the segfault happens.
Could you provide a GDB backtrace of the segfault? The syslog entry only says that it crashed in libc, that's not enough information to debug the segfault.
Unfortunately, I can't find a related core file in the system. In fact, core file is not generated. I'll also try to fix this out and come back to the list.
Getting a backtrace would be simpler if you could reproduce the problem manually. In that case you could just start libvirtd in GDB. But getting a backtrace from a coredump will work too. Matthias