[IGN-18306]Deadlock in Twilio Voice notification profile - audit() vs NotificationContextImpl on call failure callback (8.3.9)

We hit a gateway deadlock this morning that stopped our voice callouts until we restarted.

Setup: Ignition 8.3.9, Twilio module 4.3.10, roster with two contacts.

The thread dump shows a lock-ordering issue in the Twilio voice profile, with both threads on the same notification:

  • The pipeline thread in sendNotification() holds the NotificationContextImpl lock and waits on the audit lock in audit().
  • A webserver thread handling the call-failure callback (onCallFailure → audit()) holds the audit lock and waits on that same NotificationContextImpl in getAlarmEvents().

What seems to have triggered it: contact 1’s call connected but played a generic error message instead of the alarm, then hung up. The module treated it as unacknowledged, and the failure callback collided with the pipeline escalating to contact 2. The escalation call never went out. Twilio’s debugger also shows that status callback timing out after 30 s with no response from the gateway.

Is anything config-side known to cause the error, or is this purely a module issue? Is there a newer build with a fix? Happy to share the thread dump privately.

Please open a support ticket and share the thread dump.