On 2022/02/08 7:00, Greg Stark wrote:
> Unless I'm misreading this code I think the nevents in
> WaitLatchOrSocket should really be 4 not 3. At least there are 4 calls
> to AddWaitEventToSet in it and I think it's possible to trigger all 4.
Good catch! I think you're right.
As the quick test, I confirmed that the assertion failure happened when I passed four possible events to
WaitLatchOrSocket()in postgres_fdw.
TRAP: FailedAssertion("set->nevents < set->nevents_space", File: "latch.c", Line: 868, PID: 54424)
0 postgres 0x0000000107efa49f ExceptionalCondition + 223
1 postgres 0x0000000107cbca0c AddWaitEventToSet + 76
2 postgres 0x0000000107cbd86e WaitLatchOrSocket + 430
3 postgres_fdw.so 0x000000010848b1aa pgfdw_get_result + 218
4 postgres_fdw.so 0x000000010848accb do_sql_command + 75
5 postgres_fdw.so 0x000000010848c6b8 configure_remote_session + 40
6 postgres_fdw.so 0x000000010848c32d connect_pg_server + 1629
7 postgres_fdw.so 0x000000010848aa06 make_new_connection + 566
8 postgres_fdw.so 0x0000000108489a06 GetConnection + 550
9 postgres_fdw.so 0x0000000108497ba4 postgresBeginForeignScan + 260
10 postgres 0x0000000107a7d79f ExecInitForeignScan + 943
11 postgres 0x0000000107a5c8ab ExecInitNode + 683
12 postgres 0x0000000107a5028a InitPlan + 1386
13 postgres 0x0000000107a4fb66 standard_ExecutorStart + 806
14 postgres 0x0000000107a4f833 ExecutorStart + 83
15 postgres 0x0000000107d0277f PortalStart + 735
16 postgres 0x0000000107cfe150 exec_simple_query + 1168
17 postgres 0x0000000107cfd39e PostgresMain + 2110
18 postgres 0x0000000107c07e72 BackendRun + 50
19 postgres 0x0000000107c07438 BackendStartup + 552
20 postgres 0x0000000107c0621c ServerLoop + 716
21 postgres 0x0000000107c039f9 PostmasterMain + 6441
22 postgres 0x0000000107ae20d9 main + 809
23 libdyld.dylib 0x00007fff2045cf3d start + 1
24 ??? 0x0000000000000003 0x0 + 3
Regards,
--
Fujii Masao
Advanced Computing Technology Center
Research and Development Headquarters
NTT DATA CORPORATION