Branch: refs/heads/master Home: https://github.com/OpenSIPS/opensips Commit: ad6aef0291bf7b81c361de8a19c78de2435e49de https://github.com/OpenSIPS/opensips/commit/ad6aef0291bf7b81c361de8a19c78de2435e49de Author: Liviu Chircu <li...@opensips.org> Date: 2023-06-26 (Mon, 26 Jun 2023)
Changed paths: M modules/dialog/dialog.c M modules/dialog/dlg_db_handler.c M modules/dialog/dlg_db_handler.h M modules/dialog/dlg_hash.c M modules/dialog/dlg_hash.h M modules/dialog/dlg_replication.c M modules/dialog/dlg_vals.c M modules/dialog/dlg_vals.h Log Message: ----------- dialog: Change dlg->vals locking to be independent By making the dlg->vals locking independent from the dialog hash lock, working with the dialog API will become less prone to AB/BA deadlocks. Sample possible AB/BA deadlock which is now naturally avoided: * module "X" timer grabs lock-A, then gets stuck trying to grab lock-B(dialog bucket) through some innocent .store_dlg_val() dialog API call * dialog DB timer had grabbed lock-B(dialog bucket), and is now stuck grabbing lock-A while running a DLGCB_DESTROYED callback installed by module "X" _______________________________________________ Devel mailing list Devel@lists.opensips.org http://lists.opensips.org/cgi-bin/mailman/listinfo/devel