pgsql: Avoid leaking memory in RestoreGUCState(), and improve comments.
От | Tom Lane |
---|---|
Тема | pgsql: Avoid leaking memory in RestoreGUCState(), and improve comments. |
Дата | |
Msg-id | E1lNRtd-0001bV-Mg@gemulon.postgresql.org обсуждение исходный текст |
Список | pgsql-committers |
Avoid leaking memory in RestoreGUCState(), and improve comments. RestoreGUCState applied InitializeOneGUCOption to already-live GUC entries, causing any malloc'd subsidiary data to be forgotten. We do want the effect of resetting the GUC to its compiled-in default, and InitializeOneGUCOption seems like the best way to do that, so add code to free any existing subsidiary data beforehand. The interaction between can_skip_gucvar, SerializeGUCState, and RestoreGUCState is way more subtle than their opaque comments would suggest to an unwary reader. Rewrite and enlarge the comments to try to make it clearer what's happening. Remove a long-obsolete assertion in read_nondefault_variables: the behavior of set_config_option hasn't depended on IsInitProcessingMode since f5d9698a8 installed a better way of controlling it. Although this is fixing a clear memory leak, the leak is quite unlikely to involve any large amount of data, and it can only happen once in the lifetime of a worker process. So it seems unnecessary to take any risk of back-patching. Discussion: https://postgr.es/m/4105247.1616174862@sss.pgh.pa.us Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/f0c2a5bba6c566fad781802537eb17f2977702bc Modified Files -------------- src/backend/utils/misc/guc.c | 170 +++++++++++++++++++++++++++++++++++-------- 1 file changed, 140 insertions(+), 30 deletions(-)
В списке pgsql-committers по дате отправления: