You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@qpid.apache.org by yoav <yo...@zadarastorage.com> on 2011/10/09 21:37:17 UTC

Qpid raise an exception each time my program terminates

Hi,
I'm pretty new to Qpid and my application includes an AP{I server listening
on a Qpid connection. We did the sequence as shown in the examples (i.e.,
Connection connection(..); ... connection.open(); .. Receiver receiver -->
connection.close();  receiver.close();) and it works fine.
Problem is that in some configurations when exiting from our application,
AFTER application cleanup is completed we have a Qpid exception
#0  0x00007fe73311cd05 in raise () from /lib/x86_64-linux-gnu/libc.so.6
#1  0x00007fe733120a47 in abort () from /lib/x86_64-linux-gnu/libc.so.6
#2  0x00007fe7350476dd in __gnu_cxx::__verbose_terminate_handler() () from
/usr/lib/x86_64-linux-gnu/libstdc++.so.6
#3  0x00007fe735045926 in ?? () from
/usr/lib/x86_64-linux-gnu/libstdc++.so.6
#4  0x00007fe735045953 in std::terminate() () from
/usr/lib/x86_64-linux-gnu/libstdc++.so.6
#5  0x00007fe735045a5e in __cxa_throw () from
/usr/lib/x86_64-linux-gnu/libstdc++.so.6
#6  0x00007fe7311b827a in qpid::sys::PollerPrivate::interruptAll
(this=<value optimized out>) at qpid/sys/epoll/EpollPoller.cpp:327
#7  0x00007fe731591e2f in qpid::client::(anonymous
namespace)::IOThread::~IOThread (this=0x7fe7317fa660, __in_chrg=<value
optimized out>) at qpid/client/ConnectionImpl.cpp:132
#8  0x00007fe733122961 in exit () from /lib/x86_64-linux-gnu/libc.so.6
#9  0x00007fe733107f06 in __libc_start_main () from
/lib/x86_64-linux-gnu/libc.so.6
#10 0x000000000040e0a9 in _start ()

The issue is probably in this QPID_POSIX_CHECK:
    void interruptAll() {
        ::epoll_event epe;
        // Not EPOLLONESHOT, so we eventually get all threads
        epe.events = ::EPOLLIN;
        epe.data.u64 = 2; // Keep valgrind happy
        QPID_POSIX_CHECK(::epoll_ctl(epollFd, EPOLL_CTL_MOD,
alwaysReadableFd, &epe));  
    }
As a result, I get core dumps each termination, which cause a sever a disk
space problem 
Any ideas why this happens and how to avoid it? 
Thanks,
Yoav

--
View this message in context: http://apache-qpid-users.2158936.n2.nabble.com/Qpid-raise-an-exception-each-time-my-program-terminates-tp6875052p6875052.html
Sent from the Apache Qpid users mailing list archive at Nabble.com.

---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:users-subscribe@qpid.apache.org


Re: Qpid raise an exception each time my program terminates

Posted by yoav <yo...@zadarastorage.com>.
We're using qpidc-0.10.
I'll try to create a simple reproducer

On Mon, Oct 10, 2011 at 2:19 PM, Gordon Sim [via Apache Qpid users] <
ml-node+s2158936n6876660h42@n2.nabble.com> wrote:

> On 10/10/2011 11:58 AM, yoav wrote:
> > Only place we do Qpid connection/session/receiver handles is inside a
> static
> > function run on a separate thread. The objects are released as required
> and
> > that function terminated and thread no longer exists.
> > as for the libraries I only have Qpid&  MySql so I don't think there's
> > another user. I already tried changing the link order - no effect
>
> Can you get a simple reproducer? That might help chase it down. What
> version of the Qpid library are you using btw?
>
> ---------------------------------------------------------------------
> Apache Qpid - AMQP Messaging Implementation
> Project:      http://qpid.apache.org
> Use/Interact: mailto:[hidden email]<http://user/SendEmail.jtp?type=node&node=6876660&i=0>
>
>
>
> ------------------------------
>  If you reply to this email, your message will be added to the discussion
> below:
>
> http://apache-qpid-users.2158936.n2.nabble.com/Qpid-raise-an-exception-each-time-my-program-terminates-tp6875052p6876660.html
>  To start a new topic under Apache Qpid users, email
> ml-node+s2158936n2158936h98@n2.nabble.com
> To unsubscribe from Apache Qpid users, click here<http://apache-qpid-users.2158936.n2.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=2158936&code=eW9hdkB6YWRhcmFzdG9yYWdlLmNvbXwyMTU4OTM2fC0xMDc5MzQwNTg=>.
>
>


--
View this message in context: http://apache-qpid-users.2158936.n2.nabble.com/Qpid-raise-an-exception-each-time-my-program-terminates-tp6875052p6876806.html
Sent from the Apache Qpid users mailing list archive at Nabble.com.

Re: Qpid raise an exception each time my program terminates

Posted by yoav <yo...@zadarastorage.com>.
One other (hopefully helpful ) information is that this  never happened till
we converted the application to run as a daemon. Ever since, it happens, and
only when the daemon is closed gracefully (kill -15, etc.)


On Mon, Oct 10, 2011 at 2:19 PM, Gordon Sim [via Apache Qpid users] <
ml-node+s2158936n6876660h42@n2.nabble.com> wrote:

> On 10/10/2011 11:58 AM, yoav wrote:
> > Only place we do Qpid connection/session/receiver handles is inside a
> static
> > function run on a separate thread. The objects are released as required
> and
> > that function terminated and thread no longer exists.
> > as for the libraries I only have Qpid&  MySql so I don't think there's
> > another user. I already tried changing the link order - no effect
>
> Can you get a simple reproducer? That might help chase it down. What
> version of the Qpid library are you using btw?
>
> ---------------------------------------------------------------------
> Apache Qpid - AMQP Messaging Implementation
> Project:      http://qpid.apache.org
> Use/Interact: mailto:[hidden email]<http://user/SendEmail.jtp?type=node&node=6876660&i=0>
>
>
>
> ------------------------------
>  If you reply to this email, your message will be added to the discussion
> below:
>
> http://apache-qpid-users.2158936.n2.nabble.com/Qpid-raise-an-exception-each-time-my-program-terminates-tp6875052p6876660.html
>  To start a new topic under Apache Qpid users, email
> ml-node+s2158936n2158936h98@n2.nabble.com
> To unsubscribe from Apache Qpid users, click here<http://apache-qpid-users.2158936.n2.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=2158936&code=eW9hdkB6YWRhcmFzdG9yYWdlLmNvbXwyMTU4OTM2fC0xMDc5MzQwNTg=>.
>
>


--
View this message in context: http://apache-qpid-users.2158936.n2.nabble.com/Qpid-raise-an-exception-each-time-my-program-terminates-tp6875052p6876855.html
Sent from the Apache Qpid users mailing list archive at Nabble.com.

Re: Qpid raise an exception each time my program terminates

Posted by Gordon Sim <gs...@redhat.com>.
On 10/10/2011 11:58 AM, yoav wrote:
> Only place we do Qpid connection/session/receiver handles is inside a static
> function run on a separate thread. The objects are released as required and
> that function terminated and thread no longer exists.
> as for the libraries I only have Qpid&  MySql so I don't think there's
> another user. I already tried changing the link order - no effect

Can you get a simple reproducer? That might help chase it down. What 
version of the Qpid library are you using btw?

---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:users-subscribe@qpid.apache.org


Re: Qpid raise an exception each time my program terminates

Posted by yoav <yo...@zadarastorage.com>.
Only place we do Qpid connection/session/receiver handles is inside a static
function run on a separate thread. The objects are released as required and
that function terminated and thread no longer exists.
as for the libraries I only have Qpid & MySql so I don't think there's
another user. I already tried changing the link order - no effect


On Mon, Oct 10, 2011 at 10:23 AM, Gordon Sim [via Apache Qpid users] <
ml-node+s2158936n6876163h35@n2.nabble.com> wrote:

> On 10/09/2011 08:37 PM, yoav wrote:
>
> > Hi,
> > I'm pretty new to Qpid and my application includes an AP{I server
> listening
> > on a Qpid connection. We did the sequence as shown in the examples (i.e.,
>
> > Connection connection(..); ... connection.open(); .. Receiver receiver
> -->
> > connection.close();  receiver.close();) and it works fine.
> > Problem is that in some configurations when exiting from our application,
>
> > AFTER application cleanup is completed we have a Qpid exception
> > #0  0x00007fe73311cd05 in raise () from /lib/x86_64-linux-gnu/libc.so.6
> > #1  0x00007fe733120a47 in abort () from /lib/x86_64-linux-gnu/libc.so.6
> > #2  0x00007fe7350476dd in __gnu_cxx::__verbose_terminate_handler() ()
> from
> > /usr/lib/x86_64-linux-gnu/libstdc++.so.6
> > #3  0x00007fe735045926 in ?? () from
> > /usr/lib/x86_64-linux-gnu/libstdc++.so.6
> > #4  0x00007fe735045953 in std::terminate() () from
> > /usr/lib/x86_64-linux-gnu/libstdc++.so.6
> > #5  0x00007fe735045a5e in __cxa_throw () from
> > /usr/lib/x86_64-linux-gnu/libstdc++.so.6
> > #6  0x00007fe7311b827a in qpid::sys::PollerPrivate::interruptAll
> > (this=<value optimized out>) at qpid/sys/epoll/EpollPoller.cpp:327
> > #7  0x00007fe731591e2f in qpid::client::(anonymous
> > namespace)::IOThread::~IOThread (this=0x7fe7317fa660, __in_chrg=<value
> > optimized out>) at qpid/client/ConnectionImpl.cpp:132
> > #8  0x00007fe733122961 in exit () from /lib/x86_64-linux-gnu/libc.so.6
> > #9  0x00007fe733107f06 in __libc_start_main () from
> > /lib/x86_64-linux-gnu/libc.so.6
> > #10 0x000000000040e0a9 in _start ()
> >
> > The issue is probably in this QPID_POSIX_CHECK:
> >      void interruptAll() {
> >          ::epoll_event epe;
> >          // Not EPOLLONESHOT, so we eventually get all threads
> >          epe.events = ::EPOLLIN;
> >          epe.data.u64 = 2; // Keep valgrind happy
> >          QPID_POSIX_CHECK(::epoll_ctl(epollFd, EPOLL_CTL_MOD,
> > alwaysReadableFd,&epe));
> >      }
> > As a result, I get core dumps each termination, which cause a sever a
> disk
> > space problem
> > Any ideas why this happens and how to avoid it?
>
> My guess is it is related to scope of variables holding Qpid API
> objects. E.g. do you have any static variables holding
> connection/session/receiver handles? Are you using any libraries that
> themselves use Qpid (and if so what is the link order)?
>
> ---------------------------------------------------------------------
> Apache Qpid - AMQP Messaging Implementation
> Project:      http://qpid.apache.org
> Use/Interact: mailto:[hidden email]<http://user/SendEmail.jtp?type=node&node=6876163&i=0>
>
>
>
> ------------------------------
>  If you reply to this email, your message will be added to the discussion
> below:
>
> http://apache-qpid-users.2158936.n2.nabble.com/Qpid-raise-an-exception-each-time-my-program-terminates-tp6875052p6876163.html
>  To start a new topic under Apache Qpid users, email
> ml-node+s2158936n2158936h98@n2.nabble.com
> To unsubscribe from Apache Qpid users, click here<http://apache-qpid-users.2158936.n2.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=2158936&code=eW9hdkB6YWRhcmFzdG9yYWdlLmNvbXwyMTU4OTM2fC0xMDc5MzQwNTg=>.
>
>


--
View this message in context: http://apache-qpid-users.2158936.n2.nabble.com/Qpid-raise-an-exception-each-time-my-program-terminates-tp6875052p6876498.html
Sent from the Apache Qpid users mailing list archive at Nabble.com.

Re: Qpid raise an exception each time my program terminates

Posted by Gordon Sim <gs...@redhat.com>.
On 10/09/2011 08:37 PM, yoav wrote:
> Hi,
> I'm pretty new to Qpid and my application includes an AP{I server listening
> on a Qpid connection. We did the sequence as shown in the examples (i.e.,
> Connection connection(..); ... connection.open(); .. Receiver receiver -->
> connection.close();  receiver.close();) and it works fine.
> Problem is that in some configurations when exiting from our application,
> AFTER application cleanup is completed we have a Qpid exception
> #0  0x00007fe73311cd05 in raise () from /lib/x86_64-linux-gnu/libc.so.6
> #1  0x00007fe733120a47 in abort () from /lib/x86_64-linux-gnu/libc.so.6
> #2  0x00007fe7350476dd in __gnu_cxx::__verbose_terminate_handler() () from
> /usr/lib/x86_64-linux-gnu/libstdc++.so.6
> #3  0x00007fe735045926 in ?? () from
> /usr/lib/x86_64-linux-gnu/libstdc++.so.6
> #4  0x00007fe735045953 in std::terminate() () from
> /usr/lib/x86_64-linux-gnu/libstdc++.so.6
> #5  0x00007fe735045a5e in __cxa_throw () from
> /usr/lib/x86_64-linux-gnu/libstdc++.so.6
> #6  0x00007fe7311b827a in qpid::sys::PollerPrivate::interruptAll
> (this=<value optimized out>) at qpid/sys/epoll/EpollPoller.cpp:327
> #7  0x00007fe731591e2f in qpid::client::(anonymous
> namespace)::IOThread::~IOThread (this=0x7fe7317fa660, __in_chrg=<value
> optimized out>) at qpid/client/ConnectionImpl.cpp:132
> #8  0x00007fe733122961 in exit () from /lib/x86_64-linux-gnu/libc.so.6
> #9  0x00007fe733107f06 in __libc_start_main () from
> /lib/x86_64-linux-gnu/libc.so.6
> #10 0x000000000040e0a9 in _start ()
>
> The issue is probably in this QPID_POSIX_CHECK:
>      void interruptAll() {
>          ::epoll_event epe;
>          // Not EPOLLONESHOT, so we eventually get all threads
>          epe.events = ::EPOLLIN;
>          epe.data.u64 = 2; // Keep valgrind happy
>          QPID_POSIX_CHECK(::epoll_ctl(epollFd, EPOLL_CTL_MOD,
> alwaysReadableFd,&epe));
>      }
> As a result, I get core dumps each termination, which cause a sever a disk
> space problem
> Any ideas why this happens and how to avoid it?

My guess is it is related to scope of variables holding Qpid API 
objects. E.g. do you have any static variables holding 
connection/session/receiver handles? Are you using any libraries that 
themselves use Qpid (and if so what is the link order)?

---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:users-subscribe@qpid.apache.org