collectd SIGABRTs when using apache plugin

Bug #944599 reported by Brad Marshall on 2012-03-02
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
collectd (Ubuntu)
Undecided
Canonical Server Team

Bug Description

After enabling the apache plugin to get data from apache server-status, collectd consistantly gets a SIGABRT. A gdb run looks like:

(gdb) run -C /etc/collectd/collectd.conf -f
Starting program: /usr/sbin/collectd -C /etc/collectd/collectd.conf -f
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7fffed43b700 (LWP 19475)]
[New Thread 0x7fffecc3a700 (LWP 19476)]
[New Thread 0x7fffec439700 (LWP 19477)]
[New Thread 0x7fffebc38700 (LWP 19478)]
[New Thread 0x7fffeb437700 (LWP 19479)]
[New Thread 0x7fffeac36700 (LWP 19480)]
collectd: ath.c:193: _gcry_ath_mutex_lock: Assertion `*lock == ((ath_mutex_t) 0)' failed.

Program received signal SIGABRT, Aborted.
[Switching to Thread 0x7fffec439700 (LWP 19477)]
0x00007ffff762e445 in __GI_raise (sig=<optimized out>) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
64 ../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or directory.
(gdb) bt
#0 0x00007ffff762e445 in __GI_raise (sig=<optimized out>) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
#1 0x00007ffff7631bab in __GI_abort () at abort.c:91
#2 0x00007ffff762710e in __assert_fail_base (fmt=<optimized out>, assertion=0x7ffff5da8a66 "*lock == ((ath_mutex_t) 0)", file=0x7ffff5da8a60 "ath.c", line=<optimized out>,
    function=<optimized out>) at assert.c:94
#3 0x00007ffff76271b2 in __GI___assert_fail (assertion=0x7ffff5da8a66 "*lock == ((ath_mutex_t) 0)", file=0x7ffff5da8a60 "ath.c", line=193,
    function=0x7ffff5da8ac0 "_gcry_ath_mutex_lock") at assert.c:103
#4 0x00007ffff5d62312 in _gcry_ath_mutex_lock (lock=0x7ffff5fceb68) at ath.c:193
#5 0x00007ffff5d9c560 in lock_pool () at random-csprng.c:298
#6 0x00007ffff5d9cace in initialize () at random-csprng.c:327
#7 0x00007ffff5d9db15 in _gcry_rngcsprng_create_nonce (buffer=0x7fffec438c8f, length=1) at random-csprng.c:1341
#8 0x00007ffff0336233 in wrap_gcry_rnd_init (ctx=<optimized out>) at rnd.c:39
#9 0x00007ffff02e1d1b in _gnutls_rnd_init () at random.c:39
#10 0x00007ffff02d0ff5 in gnutls_global_init () at gnutls_global.c:236
#11 0x00007ffff0e62167 in Curl_gtls_init () from /usr/lib/x86_64-linux-gnu/libcurl-gnutls.so.4
#12 0x00007ffff0e552ce in curl_global_init () from /usr/lib/x86_64-linux-gnu/libcurl-gnutls.so.4
#13 0x00007ffff0e5541a in curl_easy_init () from /usr/lib/x86_64-linux-gnu/libcurl-gnutls.so.4
#14 0x00007ffff108515f in init_host (st=0x6514f0) at apache.c:403
#15 apache_read_host (user_data=<optimized out>) at apache.c:637
#16 0x000000000040b568 in plugin_read_thread (args=<optimized out>) at plugin.c:433
#17 0x00007ffff7bc4e9a in start_thread (arg=0x7fffec439700) at pthread_create.c:308
#18 0x00007ffff76e874d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#19 0x0000000000000000 in ?? ()

Syslog entries look like:

Mar 2 06:48:58 hostname collectd[21661]: Libgcrypt warning: missing initialization - please fix the application
Mar 2 06:48:58 hostname collectd[21661]: Initialization complete, entering read-loop.
Mar 2 06:48:58 hostname collectd[21661]: rrdtool plugin: rrd_update_r (hostname.example.com/users/users.rrd) failed: hostname.example.com/users/users.rrd: illegal attempt to update using time 1330670938 when last update time is 1330670938 (minimum one second step)
Mar 2 06:48:58 hostname collectdmon[21515]: Warning: collectd was terminated by signal 6 (core dumped)

The extract of the config used is:

LoadPlugin apache
<Plugin apache>
        <Instance "apache-hostname">
                URL "http://xx.yy.zz/server-status?auto"
        </Instance>
</Plugin>

I have also tried it with a Server "apache" stanza as well.

If I disable any apache checks the rrd_update_r error message disappears, and it no longer gets a SIGABRT. The libgcrypt warning still persists, however.

Please let me know if there's any further information that could help in debugging this.

ProblemType: Bug
DistroRelease: Ubuntu 12.04
Package: collectd 4.10.1-2.1ubuntu7
ProcVersionSignature: Ubuntu 3.2.0-17.27-generic 3.2.6
Uname: Linux 3.2.0-17-generic x86_64
ApportVersion: 1.93-0ubuntu2
Architecture: amd64
Date: Fri Mar 2 06:10:28 2012
ProcEnviron:
 LANGUAGE=en_GB:
 TERM=screen
 LANG=en_GB.UTF-8
 SHELL=/bin/bash
SourcePackage: collectd
UpgradeStatus: No upgrade log present (probably fresh install)
modified.conffile..etc.collectd.collectd.conf: [modified]
mtime.conffile..etc.collectd.collectd.conf: 2012-03-02T06:08:09.219169

Brad Marshall (brad-marshall) wrote :
Changed in collectd (Ubuntu):
assignee: nobody → Canonical Server Team (canonical-server)
Aleh Filipovich (aleh) wrote :

I had the same problem, it was caused by URL"http://xx.yy.zz/server-status?auto" returning HTTP redirect instead of apache status page. After I had fixed mod_status settings and ensured URL returns status info collectd started working.

To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers