Re: Consolidate 'unique array values' logic into a reusable function?

Thomas Munro <[email protected]>
Newsgroups gmane.comp.db.postgresql.devel.general
Message-ID <CA+hUKGJKGpniqYVNaOf0NJnah2vG1xcZG3jRkQu1CDYegghfXw@mail.gmail.com>
On Sun, Dec 29, 2019 at 8:02 PM Noah Misch <[email protected]> wrote:
> ==00:00:00:28.322 1527557== Source and destination overlap in memcpy(0x1000104, 0x1000104, 4)
> ==00:00:00:28.322 1527557==    at 0x4C2E74D: memcpy@@GLIBC_2.14 (vg_replace_strmem.c:1035)
> ==00:00:00:28.322 1527557==    by 0xA9A57B: qunique (qunique.h:34)
> ==00:00:00:28.322 1527557==    by 0xA9A843: InitCatalogCache (syscache.c:1056)
> ==00:00:00:28.322 1527557==    by 0xAB6B18: InitPostgres (postinit.c:682)
> ==00:00:00:28.322 1527557==    by 0x91F98E: PostgresMain (postgres.c:3909)
> ==00:00:00:28.322 1527557==    by 0x872DE9: BackendRun (postmaster.c:4498)
> ==00:00:00:28.322 1527557==    by 0x8725B3: BackendStartup (postmaster.c:4189)
> ==00:00:00:28.322 1527557==    by 0x86E7F4: ServerLoop (postmaster.c:1727)
> ==00:00:00:28.322 1527557==    by 0x86E0AA: PostmasterMain (postmaster.c:1400)
> ==00:00:00:28.322 1527557==    by 0x77CB56: main (main.c:210)
> ==00:00:00:28.322 1527557==
> {
>    <insert_a_suppression_name_here>
>    Memcheck:Overlap
>    fun:memcpy@@GLIBC_2.14
>    fun:qunique
>    fun:InitCatalogCache
>    fun:InitPostgres
>    fun:PostgresMain
>    fun:BackendRun
>    fun:BackendStartup
>    fun:ServerLoop
>    fun:PostmasterMain
>    fun:main
> }
>
> This is like the problem fixed in 9a9473f; the precedent from there would be
> to test src!=dst before calling mempcy(), e.g. as attached.  I suppose the
> alternative would be to add a suppression like the one 9a9473f removed.

Thanks for fixing that.

> I do wonder why the Valgrind buildfarm animals haven't noticed.

Optimisation levels?  For example, I see that skink is using -Og, at
which level my local GCC inlines qunique() and memcpy() so that in the
case you quoted there's a MOV instruction and valgrind has nothing to
complain about.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.