Jiri Daněk created PROTON-1631: ---------------------------------- Summary: [cpp] Stopping container in on_container_start after opening a socket will hang with libuv io Key: PROTON-1631 URL: https://issues.apache.org/jira/browse/PROTON-1631 Project: Qpid Proton Issue Type: Improvement Components: cpp-binding Affects Versions: proton-c-0.18.0 Environment: Linux, libuv-1.14.1, git tip at commit 72b7ea0508e94aae3e5d9470293bc5c7e8250a45 (upstream/master) PROTON-1592 : [python] restore original tx_recv.py example Reporter: Jiri Daněk Assignee: Cliff Jansen
Make yourself a libuv build with {noformat} cmake .. -DBUILD_GO=OFF -DCMAKE_BUILD_TYPE=Release -GNinja -DPROACTOR=libuv {noformat} Run the following test {noformat} struct less_immediate_stop_tester : public proton::messaging_handler { listen_port port; proton::listener listener; bool done; int scheduled_work; less_immediate_stop_tester() : done(false), scheduled_work(0) {} void connect(proton::container* c) { } void on_container_start(proton::container& c) PN_CPP_OVERRIDE { listener = c.listen(port.url()); c.connect(port.url("localhost")); c.stop(); } }; // FIXME: this test has some Invalid reads in Valgrind // with t.listener.stop() line commented out it doesn't int test_container_less_immediate_stop() { less_immediate_stop_tester t; proton::container c(t); c.run(); // t.listener.stop(); // saw this done in another test... return 0; } {noformat} It will hang with the following output {nofornat} ninja && PN_TRACE_FRM=1 proton-c/bindings/cpp/container_test && echo pass [...] TEST: test_container_less_immediate_stop() [0x17cc4c0]: -> AMQP [0x17cc4c0]:0 -> @open(16) [container-id="e038fe4b-9996-4874-be7d-50274e1e193e", hostname="localhost", channel-max=32767] [0x17c9110]: <- AMQP [0x17c9110]:0 <- @open(16) [container-id="e038fe4b-9996-4874-be7d-50274e1e193e", hostname="localhost", channel-max=32767] [0x17c9110]: -> AMQP [0x17c9110]:0 -> @open(16) [container-id="e038fe4b-9996-4874-be7d-50274e1e193e", channel-max=32767] [0x17cc4c0]: <- AMQP [0x17cc4c0]:0 <- @open(16) [container-id="e038fe4b-9996-4874-be7d-50274e1e193e", channel-max=32767] {nofornat} Now, this exact code does _not_ hang with epoll io. -- This message was sent by Atlassian JIRA (v6.4.14#64029) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@qpid.apache.org For additional commands, e-mail: dev-h...@qpid.apache.org