benningm / Collectd-Plugins-Amavis

collectd plugin for reading amavisd-new performance counters
0 stars 0 forks source link

segfault on arch linux with collectd 5.6.2, perl 5.4.24, db-5.3.28 and perl-berkeleydb 0.55 #1

Open BlackZork opened 7 years ago

BlackZork commented 7 years ago

Not sure if this is plugin or perl-berkeleydb problem but it does not work on current Arch:

[root@black Collectd-Plugins-Amavis]# collectd -T -f
Undefined subroutine &BerkeleyDB::TxnMgr::CLONE_SKIP called at /usr/share/perl5/vendor_perl/Collectd.pm line 155.

[root@black Collectd-Plugins-Amavis]# collectd -T -f
Segmentation fault (core dumped)

Subsequent attempts dumps core or prints different errors. Collectd, perl, db and perl-berkeleydb installed from official packages.

amavis-agent works without problems, so it looks like this is not an perl-berkeleydb issue.

benningm commented 7 years ago

Is it the only configured Perl plugin?

May be related to threading. Collectd is a multithreaded Application. Is your libperl compiled with threading Support?

Could you include the Output of perl -v?

BlackZork commented 7 years ago

On 12/23/2016 03:01 PM, Markus Benning wrote:

Is it the only configured Perl plugin?

Yes, I just tried to add first one:

BaseName "Collectd::Plugins" LoadPlugin "Amavis" db_env "/var/spool/amavis/db" db_file "snmp.db"

May be related to threading. Collectd is a multithreaded Application. Is your libperl compiled with threading Support?

Could you include the Output of perl -v?

[root@black ~]# perl -v This is perl 5, version 24, subversion 0 (v5.24.0) built for x86_64-linux-thread-multi

benningm commented 7 years ago

Sorry, i meant -V (upper) verbose output. Could you please include it?

I think its a problem with threading in collectd/perl/berkley and not in the module itself. I have no environment to reproduce this. I looked for a docker container, but there seems to be no official base image for your distribution.

You may be able to obtain a stack trace for the segfault if you set a core file limit before running:

$ ulimit -c unlimited

Then open the core dump file with gdb.

BlackZork commented 7 years ago

On 12/24/2016 12:27 PM, Markus Benning wrote:

Sorry, i meant -V (upper) verbose output. Could you please include it?

Platform: osname=linux, osvers=4.7.3-1-arch, archname=x86_64-linux-thread-multi uname='linux flo-64 4.7.3-1-arch #1 smp preempt wed sep 7 17:57:38 cest 2016 x86_64 gnulinux ' config_args='-des -Dusethreads -Duseshrplib -Doptimize=-march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong -Dprefix=/usr -Dvendorprefix=/usr -Dprivlib=/usr/share/perl5/core_perl -Darchlib=/usr/lib/perl5/core_perl -Dsitelib=/usr/share/perl5/site_perl -Dsitearch=/usr/lib/perl5/site_perl -Dvendorlib=/usr/share/perl5/vendor_perl -Dvendorarch=/usr/lib/perl5/vendor_perl -Dscriptdir=/usr/bin/core_perl -Dsitescript=/usr/bin/site_perl -Dvendorscript=/usr/bin/vendor_perl -Dinc_version_list=none -Dman1ext=1perl -Dman3ext=3perl -Dcccdlflags='-fPIC' -Dlddlflags=-shared -Wl,-O1,--sort-common,--as-needed,-z,relro -Dldflags=-Wl,-O1,--sort-common,--as-needed,-z,relro' hint=recommended, useposix=true, d_sigaction=define useithreads=define, usemultiplicity=define use64bitint=define, use64bitall=define, uselongdouble=undef usemymalloc=n, bincompat5005=undef Compiler: cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64', optimize='-march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong', cppflags='-D_REENTRANT -D_GNU_SOURCE -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include' ccversion='', gccversion='6.1.1 20160802', gccosandvers='' intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678, doublekind=3 d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16, longdblkind=3 ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8 alignbytes=8, prototype=define Linker and Libraries: ld='cc', ldflags ='-Wl,-O1,--sort-common,--as-needed,-z,relro -fstack-protector-strong -L/usr/local/lib' libpth=/usr/local/lib /usr/lib/gcc/x86_64-pc-linux-gnu/6.1.1/include-fixed /usr/lib /lib/../lib /usr/lib/../lib /lib /lib64 /usr/lib64 libs=-lpthread -lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lc -lgdbm_compat perllibs=-lpthread -lnsl -ldl -lm -lcrypt -lutil -lc libc=libc-2.24.so, so=so, useshrplib=true, libperl=libperl.so gnulibc_version='2.24' Dynamic Linking: dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E -Wl,-rpath,/usr/lib/perl5/core_perl/CORE' cccdlflags='-fPIC', lddlflags='-shared -Wl,-O1,--sort-common,--as-needed,-z,relro -L/usr/local/lib -fstack-protector-strong'

Characteristics of this binary (from libperl): Compile-time options: HAS_TIMES MULTIPLICITY PERLIO_LAYERS PERL_COPY_ON_WRITE PERL_DONT_CREATE_GVSV PERL_HASH_FUNC_ONE_AT_A_TIME_HARD PERL_IMPLICIT_CONTEXT PERL_MALLOC_WRAP PERL_PRESERVE_IVUV USE_64_BIT_ALL USE_64_BIT_INT USE_ITHREADS USE_LARGE_FILES USE_LOCALE USE_LOCALE_COLLATE USE_LOCALE_CTYPE USE_LOCALE_NUMERIC USE_LOCALE_TIME USE_PERLIO USE_PERL_ATOF USE_REENTRANT_API Built under linux Compiled at Sep 8 2016 13:46:22 @INC: /usr/lib/perl5/site_perl /usr/share/perl5/site_perl /usr/lib/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib/perl5/core_perl /usr/share/perl5/core_perl

BlackZork commented 7 years ago

All coredumps printed by coredumpctl attached. collectd.txt