On Sun, Jan 9, 2022 at 1:27 PM Zhihong Yu <z...@yugabyte.com> wrote: > > > On Sun, Jan 9, 2022 at 12:38 PM Zhihong Yu <z...@yugabyte.com> wrote: > >> >> >> On Sun, Jan 9, 2022 at 8:48 AM Noah Misch <n...@leadboat.com> wrote: >> >>> On Sun, Jan 09, 2022 at 04:37:32AM -0800, Zhihong Yu wrote: >>> > On Sat, Jan 8, 2022 at 11:32 PM Tom Lane <t...@sss.pgh.pa.us> wrote: >>> > > Noah Misch <n...@leadboat.com> writes: >>> > > > On further thought, I would write it this way: >>> > > >>> > > > - else >>> > > > + else if (ivlen != 0) >>> > > > memcpy(ivbuf, iv, ivlen); >>> > > >>> > > FWIW, I liked the "ivlen > 0" formulation better. They should be >>> > > equivalent, because ivlen is unsigned, but it just seems like "> 0" >>> > > is more natural. >>> >>> If I were considering the one code site in isolation, I'd pick "ivlen > >>> 0". >>> But of the four sites identified so far, three have signed length >>> variables. >>> Since we're likely to get more examples of this pattern, some signed and >>> some >>> unsigned, I'd rather use a style that does the optimal thing whether or >>> not >>> the variable is signed. What do you think? >>> >>> > Patch v4 is attached. >>> >>> Does this pass the test procedure shown upthread? >>> >> Hi, >> I installed gcc 4.9.3 >> >> When I ran: >> ./configure CFLAGS='-fsanitize=undefined >> -fsanitize-undefined-trap-on-error' >> >> I saw: >> >> configure:3977: $? = 0 >> configure:3966: gcc -V >&5 >> gcc: error: unrecognized command line option '-V' >> gcc: fatal error: no input files >> compilation terminated. >> configure:3977: $? = 1 >> configure:3966: gcc -qversion >&5 >> gcc: error: unrecognized command line option '-qversion' >> gcc: fatal error: no input files >> compilation terminated. >> configure:3977: $? = 1 >> configure:3997: checking whether the C compiler works >> configure:4019: gcc -fsanitize=undefined >> -fsanitize-undefined-trap-on-error conftest.c >&5 >> gcc: error: unrecognized command line option >> '-fsanitize-undefined-trap-on-error' >> configure:4023: $? = 1 >> configure:4061: result: no >> >> I wonder if a higher version gcc is needed. >> >> FYI >> > > After installing gcc-11, ./configure passed (with 0003-memcpy-null.patch). > In the output of `make check-world`, I don't see `runtime error`. > Though there was a crash (maybe specific to my machine): > > Core was generated by > `/nfusr/dev-server/zyu/postgres/tmp_install/usr/local/pgsql/bin/postgres > --singl'. > Program terminated with signal SIGILL, Illegal instruction. > #0 0x000000000050642d in write_item.cold () > Missing separate debuginfos, use: debuginfo-install > glibc-2.17-325.el7_9.x86_64 nss-pam-ldapd-0.8.13-25.el7.x86_64 > sssd-client-1.16.5-10.el7_9.10.x86_64 > (gdb) bt > #0 0x000000000050642d in write_item.cold () > #1 0x0000000000ba9d1b in write_relcache_init_file () > #2 0x0000000000bb58f7 in RelationCacheInitializePhase3 () > #3 0x0000000000bd5cb5 in InitPostgres () > #4 0x0000000000a0a9ea in PostgresMain () > > FYI > Hi, Earlier I was using devtoolset-11 which had an `Illegal instruction` error.
I compiled / installed gcc-11 from source (which took whole afternoon). `make check-world` passed with patch v3. In tmp_install/log/install.log, I saw: gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Werror=vla -Wendif-labels -Wmissing-format-attribute -Wimplicit-fallthrough=3 -Wcast-function-type -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -Wno-format-truncation -Wno-stringop-truncation -fsanitize=undefined -fsanitize-undefined-trap-on-error -I../../src/port -DFRONTEND -I../../src/include -D_GNU_SOURCE -c -o path.o path.c rm -f libpgport.a Cheers