[ 
https://issues.apache.org/jira/browse/PROTON-2128?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17025376#comment-17025376
 ] 

Charles E. Rolke commented on PROTON-2128:
------------------------------------------

Now that PROTON-2005 is fixed I re-ran my dispatch self test. I don't see the 
symptom of PROTON-2005 but I do see this error again very frequently.

I tried the naive fix:


 {{diff --git a/c/src/core/engine.c b/c/src/core/engine.c}}
{{index c3a82adbc..50880a113 100644}}
{{--- a/c/src/core/engine.c}}
{{+++ b/c/src/core/engine.c}}
{{@@ -683,7 +683,7 @@ static void pni_add_work(pn_connection_t *connection, 
pn_delivery_t *delivery)}}
{{ {}}
{{   if (!delivery->work)}}
{{   {}}
{{-    assert(!delivery->local.settled);   // never allow settled deliveries}}
{{+    assert(!delivery->local.settled || delivery->aborted);   }}
{{     LL_ADD(connection, work, delivery);}}
{{     delivery->work = true;}}
{{   }}}

 

but this didn't fix anything and exposed an assert in transport.c line 1469, 
pn_full_settle()  assert(!delivery->work);

This problem needs a more comprehensive solution.

Also, in a production build the code blasts through and ignores the asserts.  
What does that mean for the integrity of the proton subsystem?

 

> Python client crash sending aborted messages
> --------------------------------------------
>
>                 Key: PROTON-2128
>                 URL: https://issues.apache.org/jira/browse/PROTON-2128
>             Project: Qpid Proton
>          Issue Type: Bug
>          Components: python-binding
>    Affects Versions: proton-c-0.29.0
>         Environment: Fedora 29; dispatch master=2efbd; proton master or 0.29 
> release
>            Reporter: Charles E. Rolke
>            Priority: Major
>         Attachments: PROTON-2128-reproducer.zip, 
> PROTON-2128_DISPATCH-1464-gdb-bt.txt, PROTON-2128_DISPATCH-1464-gdb-py-bt.txt
>
>
> This issue was originally reported under DISPATCH-1464
> Dispatch self tests have an intermittent failure:
> {{
> 41: test_05_message_route_abort_one_router 
> (system_tests_delivery_abort.RouterTest) 
> ... python: /home/chug/git/qpid-proton/c/src/core/engine.c:691: 
> pni_add_work: Assertion `!delivery->local.settled' failed.
> 1/1 Test #41: system_tests_delivery_abort ......Child aborted***Exception:   
> 4.47 sec
> }}
> The failure is an assert with the assumption that the delivery must not be 
> settled. The failing code is handling  a SENDER link.
> The suspect here is interaction with the abort processing which spontaneously 
> settles an outgoing delivery from the client side. The message is not 
> presettled and there is no settlement over the wire.
> Spontaneous settlement may prove the assert to be overly aggressive: 
> sometimes deliveries may be settled in pni_add_work(). Maybe the assertion 
> could be changed to allow delivery.local.settled to be true but only if 
> delivery.aborted is also true.
> Core dump backtraces to be added shortly.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@qpid.apache.org
For additional commands, e-mail: dev-h...@qpid.apache.org

Reply via email to