pgsql: llvmjit: Also copy parameter / return value attributes from temp

Поиск
Список
Период
Сортировка
От Andres Freund
Тема pgsql: llvmjit: Also copy parameter / return value attributes from temp
Дата
Msg-id E1kTBdj-0004T3-QD@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
llvmjit: Also copy parameter / return value attributes from template functions.

Previously we only copied the function attributes. That caused problems at
least on s390x: Because we didn't copy the 'zeroext' attribute for
ExecAggTransReparent()'s *IsNull parameters, expressions invoking it didn't
ensure that the upper bytes of the registers were zeroed. In the - relatively
rare - cases where not, ExecAggTransReparent() wrongly ended up in the
newValueIsNull branch due to the register not being zero. Subsequently causing
a crash.

It's quite possible that this would cause problems on other platforms, and in
other places than just ExecAggTransReparent() on s390x.

Thanks to Christoph (and the Debian project) for providing me with access to a
s390x machine, allowing me to debug this.

Reported-By: Christoph Berg
Author: Andres Freund
Discussion: https://postgr.es/m/20201015083246.kie5726xerdt3ael@alap3.anarazel.de
Backpatch: 11-, where JIT was added

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/72559438f92f9a7d9205192bef601be953c7bd2a

Modified Files
--------------
src/backend/jit/llvm/llvmjit.c | 44 ++++++++++++++++++++++++++++++------------
1 file changed, 32 insertions(+), 12 deletions(-)


В списке pgsql-committers по дате отправления:

Предыдущее
От: Bruce Momjian
Дата:
Сообщение: pgsql: doc: improve description of synchronous_commit modes
Следующее
От: Andres Freund
Дата:
Сообщение: pgsql: llvmjit: Also copy parameter / return value attributes from temp