v2-0002-Fix-stack-depth-checking-with-AddressSanitizer-en.patch
text/x-patch
Filename: v2-0002-Fix-stack-depth-checking-with-AddressSanitizer-en.patch
Type: text/x-patch
Part: 2
Patch
Same data as JSON:
GET /api/v1/attachments/:id/patch
the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes.
API reference →
Format: format-patch
Series: patch v2-0002
Subject: Fix stack depth checking with AddressSanitizer enabled
| File | + | − |
|---|---|---|
| src/backend/tcop/postgres.c | 2 | 2 |
| src/include/miscadmin.h | 2 | 2 |
From 7192614059f6a7bddc5e32df21e5956aa714b820 Mon Sep 17 00:00:00 2001
From: Tristan Partin <tristan@neon.tech>
Date: Mon, 5 Feb 2024 20:21:13 -0600
Subject: [PATCH v2 2/4] Fix stack depth checking with AddressSanitizer enabled
The AddressSanitizer instrumentation caused stack depth checking to
fail.
---
src/backend/tcop/postgres.c | 4 ++--
src/include/miscadmin.h | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c
index 1a34bd3715..7cc18dbed9 100644
--- a/src/backend/tcop/postgres.c
+++ b/src/backend/tcop/postgres.c
@@ -3466,7 +3466,7 @@ ProcessInterrupts(void)
*
* Returns the old reference point, if any.
*/
-pg_stack_base_t
+pg_stack_base_t pg_attribute_no_asan
set_stack_base(void)
{
#ifndef HAVE__BUILTIN_FRAME_ADDRESS
@@ -3530,7 +3530,7 @@ check_stack_depth(void)
}
}
-bool
+bool pg_attribute_no_asan
stack_is_too_deep(void)
{
char stack_top_loc;
diff --git a/src/include/miscadmin.h b/src/include/miscadmin.h
index 0b01c1f093..538adfe757 100644
--- a/src/include/miscadmin.h
+++ b/src/include/miscadmin.h
@@ -292,10 +292,10 @@ extern PGDLLIMPORT bool VacuumCostActive;
typedef char *pg_stack_base_t;
-extern pg_stack_base_t set_stack_base(void);
+extern pg_stack_base_t set_stack_base(void) pg_attribute_no_asan;
extern void restore_stack_base(pg_stack_base_t base);
extern void check_stack_depth(void);
-extern bool stack_is_too_deep(void);
+extern bool stack_is_too_deep(void) pg_attribute_no_asan;
/* in tcop/utility.c */
extern void PreventCommandIfReadOnly(const char *cmdname);
--
Tristan Partin
Neon (https://neon.tech)