Re: buildfarm's typedefs list has gone completely nutso - Mailing list pgsql-hackers

From Andres Freund
Subject Re: buildfarm's typedefs list has gone completely nutso
Date
Msg-id 20190711002441.uz3qkqugw53tz4xs@alap3.anarazel.de
Whole thread Raw
In response to Re: buildfarm's typedefs list has gone completely nutso  (Andrew Dunstan <andrew@dunslane.net>)
Responses Re: buildfarm's typedefs list has gone completely nutso  (Andrew Dunstan <andrew.dunstan@2ndquadrant.com>)
Re: buildfarm's typedefs list has gone completely nutso  (Andres Freund <andres@anarazel.de>)
List pgsql-hackers
Hi,

On 2019-07-10 16:40:20 -0400, Andrew Dunstan wrote:
> On 7/10/19 1:34 PM, Andres Freund wrote:
> >
> > Hm, it has gotten gcc-9 installed recently, but calliphoridae isn't
> > using that. So it's probably not the compiler side. But I also see a
> > binutils upgrade:
> >
> > 2019-07-08 06:22:48 upgrade binutils-multiarch:amd64 2.31.1-16 2.32.51.20190707-1
> >
> > and corresponding upgrades forall the arch specific packages. I suspect
> > it might be that.
> >
> > I can't immediately reproduce that locally though, using the same
> > version of binutils. It's somewhat annoying that the buildfarm uses a
> > different form of computing the typedefs than src/tools/find_typedef ...

> That script is notably non-portable, and hasn't seen any significant
> update in a decade.

I think that's kinda what I'm complaining about... It seems like a bad
idea to have this in the buildfarm code, rather than our code. IMO the
buildfarm code should invoke an updated src/tools/find_typedef - that
way people at least can create typedefs manually locally.

Not yet sure what's actually going on, but there's something odd with
debug information afaict:

objdump -w spits out warnings for a few files, all static libraries:

../install/lib/libpgcommon.a
objdump: Warning: Location list starting at offset 0x0 is not terminated.
objdump: Warning: Hole and overlap detection requires adjacent view lists and loclists.
objdump: Warning: There are 3411 unused bytes at the end of section .debug_loc

../install/lib/libecpg.a
objdump: Warning: Hole and overlap detection requires adjacent view lists and loclists.
objdump: Warning: There are 8450 unused bytes at the end of section .debug_loc

../install/lib/libpgcommon_shlib.a
objdump: Warning: Location list starting at offset 0x0 is not terminated.
objdump: Warning: Hole and overlap detection requires adjacent view lists and loclists.
objdump: Warning: There are 3411 unused bytes at the end of section .debug_loc

../install/lib/libpgfeutils.a
objdump: Warning: Hole and overlap detection requires adjacent view lists and loclists.
objdump: Warning: There are 3090 unused bytes at the end of section .debug_loc

../install/lib/libpgport.a
objdump: Warning: Location list starting at offset 0x0 is not terminated.
objdump: Warning: Hole and overlap detection requires adjacent view lists and loclists.
objdump: Warning: There are 38 unused bytes at the end of section .debug_loc

../install/lib/libpgtypes.a
objdump: Warning: Location list starting at offset 0x0 is not terminated.
objdump: Warning: Hole and overlap detection requires adjacent view lists and loclists.
objdump: Warning: There are 13199 unused bytes at the end of section .debug_loc

../install/lib/libecpg_compat.a
objdump: Warning: Hole and overlap detection requires adjacent view lists and loclists.
objdump: Warning: There are 15001 unused bytes at the end of section .debug_loc

../install/lib/libpgport_shlib.a
objdump: Warning: Location list starting at offset 0x0 is not terminated.
objdump: Warning: Hole and overlap detection requires adjacent view lists and loclists.
objdump: Warning: There are 38 unused bytes at the end of section .debug_loc

../install/lib/libpq.a
objdump: Warning: Location list starting at offset 0x0 is not terminated.
objdump: Warning: Hole and overlap detection requires adjacent view lists and loclists.
objdump: Warning: There are 5528 unused bytes at the end of section .debug_loc

Not sure if that's related - I don't get that locally (newer compiler,
different compiler options, same binutils).

Interestingly pg_fprintf is only generated by pg_fprintf, as far as I
can tell, and the 1/2 typedefs are from libpq. The relevant entries look
like:

 <1><4b>: Abbrev Number: 4 (DW_TAG_typedef)
    <4c>   DW_AT_name        : (indirect string, offset: 0x0): USE_SSE42_CRC32C_WITH_RUNTIME_CHECK 1
    <50>   DW_AT_decl_file   : 2
    <51>   DW_AT_decl_line   : 216
    <52>   DW_AT_decl_column : 23
    <53>   DW_AT_type        : <0x57>

So I suspect it might be the corruption/misparsing of objdump that's to
blame. Kinda looks like there's an issue with the dwarf stringtable, and
thus the wrong strings (debug information for macros in this case) is
being picked up.

Greetings,

Andres Freund



pgsql-hackers by date:

Previous
From: Bruce Momjian
Date:
Subject: Re: [Proposal] Table-level Transparent Data Encryption (TDE) and KeyManagement Service (KMS)
Next
From: Michael Paquier
Date:
Subject: Re: pg_checksums (or checksums in general) vs tableam