Re: Aw: BUG #18312: libpq: PQsetdbLogin() not thread-safe
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Christian Maurer <c.maurer@gmx.at>
Cc: pgsql-bugs@lists.postgresql.org
Date: 2024-02-02T15:48:56Z
Lists: pgsql-bugs
Christian Maurer <c.maurer@gmx.at> writes: > I managed to capture a stack trace for the crash via WinDbg: > > Frame Index Call Site Child-SP Return Address > [0x0] ntdll!NtTerminateProcess+0x14 0x18aa9fdf88 0x7fffce3cda98 > [0x1] ntdll!RtlExitUserProcess+0xb8 0x18aa9fdf90 0x7fffcd99e82b > [0x2] KERNEL32!ExitProcessImplementation+0xb 0x18aa9fdfc0 0x7fffcd42a155 > [0x3] msvcrt!_crtExitProcess+0x15 0x18aa9fdff0 0x7fffcd42a7c5 > [0x4] msvcrt!doexit+0x171 0x18aa9fe020 0x7fffcd41f26d > [0x5] msvcrt!abort+0x8d 0x18aa9fe090 0x68281886 > [0x6] libintl_9!libintl_bindtextdomain+0x56 0x18aa9fe640 0x7fff7dcd2e93 > [0x7] LIBPQ!PQenv2encoding+0x1193 0x18aa9fe670 0x7fff7dcd2c9e Hm, so it's bindtextdomain() that is aborting. Back at [1] I wondered whether we needed to introduce a critical section to prevent multiple threads from calling that concurrently, even though its docs allege you shouldn't have to. Perhaps it's thread-safe except on Windows? regards, tom lane [1] https://www.postgresql.org/message-id/flat/CAE7q7Eit4Eq2%3Dbxce%3DFm8HAStECjaXUE%3DWBQc-sDDcgJQ7s7eg%40mail.gmail.com
Commits
-
Avoid concurrent calls to bindtextdomain().
- a584d03ced5f 17.0 landed
- 9fb1396a96bd 12.19 landed
- 8ead39e3895e 14.12 landed
- 8c5da20db298 13.15 landed
- 806f98951511 15.7 landed
- 52afe563206e 16.3 landed