Uploaded image for project: 'ActiveMQ C++ Client'
  1. ActiveMQ C++ Client
  2. AMQCPP-544

decaf Lock::lock() triggering ABRT within destructors

VotersWatch issueWatchersLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Cannot Reproduce
    • 3.8.2
    • None
    • CMS Impl, Decaf
    • None
    • $ uname -a
      Linux XXXXX 2.6.32-431.11.2.el6.x86_64 #1 SMP Mon Mar 3 13:32:45 EST 2014 x86_64 x86_64 x86_64 GNU/Linux

      libstdc++.so.6.0.13

    Description

      We are experiencing SIGABRTs during attempts to disconnect a client from the broker by calling the destructor of ActiveMQConnection.

      Here's the portion of the stack trace that includes activemq-cpp code:

      (gdb) bt
      #3  <signal handler called>
      #4  0x00007f98ce2fe925 in raise () from /lib64/libc.so.6
      #5  0x00007f98ce300105 in abort () from /lib64/libc.so.6
      #6  0x00007f98cafd1a5d in __gnu_cxx::__verbose_terminate_handler() ()
         from /usr/lib64/libstdc++.so.6
      #7  0x00007f98cafcfbe6 in ?? () from /usr/lib64/libstdc++.so.6
      #8  0x00007f98cafcfc13 in std::terminate() () from /usr/lib64/libstdc++.so.6
      #9  0x00007f98cafd053f in __cxa_pure_virtual () from /usr/lib64/libstdc++.so.6
      #10 0x00007f98cd891e8b in decaf::util::concurrent::Lock::lock() ()
         from /usr/lib64/libactivemq-cpp.so.18
      #11 0x00007f98cd891fa5 in decaf::util::concurrent::Lock::Lock(decaf::util::concurrent::Synchronizable*, bool) () from /usr/lib64/libactivemq-cpp.so.18
      #12 0x00007f98cd538d0d in activemq::core::ConnectionConfig::~ConnectionConfig()
          () from /usr/lib64/libactivemq-cpp.so.18
      #13 0x00007f98cd4f39c2 in activemq::core::ActiveMQConnection::~ActiveMQConnection() () from /usr/lib64/libactivemq-cpp.so.18
      #14 0x00007f98cd4f3b69 in activemq::core::ActiveMQConnection::~ActiveMQConnection() () from /usr/lib64/libactivemq-cpp.so.18
      

      The call to __cxa_pure_virtual() in frame 9 indicates that decaf::util::concurrent::Lock::lock() is calling a pure virtual function. Since this is happening within destructor calls (of both ActiveMQConnection and ConnectionConfig), it has evidently triggered std::terminate from libstdc++, and hence the abort.

      Attachments

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            tabish Timothy A. Bish
            gsimmons Geoff Simmons
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment