You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by "Chuck Rolke (JIRA)" <ji...@apache.org> on 2019/04/10 22:10:00 UTC

[jira] [Commented] (DISPATCH-1283) Router crash when link gets freed before its deliveries are freed

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

Chuck Rolke commented on DISPATCH-1283:
---------------------------------------

Self test system_tests_edge_router exposes this issue.
In the failed run 'test_11' appears to complete ok but 'test_12' is ERROR.
The problem is that test_11 crashed router EA1.

In RouterTest/setUpClass directory is a core dump. This file shows a back
trace similar to the base jira. The core identifies router EA1 as the
crashed router.

Scraper tool is run on EA1.log and the output is attached as file ea1.html.

In this run:
 * edge router EA1 has a long-lived connection A0_1 to interior router INT.A
 * edge router EA1 has a client connection to receiver peer_9

Examining the web file ea1.html:

 * 2019-04-10 15:48:11.998243 peer_9 closes the receiver link to router EA1.
 * EA1 responds by detaching its link to peer_9
 * 2019-04-10 15:48:11.998529 Edge EA1 has no open clients so it detaches its link
   [0,7] to interior INT.A
 * INT.A hasn't heard about the closed link yet and blasts transfers 1208..1256 to
   edge EA1.
 * 2019-04-10 15:48:12.007543  INT.A closes link [0,7]

Now the Edge EA1 and interior INT.A behavior gets a little sketchy:

 * 2019-04-10 15:48:12.007543  EA1 sends receiver dispositions for 1208..1256
   back to INT.A  Note that these dispositions have no final state.
 * 2019-04-10 15:48:12.009673  INT.A, receiving dispositions with no state sends
   _sender_ dispositions back to EA1.

As soon as EA1 starts receiving the sender dispositions it crashes.
===
From a protocol standpoint both routers would be better off if they didn't respond at
all to transfers or dispositions after they sent the detach to close the links.

> Router crash when link gets freed before its deliveries are freed
> -----------------------------------------------------------------
>
>                 Key: DISPATCH-1283
>                 URL: https://issues.apache.org/jira/browse/DISPATCH-1283
>             Project: Qpid Dispatch
>          Issue Type: Bug
>          Components: Container
>    Affects Versions: 1.5.0
>            Reporter: Ganesh Murthy
>            Assignee: Ganesh Murthy
>            Priority: Major
>
> {noformat}
> (gdb) bt
> #0  0x00007ff1db20d060 in qdr_delete_delivery_internal_CT (core=0x1416180, delivery=0x7ff1c80d2fe8) at /home/gmurthy/opensource/qpid-dispatch/src/router_core/transfer.c:613
> #1  0x00007ff1db20e9b6 in qdr_delete_delivery_CT (core=0x1416180, action=0x7ff1bc33d828, discard=false) at /home/gmurthy/opensource/qpid-dispatch/src/router_core/transfer.c:1221
> #2  0x00007ff1db206ec0 in router_core_thread (arg=0x1416180) at /home/gmurthy/opensource/qpid-dispatch/src/router_core/router_core_thread.c:148
> #3  0x00007ff1db11858e in start_thread () from /lib64/libpthread.so.0
> #4  0x00007ff1dabc06a3 in clone () from /lib64/libc.so.6
> (gdb){noformat}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

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