From eda1bd2bb94d4227460cc835842f3c8124914d0d Mon Sep 17 00:00:00 2001 From: "Stephen R. van den Berg" <srb@cuci.nl> Date: Thu, 17 May 2018 15:38:26 +0200 Subject: [PATCH] pgsql: Avoid lock recursion and a deadlock. --- lib/modules/Sql.pmod/pgsql_util.pmod | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/modules/Sql.pmod/pgsql_util.pmod b/lib/modules/Sql.pmod/pgsql_util.pmod index 81d1df436c..e8365393b8 100644 --- a/lib/modules/Sql.pmod/pgsql_util.pmod +++ b/lib/modules/Sql.pmod/pgsql_util.pmod @@ -1324,7 +1324,7 @@ class sql_result { } final void _releasestatement() { - Thread.MutexKey lock = closemux->lock(2); + Thread.MutexKey lock = closemux->lock(); if (_state <= BOUND) { _state = COMMITTED; stmtifkey = 0; @@ -1367,7 +1367,8 @@ class sql_result { switch (_state) { case PARSING: case BOUND: - _releasestatement(); + _state = COMMITTED; // Avoid _releasestatement() to prevent + stmtifkey = 0; // lock recursion and lock inversion deadlock } switch (_state) { case PORTALINIT: -- GitLab