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

Reply via email to