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

AprPool::getAprPool() returns NULL, causing access violation and application crash

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Critical
    • Resolution: Fixed
    • Affects Version/s: 3.2.3
    • Fix Version/s: 3.2.3
    • Component/s: Decaf
    • Labels:
      None
    • Environment:

      Windows xp service pack 3, ActiveMQ broker 5.3.1, apr 1.4.2, apr-util 1.3.9, apr iconv 1.2.1

      Description

      Our application that uses activemq c++ client lib crashed with the following dump:

      ----------------------------------------------------------------------------------------------------------------------
      Thread 87 - System ID 3780

      Function Arg 1 Arg 2 Arg 3 Source
      libapr_1!apr_pvsprintf+8 00000000 0642a188 180eeb94
      activemq_cppu!decaf::lang::Exception::buildMessage+71 0642a188 180eeb74 180eee2c
      activemq_cppu!decaf::lang::exceptions::RuntimeException::RuntimeException+4d 180efeec 0642a160 00000097
      activemq_cppu!decaf::lang::ThreadProperties::runCallback+125 180eee2c 180efee0 00000001
      msvcr80!CatchIt+5c 00000000 00000000 00000000

      LIBAPR_1!APR_PVSPRINTF+8In scotapp.dmp the assembly instruction at libapr_1!apr_pvsprintf+8 in C:\scot\dll\libapr-1.dll has caused an access violation exception (0xC0000005) when trying to read from memory location 0x0000002c on thread 87
      --------------------------------------------------------------------------------------------------------------------

      On the call stack, we saw that following function from class decaf::lang::Exception was called:
      void Exception::buildMessage( const char* format, va_list& vargs ) {

      // Allocate buffer with a guess of it's size
      AprPool pool;

      // Allocate a buffer of the specified size.
      char* buffer = apr_pvsprintf( pool.getAprPool(), format, vargs );

      // Guessed size was enough. Assign the string.
      message.assign( buffer, strlen( buffer ) );
      }

      The first parameter passed into apr_pvsprintf was NULL, causing the crash. Could you please take a look and see if there is any bug in the activemqcpp code that could cause the problem. Thanks!

        Attachments

        1. BrokerMonitor.zip
          9.65 MB
          Helen Huang
        2. AMQCPP-388-Patch.txt
          3 kB
          Timothy Bish
        3. AMQCPP-388-Patch.txt
          8 kB
          Timothy Bish

          Activity

            People

            • Assignee:
              tabish121 Timothy Bish
              Reporter:
              hhuang Helen Huang
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: