Alan Conway created PROTON-1734:
-----------------------------------

             Summary: [cpp] container.stop() doesn't work when called from 
non-proactor thread.
                 Key: PROTON-1734
                 URL: https://issues.apache.org/jira/browse/PROTON-1734
             Project: Qpid Proton
          Issue Type: Bug
          Components: cpp-binding
    Affects Versions: proton-c-0.19.0
            Reporter: Alan Conway
            Assignee: Alan Conway
             Fix For: proton-c-0.20.0


Using the below code

{code}
#include <proton/container.hpp>
#include <iostream>
#include <thread>

int main( int, char** )
{
  try
  {
    proton::container c;
    c.auto_stop( false );
    auto containerThread = std::thread([&]() { std::cout << "CONTAINER IS 
RUNNING" << std::endl; 
                                                                                
          c.run(); std::cout << "CONTAINER IS DONE" << std::endl; });
    std::this_thread::sleep_for( std::chrono::seconds( 2 ));
    std::cout << "STOPPING CONTAINER" << std::endl;
    c.stop();
    std::cout << "WAITING FOR CONTAINER" << std::endl;
    containerThread.join();
    return 0;
  }
  catch( std::exception& e )
  {
    std::cerr << e.what() << std::endl;
  }
  return 1;
}
{code}

via
{code}
[rkieley@i7t450s build]$ g++ -g -Wall -Wextra -Wpointer-arith -Wconversion 
-Wformat -Wformat-security -Wformat-y2k -Wsign-promo -Wcast-qual -g3 -ggdb3 
-Wunused-variable -fno-eliminate-unused-debug-types -O3 -DNDEBUG -fPIC 
-DPN_CPP_HAS_LAMBDAS=0  -std=gnu++11  ../attachments/test.cpp -lqpid-proton-cpp 
-lqpid-proton-core -lqpid-proton-proactor -lrt -lpthread -o test
{code}

With both PROACTOR epoll and libuv I see the following when run:

{quote}
[New Thread 0x7ffff3c95700 (LWP 20312)]
CONTAINER IS RUNNING
STOPPING CONTAINER
WAITING FOR CONTAINER
^C
Thread 1 "test" received signal SIGINT, Interrupt.
{quote}

When I use CTRL-C to stop waiting after running via gdb and waiting 2 minutes.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to