ack, one question, in the ticket you mention it can be solved without recursion in AVD_SI::add_csi_db, why choose the recursion solution in verify_csi_deps_and_delete_invalid_compcsi()? /Thanks HansN
On 05/15/2015 05:26 AM, [email protected] wrote: > osaf/services/saf/amf/amfd/sgproc.cc | 2 ++ > 1 files changed, 2 insertions(+), 0 deletions(-) > > > A 2N application was up on both the controllers. Application contains > 10 CSIs in a single SI with CSI dependency with multiple sponsors for some > CSIs.While application was up on controllers, amfnd segfaults dDuring opensaf > shutdown. > > For the CSI4, CStype is safVersion=4.0.0,safCSType=AmfDemo1 and for the rest > of > CSIs it is safVersion=4.0.0,safCSType=AmfDemo. Now CSI4 directly or indirectly > acts as sponsor for CSI3, CSI6,CSI7,CSI8,CSI9 and CSI10. For CSI4 compcstype > is not configured in the configuration. So AMF deletes compcsi for CSI3, but > since there is chain of dependency, all other compcsi could not be deleted > because logic of deleting COMPCSI > (verify_csi_deps_and_delete_invalid_compcsi() > in sgproc.c in #687) assumes that a SI (like SG) keeps the list_of_csi in the > ascending > order of csi rank. But CSIs in SI are arranged in descending order. > Since some of the CSIs of higher rank remained unassigned, AMFND goes in loop > to remove CSIs of higher rank when a CSIs of lower ranks are removed and it > crashes while accessing some csi record for which remove_done() is already > called. > > > Patch ensures that irrespective of order of CSIs in SI, compcsi of dependent > CSIs are deleted if any sponsor is unassigned. > > diff --git a/osaf/services/saf/amf/amfd/sgproc.cc > b/osaf/services/saf/amf/amfd/sgproc.cc > --- a/osaf/services/saf/amf/amfd/sgproc.cc > +++ b/osaf/services/saf/amf/amfd/sgproc.cc > @@ -63,6 +63,8 @@ static void verify_csi_deps_and_delete_i > compcsi->csi->assign_flag = false; > compcsi->comp->assign_flag = false; > > avd_compcsi_from_csi_and_susi_delete(susi, compcsi, true); > + //Delete compcsi of dependents. > + > verify_csi_deps_and_delete_invalid_compcsi(susi); > break; > } > } ------------------------------------------------------------------------------ _______________________________________________ Opensaf-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/opensaf-devel
