spamass-milt-list
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: spass-milter core dump, Dan Nelson


From: James Lees Vodanovich
Subject: Re: spass-milter core dump, Dan Nelson
Date: Wed, 28 Mar 2007 11:51:15 +1000
User-agent: Mail/News 1.5.0.10 (X11/20070323)

/
Thank you for the pointers.
I got the following error.
Error detected by libpthread: Invalid mutex.
Detected by file "/home/builds/ab/netbsd-3-1-RELEASE/src/lib/libpthread/pthread_mutex.c", 
line 334, function "pthread_mutex_unlock".
See pthread(3) for information.

After Some digging around, I found this occurs when performing an invalid 
function, such as unlocking a previously unlocked lock.


I cant see any reference to these functions in the code, I even took the step of deleting the FreeBSD lines from the code prior to compilation
But still I find them in the Binary.

nm work/spamass-milter-0.3.1/spamass-milter | grep thread
08050a40 t _Z18__gthread_active_pv
080509c4 t _Z20__gthread_mutex_lockP18__pthread_mutex_st
080509e8 t _Z22__gthread_mutex_unlockP18__pthread_mutex_st
08056b0c r _ZZ18__gthread_active_pvE20__gthread_active_ptr
        U pthread_create
        U pthread_detach

built with the following
c++ -DHAVE_CONFIG_H -I. -I. -I.    -I/usr/include  -O2 -I/usr/include -Wall 
-fno-default-inline -fno-inline  -pthread -c -o spamass-milter.o 
spamass-milter.cpp
c++  -O2 -I/usr/include -Wall -fno-default-inline -fno-inline  -pthread  
-L/usr/lib -Wl,-R/usr/lib -Wl,-R/usr/pkg/lib  -o spamass-milter  
spamass-milter.o  -lmilter


For the meantime I have set PTHREAD_DIAGASSERT=A
which ignores the error, but this doesn't make me feel too comfortable.

/>That's an odd stack trace, since I don't see any frames belonging to
spamass-milter itself, and I don't think the standard C++ string
methods use mutexes :)  It looks like pthread_mutex_unlock found
something wrong and called pthread__errorfunc to print a message, which
then called kill(getpid(), SIGABRT).  To get that error message, you
can either run spamass-milter in a terminal window without background
it, or you can set the environment variable PTHREAD_DIAGASSERT to "l",
which should cause the error to get sent to syslog.

Spamass-milter doesn't use any mutexes itself except when running on
FreeBSD (to work around a popen bug in old versions of 4.x), so I'm not
sure what the underlying cause would be.


/ running only a few hours/
/ Any idea's/
/ (gdb) bt/
/ #0  0xbda5e0fb in kill () from /usr/lib/libc.so.12/
/ #1  0xbdb103b5 in pthread__errorfunc () from /usr/lib/libpthread.so.0/
/ #2  0xbdb0d441 in pthread_mutex_unlock () from /usr/lib/libpthread.so.0/
/ #3  0x0805336a in std::basic_string<char, std::char_traits<char>, /
/ std::allocator<char> > std::operator+<char, std::char_traits<char>, /
/ std::allocator<char> >(char const*, std::basic_string<char, /
/ std::char_traits<char>, std::allocator<char> > const&) ()/
/ #4  0x0805291a in std::basic_string<char, std::char_traits<char>, /
/ std::allocator<char> > std::operator+<char, std::char_traits<char>, /
/ std::allocator<char> >(char const*, std::basic_string<char, /
/ std::char_traits<char>, std::allocator<char> > const&) ()/
/ #5  0x080529bb in std::basic_string<char, std::char_traits<char>, /
/ std::allocator<char> > std::operator+<char, std::char_traits<char>, /
/ std::allocator<char> >(char const*, std::basic_string<char, /
/ std::char_traits<char>, std::allocator<char> > const&) ()/
/ #6  0xbdb0f17d in pthread_create () from /usr/lib/libpthread.so.0/

That's an odd stack trace, since I don't see any frames belonging to
spamass-milter itself, and I don't think the standard C++ string
methods use mutexes :)  It looks like pthread_mutex_unlock found
something wrong and called pthread__errorfunc to print a message, which
then called kill(getpid(), SIGABRT).  To get that error message, you
can either run spamass-milter in a terminal window without background
it, or you can set the environment variable PTHREAD_DIAGASSERT to "l",
which should cause the error to get sent to syslog.

Spamass-milter doesn't use any mutexes itself except when running on
FreeBSD (to work around a popen bug in old versions of 4.x), so I'm not
sure what the underlying cause would be.

--
       Dan Nelson
       address@hidden





reply via email to

[Prev in Thread] Current Thread [Next in Thread]