Skip site navigation (1) Skip section navigation (2)

Re: [HACKERS] Mac OS X, PostgreSQL, PL/Tcl

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Scott Goodwin <scott(at)scottg(dot)net>
Cc: pgsql-hackers(at)postgresql(dot)org, pgsql-bugs(at)postgresql(dot)org
Subject: Re: [HACKERS] Mac OS X, PostgreSQL, PL/Tcl
Date: 2004-02-22 21:47:56
Message-ID: (view raw, whole thread or download thread mbox)
Lists: pgsql-bugspgsql-hackers
Scott Goodwin <scott(at)scottg(dot)net> writes:
> Found the problem. If I have a very long environment variable exported  
> and I start PG, PG crashes when I try to load PG/Tcl. In my case I use  
> color ls and I have a very long LS_COLORS environment variable set.

I was able to duplicate this.  I am not entirely sure why the problem is
dependent on the environment size, but I now know what causes it.
It seems Darwin's libc keeps its own copy of the argv pointer, and when
we move argv and then scribble on the original, it causes problems for
subsequent code that tries to look at argv[0] to determine the
executable's location.  (It's a good thing Darwin is open source, 'cause
I'm not sure we'd have ever seen the connection if we hadn't been able
to look at the source code for their libc.)

The fix is basically

+ #if defined(__darwin__)
+ #include <crt_externs.h>
+ #endif

+ #if defined(__darwin__)
+ 		*_NSGetArgv() = new_argv;
+ #endif

which you can stick into main.c if you need a workaround.  I applied a
more extensive patch to HEAD that refactors this code into ps_status.c,
but I'm disinclined to apply that patch to stable branches...

			regards, tom lane

In response to


pgsql-hackers by date

Next:From: Tom LaneDate: 2004-02-22 22:24:11
Subject: Heads up: 7.3.6 and 7.4.2 coming soon
Previous:From: Andrew DunstanDate: 2004-02-22 20:50:12
Subject: Re: Pl/Java - next step?

pgsql-bugs by date

Next:From: Scott GoodwinDate: 2004-02-22 23:22:47
Subject: Re: [HACKERS] Mac OS X, PostgreSQL, PL/Tcl
Previous:From: Scott GoodwinDate: 2004-02-22 18:19:24
Subject: Re: [HACKERS] Mac OS X, PostgreSQL, PL/Tcl

Privacy Policy | About PostgreSQL
Copyright © 1996-2017 The PostgreSQL Global Development Group