Skip to content

2.27.0.0-b187

@jaki jaki tagged this 05 Jun 00:36
Summary:
Running Java test TestPgRegressPgTypesUDT on ASAN fails with

    ts1|pid74720|:24411 ${YB_SRC_ROOT}/src/postgres/src/include/lib/sort_template.h:301:15: runtime error: applying non-zero offset 8 to null pointer
    ts1|pid74720|:24411     #0 0x55eb30c5c61b in qsort_arg ${YB_SRC_ROOT}/src/postgres/src/include/lib/sort_template.h:301:15
    ts1|pid74720|:24411     #1 0x55eb30883c9a in multirange_canonicalize ${YB_SRC_ROOT}/src/postgres/src/backend/utils/adt/multirangetypes.c:481:2
    ts1|pid74720|:24411     #2 0x55eb30883c9a in make_multirange ${YB_SRC_ROOT}/src/postgres/src/backend/utils/adt/multirangetypes.c:648:16
    ts1|pid74720|:24411     #3 0x55eb2ffd01db in ExecInterpExpr ${YB_SRC_ROOT}/src/postgres/src/backend/executor/execExprInterp.c:731:8
    ...
    ts1|pid74720|:24411 SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior ${YB_SRC_ROOT}/src/postgres/src/include/lib/sort_template.h:301:15
    ts1|pid74720|:24411 2025-05-30 04:15:01.687 UTC [74992] WARNING:  server process (PID 76254) exited with exit code 1
    ts1|pid74720|:24411 2025-05-30 04:15:01.687 UTC [74992] DETAIL:  Failed process was running: select textmultirange();
    pg_regress|pid75085|stdout test yb.port.multirangetypes      ... FAILED (test process exited with exit code 2)     1615 ms

The issue is that multirange_constructor0 passes NULL, which flows all
the way down to qsort_arg, and qsort_arg attempts pointer arithmetic on
that NULL.  Fix by returning early before that.

This fix may impact other cases besides multirange since qsort_arg is
used in several places, but given no issues were reported till now,
perhaps it isn't possible to pass NULL to qsort_arg through those
places.
Jira: DB-16985

Test Plan:
On Almalinux 8:

    ./yb_build.sh asan daemons initdb \
      --java-test 'org.yb.pgsql.TestPgRegressPgTypesUDT#schedule'

Close: #27447

Reviewers: telgersma

Reviewed By: telgersma

Subscribers: yql

Differential Revision: https://phorge.dev.yugabyte.com/D44464
Assets 2
Loading