Package: klogd
Version: 1.5-6.2
Severity: important

Dear Debian folks,


klogd suddenly started to consume 100 % of one CPU core.

        $ ps aux | grep klogd
        klog      1731 98.4  0.0   2860  1580 ?        Rs   12:50 194:41 
/sbin/klogd -P /var/run/klogd/kmsg

Due to missing debugging symbols attaching with GDB does not seem to be
that useful. But maybe it is.

        $ sudo gdb --pid 1731
        GNU gdb (GDB) 7.4.1-debian
        Copyright (C) 2012 Free Software Foundation, Inc.
        License GPLv3+: GNU GPL version 3 or later 
<http://gnu.org/licenses/gpl.html>
        This is free software: you are free to change and redistribute it.
        There is NO WARRANTY, to the extent permitted by law.  Type "show 
copying"
        and "show warranty" for details.
        This GDB was configured as "i486-linux-gnu".
        For bug reporting instructions, please see:
        <http://www.gnu.org/software/gdb/bugs/>.
        Attaching to process 1731
        Reading symbols from /sbin/klogd...(no debugging symbols found)...done.
        Reading symbols from /lib/i386-linux-gnu/i686/cmov/libc.so.6...Reading 
symbols from /usr/lib/debug/lib/i386-linux-gnu/i686/cmov/libc-2.13.so...done.
        done.
        Loaded symbols for /lib/i386-linux-gnu/i686/cmov/libc.so.6
        Reading symbols from /lib/ld-linux.so.2...(no debugging symbols 
found)...done.
        Loaded symbols for /lib/ld-linux.so.2
        0xffffe424 in __kernel_vsyscall ()
        (gdb) bt
        #0  0xffffe424 in __kernel_vsyscall ()
        #1  0xb76f0f53 in __read_nocancel () at 
../sysdeps/unix/syscall-template.S:82
        #2  0x0804a404 in ?? ()
        #3  0x080496a5 in ?? ()
        #4  0xb7646e46 in __libc_start_main (main=0x80492e0, argc=3, 
ubp_av=0xbf87aee4, init=0x804bff0, fini=0x804bfe0, rtld_fini=0xb77cd590, 
            stack_end=0xbf87aedc) at libc-start.c:228
        #5  0x08049949 in ?? ()
        (gdb) c
        Continuing.
        ^C     
        Program received signal SIGINT, Interrupt.
        0xffffe424 in __kernel_vsyscall ()
        (gdb) bt
        #0  0xffffe424 in __kernel_vsyscall ()
        #1  0xb76f0f53 in __read_nocancel () at 
../sysdeps/unix/syscall-template.S:82
        #2  0x0804a404 in ?? ()
        #3  0x080496a5 in ?? ()
        #4  0xb7646e46 in __libc_start_main (main=0x80492e0, argc=3, 
ubp_av=0xbf87aee4, init=0x804bff0, fini=0x804bfe0, rtld_fini=0xb77cd590, 
            stack_end=0xbf87aedc) at libc-start.c:228
        #5  0x08049949 in ?? ()
        (gdb) c
        Continuing.
        ^C  
        Program received signal SIGINT, Interrupt.
        0xffffe424 in __kernel_vsyscall ()
        (gdb) bt
        #0  0xffffe424 in __kernel_vsyscall ()
        #1  0xb76f0f53 in __read_nocancel () at 
../sysdeps/unix/syscall-template.S:82
        #2  0x0804a404 in ?? ()
        #3  0x080496a5 in ?? ()
        #4  0xb7646e46 in __libc_start_main (main=0x80492e0, argc=3, 
ubp_av=0xbf87aee4, init=0x804bff0, fini=0x804bfe0, rtld_fini=0xb77cd590, 
            stack_end=0xbf87aedc) at libc-start.c:228
        #5  0x08049949 in ?? ()
        (gdb) c
        Continuing.
        ^C
        Program received signal SIGINT, Interrupt.
        0xffffe424 in __kernel_vsyscall ()
        (gdb) quit
        A debugging session is active.

        Inferior 1 [process 1731] will be detached.

        Quit anyway? (y or n) y

It seems to want to read something. The following output was printed
continuously to the terminal when attaching with `strace`.

        $ sudo strace -p 1731
        […]
        read(0, "", 4095)                       = 0
        read(0, "", 4095)                       = 0
        read(0, "", 4095)                       = 0
        read(0, "", 4095)                       = 0
        read(0, "", 4095)                       = 0
        [several more times]

Buildung klogd with debugging symbols and installing the rogue(?)
process was killed.

        $ export DEB_BUILD_OPTIONS="debug"
        $ dpkg-buildpackage -us -uc -B
        $ sudo dpkg -i ../klogd_1.5-6.2_i386.deb 
        (Lese Datenbank ... 494344 Dateien und Verzeichnisse sind derzeit 
installiert.)
        Vorbereitung zum Ersetzen von klogd 1.5-6.2 (durch 
../klogd_1.5-6.2_i386.deb) ...
        Ersatz für klogd wird entpackt ...
        klogd (1.5-6.2) wird eingerichtet ...
        [....] Stopping kernel log daemon...start-stop-daemon: warning: failed 
to kill 1729: No such process
        1 pids were not killed
        No process in pidfile '/var/run/klogd/kmsgpipe.pid' found running; none 
killed.
        . ok 
        [ ok ] Starting kernel log daemon....
        Trigger für man-db werden verarbeitet ...

Is that a known problem?

I also do not know why and how `/etc/init.d/klogd` was changed.


Thanks,

Paul

-- System Information:
Debian Release: wheezy/sid
  APT prefers unstable
  APT policy: (500, 'unstable'), (500, 'testing'), (500, 'stable'), (1, 
'experimental')
Architecture: i386 (i686)

Kernel: Linux 3.5.0-rc5+ (SMP w/2 CPU cores)
Locale: LANG=de_DE.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash

Versions of packages klogd depends on:
ii  adduser                       3.113+nmu3
ii  initscripts                   2.88dsf-22.1
ii  libc6                         2.13-34
ii  lsb-base                      4.1+Debian7
ii  sysklogd [system-log-daemon]  1.5-6.2

klogd recommends no packages.

klogd suggests no packages.

-- Configuration Files:
/etc/init.d/klogd changed:
PATH=/bin:/usr/bin:/sbin:/usr/sbin
pidfile=/var/run/klogd/klogd.pid
kmsgpipe=/var/run/klogd/kmsg
kmsgpidfile=/var/run/klogd/kmsgpipe.pid
binpath=/sbin/klogd
test -f $binpath || exit 0
. /lib/lsb/init-functions
KLOGD="-P $kmsgpipe"
test ! -r /etc/default/klogd || . /etc/default/klogd
case "$1" in
  start)
    log_begin_msg "Starting kernel log daemon..."
    # create klog-writeable pid and fifo directory
    mkdir -p /var/run/klogd
    chown klog:klog /var/run/klogd
    mkfifo -m 700 $kmsgpipe
    chown klog:klog $kmsgpipe
 
    # shovel /proc/kmsg to pipe readable by klogd user
    start-stop-daemon --start --pidfile $kmsgpidfile --exec /bin/dd -b -m -- 
bs=1 if=/proc/kmsg of=$kmsgpipe
 
    # start klogd as non-root with reading from kmsgpipe
    start-stop-daemon --start --chuid klog --exec $binpath -- $KLOGD
    log_end_msg $?
    ;;
  stop)
    log_begin_msg "Stopping kernel log daemon..."
    start-stop-daemon --stop --retry 3 --oknodo --exec $binpath --pidfile 
$pidfile
    # stop kmsgpipe
    start-stop-daemon --stop --oknodo --pidfile $kmsgpidfile
    rm -f $kmsgpidfile $kmsgpipe
    log_end_msg $?
    ;;
  restart|force-reload)
    $0 stop
    sleep 1
    $0 start
    ;;
  status)
    status_of_proc -p $pidfile $binpath klogd && exit 0 || exit $?
    ;;
  *)
    log_success_msg "Usage: /etc/init.d/klogd 
{start|stop|restart|force-reload|status}"
    exit 1
esac
exit 0


-- no debconf information

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to