From: | PG Bug reporting form <noreply(at)postgresql(dot)org> |
---|---|
To: | pgsql-bugs(at)lists(dot)postgresql(dot)org |
Cc: | tlock(dot)chijin(at)gmail(dot)com |
Subject: | BUG #16457: Implicit signed integer truncation or sign change at sortsupport.c:60 |
Date: | 2020-05-24 15:43:03 |
Message-ID: | 16457-d00725d27f0d4864@postgresql.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs |
The following bug has been logged on the website:
Bug reference: 16457
Logged by: ChiJin Zhou
Email address: tlock(dot)chijin(at)gmail(dot)com
PostgreSQL version: 12.3
Operating system: ubuntu 18.04
Description:
REPRODUCTION && ERROR MESSAGE:
compile the postgres project with UndefinedBehaviorSanitizer and start a
start a server with "postgress" (command: "./postgres -Ddata -p23333"), and
Ubsan reported an error message:
sortsupport.c:60:9: runtime error: implicit conversion from type 'Datum'
(aka 'unsigned long') of value 18446744073709551615 (64-bit, unsigned) to
type 'int' changed the value to -1 (32-bit, signed)
#0 0xf3828d in comparison_shim
/root/chijin_workshop/postgres-new/postgres_source_enhanced/src/backend/utils/sort/sortsupport.c:60:9
#1 0x20a2793 in ApplySortComparator.5353
/root/chijin_workshop/postgres-new/postgres_source_enhanced/src/backend/commands/../../../src/include/utils/sortsupport.h:224:13
#2 0x20a1c49 in compare_scalars
/root/chijin_workshop/postgres-new/postgres_source_enhanced/src/backend/commands/analyze.c:2711:12
#3 0xa9a6bb in med3.26971
/root/chijin_workshop/postgres-new/postgres_source_enhanced/src/port/qsort_arg.c:108:4
#4 0xa98d65 in qsort_arg
/root/chijin_workshop/postgres-new/postgres_source_enhanced/src/port/qsort_arg.c:158:9
#5 0x2094869 in compute_scalar_stats
/root/chijin_workshop/postgres-new/postgres_source_enhanced/src/backend/commands/analyze.c:2284:3
#6 0x2062fb6 in do_analyze_rel
/root/chijin_workshop/postgres-new/postgres_source_enhanced/src/backend/commands/analyze.c:541:4
#7 0x2053891 in analyze_rel
/root/chijin_workshop/postgres-new/postgres_source_enhanced/src/backend/commands/analyze.c:260:3
#8 0x204be25 in vacuum
/root/chijin_workshop/postgres-new/postgres_source_enhanced/src/backend/commands/vacuum.c:413:5
SUMMARY: UndefinedBehaviorSanitizer:
implicit-signed-integer-truncation-or-sign-change sortsupport.c:60:9
ROOT CAUSE CODE
The root cause code and explanations are shown bellow (sortsupport.c:60).
static int
comparison_shim(Datum x, Datum y, SortSupport ssup)
{
SortShimExtra *extra = (SortShimExtra *) ssup->ssup_extra;
Datum result;
extra->fcinfo.args[0].value = x;
extra->fcinfo.args[1].value = y;
/* just for paranoia's sake, we reset isnull each time */
extra->fcinfo.isnull = false;
result = FunctionCallInvoke(&extra->fcinfo);
<---------- the result value is usigned 64 bit
/* Check for null result, since caller is clearly not expecting one
*/
if (extra->fcinfo.isnull)
elog(ERROR, "function %u returned NULL",
extra->flinfo.fn_oid);
return result; <----------- the return value is
signed 32 bit
}
From | Date | Subject | |
---|---|---|---|
Next Message | PG Bug reporting form | 2020-05-25 00:02:58 | BUG #16458: pg_restore lists data in corrupted backup files without checking if data exists |
Previous Message | PG Bug reporting form | 2020-05-23 14:21:38 | BUG #16456: Implicit unsigned integer truncation at multixact.c:2626 |