Fix integer underflow in shared memory debugging
dsa_dump would print a large negative number instead of zero for segment bin 0. Fix by explicitly checking for underflow and add special case for bin 0. Backpatch to all supported versions. Author: Ian Ilyasov <ianilyasov@outlook.com> Reviewed-by: Robert Haas <robertmhaas@gmail.com> Discussion: https://postgr.es/m/GV1P251MB1004E0D09D117D3CECF9256ECD502@GV1P251MB1004.EURP251.PROD.OUTLOOK.COM Backpatch-through: v12
This commit is contained in:
parent
fe3b1b575e
commit
217928ddb4
@ -1093,9 +1093,13 @@ dsa_dump(dsa_area *area)
|
|||||||
{
|
{
|
||||||
dsa_segment_index segment_index;
|
dsa_segment_index segment_index;
|
||||||
|
|
||||||
fprintf(stderr,
|
if (i == 0)
|
||||||
" segment bin %zu (at least %d contiguous pages free):\n",
|
fprintf(stderr,
|
||||||
i, 1 << (i - 1));
|
" segment bin %zu (no contiguous free pages):\n", i);
|
||||||
|
else
|
||||||
|
fprintf(stderr,
|
||||||
|
" segment bin %zu (at least %d contiguous pages free):\n",
|
||||||
|
i, 1 << (i - 1));
|
||||||
segment_index = area->control->segment_bins[i];
|
segment_index = area->control->segment_bins[i];
|
||||||
while (segment_index != DSA_SEGMENT_INDEX_NONE)
|
while (segment_index != DSA_SEGMENT_INDEX_NONE)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user