On Mon, Oct 05, 2020 at 08:42:15PM -0400, Tom Lane wrote: > hornet has failed its last five runs with > > 2020-10-05 22:45:42.784 UTC [34734498:40] pg_regress/create_aggregate LOG: > statement: create aggregate my_percentile_disc(float8 ORDER BY anyelement) ( > stype = internal, > sfunc = ordered_set_transition, > finalfunc = percentile_disc_final, > finalfunc_extra = true, > finalfunc_modify = read_write > ); > TRAP: FailedAssertion("variadicArgType != InvalidOid", File: > "pg_aggregate.c", Line: 216, PID: 34734498) > > After looking at the commits immediately preceding the first failure, and > digging around in the aggregate-related code, it seems like commit > cc99baa43 (Improve pg_list.h's linitial(), lsecond() and co macros) > must've broke it somehow. The nearest thing that I can see to a theory > is that where DefineAggregate does > numDirectArgs = intVal(lsecond(args)); > it's coming out with the wrong result, leading to a failure of the > numDirectArgs-vs-numArgs sanity check in AggregateCreate.
Building the tree with -O0 suppresses the problem. (xlc does not have -O1.) Building just aggregatecmds.c and pg_aggregate.c that way does not, so I suppose the damage arose elsewhere. > But how could > that be? I hesitate to blame the compiler twice in one week. OTOH, it's > a not-very-mainstream compiler on a not-very-mainstream architecture. A compiler bug is plausible. The compiler is eight years old, and we're not seeing the problem on 32-bit (mandrill) or on 2019-vintage xlc (hoverfly). Shall I make this animal use -O0 on v14+?