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