[jira] [Commented] (PROTON-1999) [c] Crash in pn_connection_finalize
[ https://issues.apache.org/jira/browse/PROTON-1999?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16757315#comment-16757315 ] Olivier Delbeke commented on PROTON-1999: - The proposed solution seems to fix the issue. I am no longer able to reproduce it, and it's OK for me to close the ticket (as "not a bug"). However, I still don't really understand why it solves the problem. The proton::sender::worker() (or actually proton::link:work_queue()) is just a const getter function, so I don't see how calling this could harm anything or return a different value than what it would return if called from the right thread. > [c] Crash in pn_connection_finalize > --- > > Key: PROTON-1999 > URL: https://issues.apache.org/jira/browse/PROTON-1999 > Project: Qpid Proton > Issue Type: Bug > Components: cpp-binding, proton-c >Affects Versions: proton-c-0.26.0 > Environment: Linux 64-bits (Ubuntu 16.04 and Oracle Linux 7.4) >Reporter: Olivier Delbeke >Assignee: Cliff Jansen >Priority: Major > Attachments: call_stack.txt, example2.cpp, log.txt, main.cpp, > run_qpid-broker.sh > > > Here is my situation : I have several proton::containers (~20). > Each one has its own proton::messaging_handler, and handles one > proton::connection to a local qpid-broker (everything runs on the same Linux > machine). > 20 x ( one container with one handler with one connection with one link) > Some containers/connections/handlers work in send mode ; they have one link > that is a proton::sender. > Some containers/connections/handlers work in receive mode ; 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 some sender handlers ( by calling work_queue()->add( [=] \{ > sender->send(msg); } as shown in the multi-threading examples). > 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 proton logs (activated with export PN_TRACE_FRM=1) do not show anything > abnormal (no loss of connection, no rejection of messages, no timeouts, ...). > As the connection is not closed, I wonder why pn_connection_finalize() would > be called in the first place. > I joined the logs and the call trace. > Happens on 0.26.0 but also reproduced with the latest master (Jan 28, 2019). > > -- This message was sent by Atlassian JIRA (v7.6.3#76005) - To unsubscribe, e-mail: dev-unsubscr...@qpid.apache.org For additional commands, e-mail: dev-h...@qpid.apache.org
[jira] [Commented] (PROTON-1999) [c] Crash in pn_connection_finalize
[ https://issues.apache.org/jira/browse/PROTON-1999?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16756102#comment-16756102 ] Olivier Delbeke commented on PROTON-1999: - Thank you so much. Calling sender.work_queue() from one of the callbacks and saving the pointer surprisingly indeed seems to improve things. I need to do more tests to be completely sure as it's not that easy to reproduce, but it looks good until now. My understanding was that this call was a simple getter function, so it would have been thread-safe, but it seems that I was wrong. > [c] Crash in pn_connection_finalize > --- > > Key: PROTON-1999 > URL: https://issues.apache.org/jira/browse/PROTON-1999 > Project: Qpid Proton > Issue Type: Bug > Components: cpp-binding, proton-c >Affects Versions: proton-c-0.26.0 > Environment: Linux 64-bits (Ubuntu 16.04 and Oracle Linux 7.4) >Reporter: Olivier Delbeke >Assignee: Cliff Jansen >Priority: Major > Attachments: call_stack.txt, example2.cpp, log.txt, main.cpp, > run_qpid-broker.sh > > > Here is my situation : I have several proton::containers (~20). > Each one has its own proton::messaging_handler, and handles one > proton::connection to a local qpid-broker (everything runs on the same Linux > machine). > 20 x ( one container with one handler with one connection with one link) > Some containers/connections/handlers work in send mode ; they have one link > that is a proton::sender. > Some containers/connections/handlers work in receive mode ; 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 some sender handlers ( by calling work_queue()->add( [=] \{ > sender->send(msg); } as shown in the multi-threading examples). > 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 proton logs (activated with export PN_TRACE_FRM=1) do not show anything > abnormal (no loss of connection, no rejection of messages, no timeouts, ...). > As the connection is not closed, I wonder why pn_connection_finalize() would > be called in the first place. > I joined the logs and the call trace. > Happens on 0.26.0 but also reproduced with the latest master (Jan 28, 2019). > > -- This message was sent by Atlassian JIRA (v7.6.3#76005) - To unsubscribe, e-mail: dev-unsubscr...@qpid.apache.org For additional commands, e-mail: dev-h...@qpid.apache.org
[jira] [Updated] (PROTON-1999) [c] Crash in pn_connection_finalize
[ https://issues.apache.org/jira/browse/PROTON-1999?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Olivier Delbeke updated PROTON-1999: Attachment: example2.cpp > [c] Crash in pn_connection_finalize > --- > > Key: PROTON-1999 > URL: https://issues.apache.org/jira/browse/PROTON-1999 > Project: Qpid Proton > Issue Type: Bug > Components: cpp-binding, proton-c >Affects Versions: proton-c-0.26.0 > Environment: Linux 64-bits (Ubuntu 16.04 and Oracle Linux 7.4) >Reporter: Olivier Delbeke >Priority: Major > Attachments: call_stack.txt, example2.cpp, log.txt, main.cpp, > run_qpid-broker.sh > > > Here is my situation : I have several proton::containers (~20). > Each one has its own proton::messaging_handler, and handles one > proton::connection to a local qpid-broker (everything runs on the same Linux > machine). > 20 x ( one container with one handler with one connection with one link) > Some containers/connections/handlers work in send mode ; they have one link > that is a proton::sender. > Some containers/connections/handlers work in receive mode ; 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 some sender handlers ( by calling work_queue()->add( [=] \{ > sender->send(msg); } as shown in the multi-threading examples). > 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 proton logs (activated with export PN_TRACE_FRM=1) do not show anything > abnormal (no loss of connection, no rejection of messages, no timeouts, ...). > As the connection is not closed, I wonder why pn_connection_finalize() would > be called in the first place. > I joined the logs and the call trace. > Happens on 0.26.0 but also reproduced with the latest master (Jan 28, 2019). > > -- This message was sent by Atlassian JIRA (v7.6.3#76005) - To unsubscribe, e-mail: dev-unsubscr...@qpid.apache.org For additional commands, e-mail: dev-h...@qpid.apache.org
[jira] [Commented] (PROTON-1999) [c] Crash in pn_connection_finalize
[ https://issues.apache.org/jira/browse/PROTON-1999?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16755095#comment-16755095 ] Olivier Delbeke commented on PROTON-1999: - I just joined minimal sample code that reproduces the issue, and a script to start the qpid broker. > [c] Crash in pn_connection_finalize > --- > > Key: PROTON-1999 > URL: https://issues.apache.org/jira/browse/PROTON-1999 > Project: Qpid Proton > Issue Type: Bug > Components: cpp-binding, proton-c >Affects Versions: proton-c-0.26.0 > Environment: Linux 64-bits (Ubuntu 16.04 and Oracle Linux 7.4) >Reporter: Olivier Delbeke >Priority: Major > Attachments: call_stack.txt, log.txt, main.cpp, run_qpid-broker.sh > > > Here is my situation : I have several proton::containers (~20). > Each one has its own proton::messaging_handler, and handles one > proton::connection to a local qpid-broker (everything runs on the same Linux > machine). > 20 x ( one container with one handler with one connection with one link) > Some containers/connections/handlers work in send mode ; they have one link > that is a proton::sender. > Some containers/connections/handlers work in receive mode ; 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 some sender handlers ( by calling work_queue()->add( [=] \{ > sender->send(msg); } as shown in the multi-threading examples). > 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 proton logs (activated with export PN_TRACE_FRM=1) do not show anything > abnormal (no loss of connection, no rejection of messages, no timeouts, ...). > As the connection is not closed, I wonder why pn_connection_finalize() would > be called in the first place. > I joined the logs and the call trace. > Happens on 0.26.0 but also reproduced with the latest master (Jan 28, 2019). > > -- This message was sent by Atlassian JIRA (v7.6.3#76005) - To unsubscribe, e-mail: dev-unsubscr...@qpid.apache.org For additional commands, e-mail: dev-h...@qpid.apache.org
[jira] [Updated] (PROTON-1999) [c] Crash in pn_connection_finalize
[ https://issues.apache.org/jira/browse/PROTON-1999?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Olivier Delbeke updated PROTON-1999: Attachment: main.cpp > [c] Crash in pn_connection_finalize > --- > > Key: PROTON-1999 > URL: https://issues.apache.org/jira/browse/PROTON-1999 > Project: Qpid Proton > Issue Type: Bug > Components: cpp-binding, proton-c >Affects Versions: proton-c-0.26.0 > Environment: Linux 64-bits (Ubuntu 16.04 and Oracle Linux 7.4) >Reporter: Olivier Delbeke >Priority: Major > Attachments: call_stack.txt, log.txt, main.cpp, run_qpid-broker.sh > > > Here is my situation : I have several proton::containers (~20). > Each one has its own proton::messaging_handler, and handles one > proton::connection to a local qpid-broker (everything runs on the same Linux > machine). > 20 x ( one container with one handler with one connection with one link) > Some containers/connections/handlers work in send mode ; they have one link > that is a proton::sender. > Some containers/connections/handlers work in receive mode ; 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 some sender handlers ( by calling work_queue()->add( [=] \{ > sender->send(msg); } as shown in the multi-threading examples). > 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 proton logs (activated with export PN_TRACE_FRM=1) do not show anything > abnormal (no loss of connection, no rejection of messages, no timeouts, ...). > As the connection is not closed, I wonder why pn_connection_finalize() would > be called in the first place. > I joined the logs and the call trace. > Happens on 0.26.0 but also reproduced with the latest master (Jan 28, 2019). > > -- This message was sent by Atlassian JIRA (v7.6.3#76005) - To unsubscribe, e-mail: dev-unsubscr...@qpid.apache.org For additional commands, e-mail: dev-h...@qpid.apache.org
[jira] [Updated] (PROTON-1999) [c] Crash in pn_connection_finalize
[ https://issues.apache.org/jira/browse/PROTON-1999?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Olivier Delbeke updated PROTON-1999: Attachment: run_qpid-broker.sh > [c] Crash in pn_connection_finalize > --- > > Key: PROTON-1999 > URL: https://issues.apache.org/jira/browse/PROTON-1999 > Project: Qpid Proton > Issue Type: Bug > Components: cpp-binding, proton-c >Affects Versions: proton-c-0.26.0 > Environment: Linux 64-bits (Ubuntu 16.04 and Oracle Linux 7.4) >Reporter: Olivier Delbeke >Priority: Major > Attachments: call_stack.txt, log.txt, main.cpp, run_qpid-broker.sh > > > Here is my situation : I have several proton::containers (~20). > Each one has its own proton::messaging_handler, and handles one > proton::connection to a local qpid-broker (everything runs on the same Linux > machine). > 20 x ( one container with one handler with one connection with one link) > Some containers/connections/handlers work in send mode ; they have one link > that is a proton::sender. > Some containers/connections/handlers work in receive mode ; 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 some sender handlers ( by calling work_queue()->add( [=] \{ > sender->send(msg); } as shown in the multi-threading examples). > 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 proton logs (activated with export PN_TRACE_FRM=1) do not show anything > abnormal (no loss of connection, no rejection of messages, no timeouts, ...). > As the connection is not closed, I wonder why pn_connection_finalize() would > be called in the first place. > I joined the logs and the call trace. > Happens on 0.26.0 but also reproduced with the latest master (Jan 28, 2019). > > -- This message was sent by Atlassian JIRA (v7.6.3#76005) - To unsubscribe, e-mail: dev-unsubscr...@qpid.apache.org For additional commands, e-mail: dev-h...@qpid.apache.org
[jira] [Created] (PROTON-1999) [c] Crash in pn_connection_finalize
Olivier Delbeke created PROTON-1999: --- Summary: [c] Crash in pn_connection_finalize Key: PROTON-1999 URL: https://issues.apache.org/jira/browse/PROTON-1999 Project: Qpid Proton Issue Type: Bug Components: cpp-binding, proton-c Affects Versions: proton-c-0.26.0 Environment: Linux 64-bits (Ubuntu 16.04 and Oracle Linux 7.4) Reporter: Olivier Delbeke Attachments: call_stack.txt, log.txt Here is my situation : I have several proton::containers (~20). Each one has its own proton::messaging_handler, and handles one proton::connection to a local qpid-broker (everything runs on the same Linux machine). 20 x ( one container with one handler with one connection with one link) Some containers/connections/handlers work in send mode ; they have one link that is a proton::sender. Some containers/connections/handlers work in receive mode ; 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 some sender handlers ( by calling work_queue()->add( [=] \{ sender->send(msg); } as shown in the multi-threading examples). 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 proton logs (activated with export PN_TRACE_FRM=1) do not show anything abnormal (no loss of connection, no rejection of messages, no timeouts, ...). As the connection is not closed, I wonder why pn_connection_finalize() would be called in the first place. I joined the logs and the call trace. Happens on 0.26.0 but also reproduced with the latest master (Jan 28, 2019). -- This message was sent by Atlassian JIRA (v7.6.3#76005) - To unsubscribe, e-mail: dev-unsubscr...@qpid.apache.org For additional commands, e-mail: dev-h...@qpid.apache.org