Argus.Analyses.CallCycle (Panoptes v0.13.0)

Copy Markdown View Source

Call cycle (deadlock) detection.

Finds module-level synchronous dependency cycles: module A sync-calls B and B sync-calls A, either directly or transitively through the call graph. A cycle between two GenServer modules means each can block waiting for the other, producing a deadlock.

Requires the OTP extractor for sync_call and implements_behaviour facts.

Output relations

  • call_cycle(mod_a, mod_b) — pair of modules with mutual synchronous dependency.
  • call_cycle_path(from_mod, to_mod) — transitive sync dependency edges within cycle participants.

Finding severities

  • call_cycle:error. A mutual synchronous dependency deadlocks the moment both directions are in flight; timeouts only convert the deadlock into cascading crashes.
  • call_cycle_path:info. Supporting evidence: the individual edges behind a call_cycle finding.