Hi all, I'm facing very important reliability issues with qpid-proton cpp (0.26.0 but also yesterday's master)
Here is my situation : I have several proton::messaging_handler's, one for each of my connections. Some handlers are "senders" ; they have one link that is a proton::sender. Some handlers are "receivers" ; they have one link that is a proton::receiver. Each time they receive an input message, they do some processing on it, and finally add a "sender->send()" task to the work queue of one or more some sender handlers (by calling work_queue()->add( [=] sender->send(msg); } as shown in the multi-threading examples). Very simple. This works fine for some time (tens of thousands of messages, several minutes or hours), but eventually crashes, either with a SEGFAULT (when the qpid-proton lib is compiled in release mode) or with an assert (in debug mode), in qpid-proton/c/src/core/engine.c line 483, assert(!conn->transport->referenced) in function pn_connection_finalize(). The issue happens both with Azure ServiceBus and locally on my PC with qpid-broker. The proton logs (activated with export PN_TRACE_FRM=1) do not show anything abnormal (no loss of connection, no rejection of messages, no timeouts, no full queue, ...). As the connection is not closed, I wonder why pn_connection_finalize() would be called in the first place. The issue happens when I have all my connections handled by a single container (in multi-threaded mode), and also when I define one separate container for each connection (and that I run in single-threaded mode). I can also reproduce the issue with one single container that handles just two connections, and where each connection has its own handler. I can't see what I'm doing wrong (if I am) as my code is very close to the provided examples. I created a ticket on the JIRA ( https://issues.apache.org/jira/projects/PROTON/issues/PROTON-1999 ) with minimal sample code to reproduce the issue (~100 lines), the call stack and the logs. Kind regards, Olivier This mail, and any attachments thereto, is intended only for use by the addressee(s) named herein and may contain legally privileged and/or confidential information. If you are not the intended recipient, please note that any review, dissemination, disclosure, alteration, printing, copying or transmission of this mail and/or any file transmitted with it, is strictly prohibited and may be unlawful. If you have received this mail by mistake, please immediately notify the sender as well as our mail administrator at [email protected], and permanently destroy the original as well as any copy thereof.
