Re: failing to build preproc.c on solaris with sun studio - Mailing list pgsql-hackers

From Noah Misch
Subject Re: failing to build preproc.c on solaris with sun studio
Date
Msg-id 20220806230924.GA3981561@rfd.leadboat.com
Whole thread Raw
In response to failing to build preproc.c on solaris with sun studio  (Andres Freund <andres@anarazel.de>)
Responses Re: failing to build preproc.c on solaris with sun studio
List pgsql-hackers
On Sat, Aug 06, 2022 at 02:07:24PM -0700, Andres Freund wrote:
> I tried PG on the gcc compile farm solaris 11.31 host. When compiling with sun
> studio I can build the backend etc, but preproc.c fails to compile:
> 
> ccache /opt/developerstudio12.6/bin/cc -m64 -Xa -g -v -O0 -D_POSIX_PTHREAD_SEMANTICS -mt -D_REENTRANT -D_THREAD_SAFE
-I../include-I../../../../src/interfaces/ecpg/include -I. -I. -I../../../../src/interfaces/ecpg/ecpglib
-I../../../../src/interfaces/libpq-I../../../../src/include  -D_POSIX_PTHREAD_SEMANTICS   -c -o preproc.o preproc.c
 
> Assertion failed: hmap_size (phdl->fb.map) == 0, file ../src/line_num_internal.c, line 230, function
twolist_proc_clear
> Assertion failed: hmap_size (phdl->fb.map) == 0, file ../src/line_num_internal.c, line 230, function
twolist_proc_clear
> cc: Fatal error in /opt/developerstudio12.6/lib/compilers/bin/acomp
> cc: Status 134
> 
> the assertion is just a consequence of running out of memory, I believe, acomp
> is well over 20GB at that point.
> 
> However I see that wrasse doesn't seem to have that problem. Which leaves me a
> bit confused, because I think that's the same machine and compiler binary.
> 
> Noah, did you encounter this before / do anything to avoid this?

Yes.  Drop --enable-debug, and override TMPDIR to some disk-backed location.

From the earliest days of wrasse, the compiler used too much RAM to build
preproc.o with --enable-debug.  As of 2021-04, the compiler's "acomp" phase
needed 10G in one process, and later phases needed 11.6G across two processes.
Compilation wrote 3.7G into TMPDIR.  Since /tmp consumes RAM+swap, overriding
TMPDIR relieved 3.7G of RAM pressure.  Even with those protections, wrasse
intermittently reaches the 14G limit I impose (via "ulimit -v 14680064").  I
had experimented with different optimization levels, but that didn't help.



pgsql-hackers by date:

Previous
From: Tom Lane
Date:
Subject: Re: Cleaning up historical portability baggage
Next
From: Peter Geoghegan
Date:
Subject: Re: Making autovacuum logs indicate if insert-based threshold was the triggering condition