mirror of
https://github.com/postgres/postgres.git
synced 2026-07-08 09:10:57 -04:00
pg_dump: check for _beginthreadex() failure in parallel dump
ParallelBackupStart() stored _beginthreadex()'s return value as the worker's thread handle without checking it. On failure that value is 0, which would later reach WaitForMultipleObjects() as a null handle, caught only by an Assert. The fork() path already calls pg_fatal() when it fails; do the same for _beginthreadex(), as pgbench does. Author: Bryan Green <dbryan.green@gmail.com> Discussion: https://www.postgresql.org/message-id/8c712d76-ecf7-4749-a6d8-dddc01f298ec@gmail.com Backpatch-through: 14
This commit is contained in:
parent
be63b285e5
commit
4eaceec97a
1 changed files with 2 additions and 0 deletions
|
|
@ -974,6 +974,8 @@ ParallelBackupStart(ArchiveHandle *AH)
|
|||
|
||||
handle = _beginthreadex(NULL, 0, (void *) &init_spawned_worker_win32,
|
||||
wi, 0, &(slot->threadId));
|
||||
if (handle == 0)
|
||||
pg_fatal("could not create worker thread: %m");
|
||||
slot->hThread = handle;
|
||||
slot->workerStatus = WRKR_IDLE;
|
||||
#else /* !WIN32 */
|
||||
|
|
|
|||
Loading…
Reference in a new issue