ActiveMQ C++ Client
  1. ActiveMQ C++ Client
  2. AMQCPP-388

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

    Details

    • Type: Bug Bug
    • Status: Resolved
    • Priority: Critical 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!

      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:
            Timothy Bish
            Reporter:
            Helen Huang
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development