| From: | Chao Li <li(dot)evan(dot)chao(at)gmail(dot)com> |
|---|---|
| To: | Andres Freund <andres(at)anarazel(dot)de> |
| Cc: | Jim Jones <jim(dot)jones(at)uni-muenster(dot)de>, Andrew Dunstan <andrew(at)dunslane(dot)net>, Jakub Wartak <jakub(dot)wartak(at)enterprisedb(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
| Subject: | Re: Add errdetail() with PID and UID about source of termination signal |
| Date: | 2026-04-10 06:18:10 |
| Message-ID: | 3EA61BEA-C3B5-41DE-904B-8E17D6E242CA@gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
> On Apr 9, 2026, at 22:47, Andres Freund <andres(at)anarazel(dot)de> wrote:
>
> Hi,
>
> On 2026-04-09 14:14:23 +0800, Chao Li wrote:
>>> For uid, 0 is usually a valid value for root. So using 0 as the “unknown” value seems a bit awkward. Maybe we should instead document something like "uid is only meaningful when pid is not 0".
>>>
>>
>> Forgot to mention, I got a lot of compile warnings, for example:
>> ```
>> parallel.c:1052:20: warning: cast from 'void (*)(int)' to 'pqsigfunc' (aka 'void (*)(int, struct pg_signal_info *)') converts to incompatible function type [-Wcast-function-type-mismatch]
>> 1052 | pqsignal(SIGPIPE, PG_SIG_IGN);
>> | ^~~~~~~~~~
>> ../../../src/include/port.h:551:20: note: expanded from macro 'PG_SIG_IGN'
>> 551 | #define PG_SIG_IGN (pqsigfunc) SIG_IGN
>> | ^~~~~~~~~~~~~~~~~~~
>> 4 warnings generated.
>> ```
>
> That's an annoying warning, GAH. Can't imagine this is the only thing it
> complains about. Yes, compiler, I put a cast there, because I did actually
> want to cast, thanks.
>
> I guess we'll have to define PG_SIG_IGN to 1 and PG_SIG_DFL to 0 ourselves.
>
> Greetings,
>
> Andres Freund
I think PG already has pg_funcptr_t to treat this case, this change eliminates the warnings for me:
```
chaol(at)ChaodeMacBook-Air postgresql % git diff
diff --git a/src/include/port.h b/src/include/port.h
index 7db476d7b01..c029878c6be 100644
--- a/src/include/port.h
+++ b/src/include/port.h
@@ -547,8 +547,8 @@ extern int pg_mkdir_p(char *path, int omode);
#define pqsignal pqsignal_be
#endif
-#define PG_SIG_DFL (pqsigfunc) SIG_DFL
-#define PG_SIG_IGN (pqsigfunc) SIG_IGN
+#define PG_SIG_DFL (pqsigfunc) (pg_funcptr_t) SIG_DFL
+#define PG_SIG_IGN (pqsigfunc) (pg_funcptr_t) SIG_IGN
typedef void (*pqsigfunc) (SIGNAL_ARGS);
extern void pqsignal(int signo, pqsigfunc func);
```
Best regards,
--
Chao Li (Evan)
HighGo Software Co., Ltd.
https://www.highgo.com/
| From | Date | Subject | |
|---|---|---|---|
| Next Message | vignesh C | 2026-04-10 06:29:23 | Re: Support EXCEPT for ALL SEQUENCES publications |
| Previous Message | Fujii Masao | 2026-04-10 06:16:37 | Re: Use proc_exit() in WalRcvWaitForStartPosition |