Uploaded image for project: 'AMQ Clients'
  1. AMQ Clients
  2. ENTMQCL-430

[cpp] C++ 03 version of the schedule API crashes on RHEL 7

XMLWordPrintable

    • Release Notes
    • Hide
      If you compile a C++ program with C++03 and link it to libqpid-proton-cpp (which is compiled with C++11) and use the proton::container::schedule API then the application will crash. This is because there is an extra virtual function present in the middle of the C++11 vtable compared to the C++03 vtable. So that when used from '03 the wrong member function gets called.
      This has been fixed by no longer making these functions virtual and so the correct function will now get called.
      Show
      If you compile a C++ program with C++03 and link it to libqpid-proton-cpp (which is compiled with C++11) and use the proton::container::schedule API then the application will crash. This is because there is an extra virtual function present in the middle of the C++11 vtable compared to the C++03 vtable. So that when used from '03 the wrong member function gets called. This has been fixed by no longer making these functions virtual and so the correct function will now get called.
    • Documented as Resolved Issue

      The example schedule_send_03 crashes when running on RHEL 7.

      1. Install qpid-proton-cpp packages: yum install -y qpid-proton-cpp-devel qpid-proton-cpp-devel-docs
      2. Build the example code: cd /usr/share/proton-0.14.0/examples/cpp && cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_VERBOSE_MAKEFILE=ON . && make -j2
      3. Adjust the code to create core dumps: ulimit -c unlimited
      4. Run the schedule_send_03 example: ./scheduled_send_03 -a <broker>:5672/<queue>

      Result: the code will segfault and create the core dump.

            astitcher Andrew Stitcher
            opiske Otavio Piske
            Otavio Piske Otavio Piske
            Votes:
            0 Vote for this issue
            Watchers:
            6 Start watching this issue

              Created:
              Updated:
              Resolved: