public inbox for [email protected]  
help / color / mirror / Atom feed
From: Tatsuo Ishii <[email protected]>
To: [email protected]
Subject: Re: Lock release leak in pool_search_relcache
Date: Thu, 19 Mar 2026 15:37:04 +0900 (JST)
Message-ID: <[email protected]> (raw)
In-Reply-To: <[email protected]>
References: <[email protected]>

> While looking into src/utils/pool_relcache.c for other reasons, I
> noticed pool_search_relcache does not release lock in a certain code
> path.  When the local relation cache does not hit, it searches the
> shared relation cache if enable_shared_relcache is on. If the lock for
> query cache has been already held (thus the variable "locked" is set
> to true), it acquires a shared lock, then releases it and acquires an
> exclusive lock to call pool_catalog_commit_cache. Since in this code
> path variable "locked" is set to true, subsequent code:
> 
> 	if (pool_config->enable_shared_relcache && !locked)
> 	{
> 		pool_shmem_unlock();
> 		POOL_SETMASK(&oldmask);
> 	}
> 
> does not reach inside the if statement -- lock is not released. I
> think to fix this, the following code requires "locked = false;"
> 
> 			pool_shmem_unlock();
> 			pool_shmem_lock(POOL_MEMQ_EXCLUSIVE_LOCK);
> 			pool_catalog_commit_cache(backend, query, query_cache_data, query_cache_len);
> 
> Attached patch does this. Plus following changes are made in the patch:
> 
> - the variable name "locked" is confusing. To clarify the role of the
>   variable, its name is changed to "locked_by_others".
> 
> - Fix per_node_statement_log is called even though actual query is
>   not sent to backend.

Pushed down to v4.4 stable.

Best regards,
--
Tatsuo Ishii
SRA OSS K.K.
English: http://www.sraoss.co.jp/index_en/
Japanese:http://www.sraoss.co.jp






reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: [email protected]
  Cc: [email protected], [email protected]
  Subject: Re: Lock release leak in pool_search_relcache
  In-Reply-To: <[email protected]>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox