HEAPDEBUGALL is broken

Started by Peter Eisentrautalmost 6 years ago14 messageshackers
Jump to latest
#1Peter Eisentraut
peter_e@gmx.net

The HEAPDEBUGALL define has been broken since PG12 due to tableam
changes. Should we just remove this? It doesn't look very useful.
It's been around since Postgres95.

If we opt for removing: PG12 added an analogous HEAPAMSLOTDEBUGALL
(which still compiles correctly). Would we want to keep that?

--
Peter Eisentraut http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Peter Eisentraut (#1)
Re: HEAPDEBUGALL is broken

Peter Eisentraut <peter.eisentraut@2ndquadrant.com> writes:

The HEAPDEBUGALL define has been broken since PG12 due to tableam
changes. Should we just remove this? It doesn't look very useful.
It's been around since Postgres95.
If we opt for removing: PG12 added an analogous HEAPAMSLOTDEBUGALL
(which still compiles correctly). Would we want to keep that?

+1 for removing both. There are a lot of such debug "features"
in the code, and few of them are worth anything IME.

regards, tom lane

#3Alexander Lakhin
exclusion@gmail.com
In reply to: Peter Eisentraut (#1)
Re: HEAPDEBUGALL is broken

Hello hackers,
19.04.2020 13:37, Tom Lane wrote:

Peter Eisentraut <peter.eisentraut@2ndquadrant.com> writes:

The HEAPDEBUGALL define has been broken since PG12 due to tableam
changes.  Should we just remove this?  It doesn't look very useful.
It's been around since Postgres95.
If we opt for removing: PG12 added an analogous HEAPAMSLOTDEBUGALL
(which still compiles correctly).  Would we want to keep that?

+1 for removing both.  There are a lot of such debug "features"
in the code, and few of them are worth anything IME.

To the point, I've tried to use HAVE_ALLOCINFO on master today and it
failed too:
$ CPPFLAGS="-DHAVE_ALLOCINFO" ./configure --enable-tap-tests
--enable-debug --enable-cassert  >/dev/null && make -j16 >/dev/null
generation.c: In function ‘GenerationAlloc’:
generation.c:191:11: error: ‘GenerationContext {aka struct
GenerationContext}’ has no member named ‘name’
     (_cxt)->name, (_chunk), (_chunk)->size)
           ^
generation.c:386:3: note: in expansion of macro ‘GenerationAllocInfo’
   GenerationAllocInfo(set, chunk);
   ^~~~~~~~~~~~~~~~~~~
generation.c:191:11: error: ‘GenerationContext {aka struct
GenerationContext}’ has no member named ‘name’
     (_cxt)->name, (_chunk), (_chunk)->size)
           ^
generation.c:463:2: note: in expansion of macro ‘GenerationAllocInfo’
  GenerationAllocInfo(set, chunk);
  ^~~~~~~~~~~~~~~~~~~

Best regards,
Alexander

#4Peter Eisentraut
peter_e@gmx.net
In reply to: Alexander Lakhin (#3)
Re: HEAPDEBUGALL is broken

On 2020-04-19 22:00, Alexander Lakhin wrote:

To the point, I've tried to use HAVE_ALLOCINFO on master today and it
failed too:
$ CPPFLAGS="-DHAVE_ALLOCINFO" ./configure --enable-tap-tests
--enable-debug --enable-cassert  >/dev/null && make -j16 >/dev/null
generation.c: In function ‘GenerationAlloc’:
generation.c:191:11: error: ‘GenerationContext {aka struct
GenerationContext}’ has no member named ‘name’
     (_cxt)->name, (_chunk), (_chunk)->size)
           ^
generation.c:386:3: note: in expansion of macro ‘GenerationAllocInfo’
   GenerationAllocInfo(set, chunk);
   ^~~~~~~~~~~~~~~~~~~
generation.c:191:11: error: ‘GenerationContext {aka struct
GenerationContext}’ has no member named ‘name’
     (_cxt)->name, (_chunk), (_chunk)->size)
           ^
generation.c:463:2: note: in expansion of macro ‘GenerationAllocInfo’
  GenerationAllocInfo(set, chunk);
  ^~~~~~~~~~~~~~~~~~~

Do you have a proposed patch?

--
Peter Eisentraut http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

#5Peter Eisentraut
peter_e@gmx.net
In reply to: Tom Lane (#2)
Re: HEAPDEBUGALL is broken

On 2020-04-19 15:37, Tom Lane wrote:

Peter Eisentraut <peter.eisentraut@2ndquadrant.com> writes:

The HEAPDEBUGALL define has been broken since PG12 due to tableam
changes. Should we just remove this? It doesn't look very useful.
It's been around since Postgres95.
If we opt for removing: PG12 added an analogous HEAPAMSLOTDEBUGALL
(which still compiles correctly). Would we want to keep that?

+1 for removing both. There are a lot of such debug "features"
in the code, and few of them are worth anything IME.

removed

--
Peter Eisentraut http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

#6Tom Lane
tgl@sss.pgh.pa.us
In reply to: Peter Eisentraut (#5)
Re: HEAPDEBUGALL is broken

Peter Eisentraut <peter.eisentraut@2ndquadrant.com> writes:

On 2020-04-19 15:37, Tom Lane wrote:

+1 for removing both. There are a lot of such debug "features"
in the code, and few of them are worth anything IME.

removed

I don't see a commit?

regards, tom lane

#7Alexander Lakhin
exclusion@gmail.com
In reply to: Peter Eisentraut (#4)
Re: HEAPDEBUGALL is broken

21.04.2020 21:01, Peter Eisentraut wrote:

On 2020-04-19 22:00, Alexander Lakhin wrote:

To the point, I've tried to use HAVE_ALLOCINFO on master today and it
failed too:

Do you have a proposed patch?

As this is broken at least since the invention of the generational
allocator (2017-11-23, a4ccc1ce), I believe than no one uses this (and
slab is broken too). Nonetheless, HAVE_ALLOCINFO in aset.c is still
working, so it could be leaved alone, though the output too chatty for
general use (`make check` produces postmaster log of size 3.8GB). I
think someone would still need to insert some extra conditions to use
that or find another way to debug memory allocations.

So I would just remove this debug macro. The proposed patch is attached.

Best regards,
Alexander

Attachments:

remove-allocinfo.patchtext/x-patch; charset=UTF-8; name=remove-allocinfo.patchDownload+0-66
#8Peter Eisentraut
peter_e@gmx.net
In reply to: Tom Lane (#6)
Re: HEAPDEBUGALL is broken

On 2020-04-21 20:27, Tom Lane wrote:

Peter Eisentraut <peter.eisentraut@2ndquadrant.com> writes:

On 2020-04-19 15:37, Tom Lane wrote:

+1 for removing both. There are a lot of such debug "features"
in the code, and few of them are worth anything IME.

removed

I don't see a commit?

pushed now

--
Peter Eisentraut http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

#9Tom Lane
tgl@sss.pgh.pa.us
In reply to: Peter Eisentraut (#8)
Re: HEAPDEBUGALL is broken

Peter Eisentraut <peter.eisentraut@2ndquadrant.com> writes:

On 2020-04-21 20:27, Tom Lane wrote:

I don't see a commit?

pushed now

Looking at this, I'm tempted to nuke ACLDEBUG as well, which
is the only remaining undocumented symbol in pg_config_manual.h.
The code it controls looks equally forlorn and not-useful-as-is.

regards, tom lane

#10Tom Lane
tgl@sss.pgh.pa.us
In reply to: Alexander Lakhin (#7)
Re: HEAPDEBUGALL is broken

Alexander Lakhin <exclusion@gmail.com> writes:

21.04.2020 21:01, Peter Eisentraut wrote:

Do you have a proposed patch?

As this is broken at least since the invention of the generational
allocator (2017-11-23, a4ccc1ce), I believe than no one uses this (and
slab is broken too). Nonetheless, HAVE_ALLOCINFO in aset.c is still
working, so it could be leaved alone, though the output too chatty for
general use (`make check` produces postmaster log of size 3.8GB). I
think someone would still need to insert some extra conditions to use
that or find another way to debug memory allocations.

So I would just remove this debug macro. The proposed patch is attached.

I didn't review this in close detail, but I think it's a good idea.
We have better memory-use-analysis tools these days, such as valgrind,
so it's no surprise that nobody is using this old code.

regards, tom lane

#11Andres Freund
andres@anarazel.de
In reply to: Tom Lane (#2)
Re: HEAPDEBUGALL is broken

On 2020-04-19 09:37:08 -0400, Tom Lane wrote:

Peter Eisentraut <peter.eisentraut@2ndquadrant.com> writes:

The HEAPDEBUGALL define has been broken since PG12 due to tableam
changes. Should we just remove this? It doesn't look very useful.
It's been around since Postgres95.
If we opt for removing: PG12 added an analogous HEAPAMSLOTDEBUGALL
(which still compiles correctly). Would we want to keep that?

+1 for removing both. There are a lot of such debug "features"
in the code, and few of them are worth anything IME.

Belatedly: +many

#12Tom Lane
tgl@sss.pgh.pa.us
In reply to: Tom Lane (#10)
Re: HEAPDEBUGALL is broken

I wrote:

Alexander Lakhin <exclusion@gmail.com> writes:

So I would just remove this debug macro. The proposed patch is attached.

I didn't review this in close detail, but I think it's a good idea.

I checked this more closely and pushed it.

regards, tom lane

#13Tom Lane
tgl@sss.pgh.pa.us
In reply to: Tom Lane (#9)
Re: HEAPDEBUGALL is broken

I wrote:

Looking at this, I'm tempted to nuke ACLDEBUG as well, which
is the only remaining undocumented symbol in pg_config_manual.h.
The code it controls looks equally forlorn and not-useful-as-is.

Did that, too.

regards, tom lane

#14Michael Paquier
michael@paquier.xyz
In reply to: Andres Freund (#11)
Re: HEAPDEBUGALL is broken

On Wed, Apr 22, 2020 at 08:44:18PM -0700, Andres Freund wrote:

On 2020-04-19 09:37:08 -0400, Tom Lane wrote:

+1 for removing both. There are a lot of such debug "features"
in the code, and few of them are worth anything IME.

Belatedly: +many

+1.
--
Michael