Open Harishreddy01 opened 4 years ago
Can you provide a stack trace or a way to reproduce the issue?
The stack trace is below:
at /home/acme/cc/Cz8.3.0_integration/acme/bin/sctp/sctp_output.c:2663
at /home/acme/cc/Cz8.3.0_integration/acme/bin/sctp/sctp_output.c:3287
auth_keyid=0, nofragment_flag=1, ecn_ok=0, chk=0x0, out_of_asoc_ok=0, src_port=49175, dest_port=49175, v_tag=2614718190, port=0, so_locked=0, over_addr=0x0)
at /home/acme/cc/Cz8.3.0_integration/acme/bin/sctp/sctp_output.c:3673
control_only=control_only@entry=0, from_where=<optimized out>, now=<optimized out>, now_filled=<optimized out>, frag_point=<optimized out>, so_locked=<optimized out>)
at /home/acme/cc/Cz8.3.0_integration/acme/bin/sctp/sctp_output.c:8690
Steps to reproduce:
In our application we we try to change sctp related configuration like protocol or multihome address or adding or deleting more sctp interfaces etc and then reload the application ( not reboot) we are observing this crash
sctp_output.c:2663 seems to be in the middle of variable declarations.
Are you really using this repo? Or are you using usrsctp? Which OS are you using? Any particular reason why you are not using a kernel stack?
In sctp_choose_boundspecific_stcb for (laddr = stcb->asoc.last_used_address; laddr; laddr = LIST_NEXT(laddr, sctp_nxt_addr)) { if (laddr->ifa == NULL) { / address has been removed / continue; } if (laddr->action == SCTP_DEL_IP_ADDRESS) { / address is being deleted / continue; } sifa = sctp_is_ifa_addr_preferred(laddr->ifa, dest_is_loop, dest_is_priv, fam); if (sifa == NULL) continue; if (((non_asoc_addr_ok == 0) && (sctp_is_addr_restricted2(stcb, sifa))) || (non_asoc_addr_ok && (sctp_is_addr_restricted2(stcb, sifa)) && (!sctp_is_addr_pending(stcb, sifa)))) { / on the no-no list / continue; } stcb->asoc.last_used_address = laddr; SCTP_TCB_UNLOCK(stcb); atomic_add_int(&sifa->refcount, 1); return (sifa); } if (start_at_beginning == 0) { stcb->asoc.last_used_address = NULL; goto sctp_from_the_top; } My application was crashing when in this part of code, when try to change some config related to sctp in my application and the reloading it. I some times see multiple threads are in this part of code, however they belong to different sctp connections.