Re: ps_status.h on FreeBSD 4.0 problems and fix - Mailing list pgsql-bugs

From Matthew Altus
Subject Re: ps_status.h on FreeBSD 4.0 problems and fix
Date
Msg-id 396A8046.C3413AA9@senet.com.au
Whole thread Raw
In response to Re: ps_status.h on FreeBSD 4.0 problems and fix  (Bruce Momjian <pgman@candle.pha.pa.us>)
Responses Re: ps_status.h on FreeBSD 4.0 problems and fix  (Bruce Momjian <pgman@candle.pha.pa.us>)
List pgsql-bugs
Excellent, but as we are using 6.5.1 at the moment, due to performance
issues with 6.5.2/3 and optimizer concerns with 7.0.x is this change ok,
ie nothing should break due to it.  I have been thrashing this db over
the entire weekend, and died only due to a 1 corrupt index, so I believe
it should be ok, but to get a view from people who know about this would
be great.

Thanks

Bruce Momjian wrote:
>
> We already did this.  This will be in 7.1.
>
> > Your name               :       Matthew Altus
> > Your email address      :     matt@senet.com.au
> >
> >
> > System Configuration
> > ---------------------
> >   Architecture : Intel Pentium 3 Dual CPU
> >
> >   Operating System : FreeBSD 4.0 - STABLE
> >
> >   PostgreSQL version :   PostgreSQL-6.5.1 (also effects 7.0 as well)
> >
> >   Compiler used : gcc 2.95.2
> >
> >
> > Please enter a FULL description of your problem:
> > ------------------------------------------------
> > The ps output of child postgres process doesn't change to display
> > hostname etc...  It displays the same as the postmaster.
> > I noticed there are links (PS_STATUS marco) from the ps_status to the
> > lockmgr files, which means it may use this to help determine deadlock
> > status, which is very bad, as freebsd 4.0 doesn't allow you to write the
> > argv memory, although I might me completely wrong about this one.
> >
> > If this problem had already been posted to pgsql-bugs, I couldn't tell
> > as your seach doesn't work.
> >
> >
> >
> > Please describe a way to repeat the problem.   Please try to provide a
> > concise reproducible example, if at all possible:
> > ----------------------------------------------------------------------
> > Install postgres on freeBSD 4.0 and open a connection, type ps axwwwwww
> > | grep postgres.  all children will look the same as the postmaster.
> >
> >
> >
> >
> > If you know how this problem might be fixed, list the solution below:
> > ---------------------------------------------------------------------
> >
> > Below is my replacement to src/include/utils/ps_status.h , you should
> > place checks for the setproctitle function in the configure script and
> > use this if its available (most BSD's) instead of overwriting the argv
> > memory space.  You will also need to link against libutil (-lutil).
> >
> >
> > /*-------------------------------------------------------------------------
> >  *
> >  * ps_status.h
> >  *
> >  *      Defines macros to show backend status on the ps status line.
> >  *      Unfortunately this is system dpendent.
> >  *
> >  *      Below is the FreeBSD version should work FreeBSD 2.2. and
> > higher.
> >  *
> >  *      needs -lutil in makefile/configure script
> >  *
> >  *      Written by Matthew Altus
> >  *
> >
> > *-------------------------------------------------------------------------
> >  */
> >
> > #ifndef PS_STATUS_H
> > #define PS_STATUS_H
> >
> >
> > #include <sys/types.h>
> > #include <libutil.h>
> >
> > extern char ps_status_buffer[];
> > extern char ps_status[];
> >
> > #define BUFFERPATHLEN     255
> >
> > #define PS_DEFINE_BUFFER \
> > char ps_status_buffer[BUFFERPATHLEN]; \
> > char ps_status[BUFFERPATHLEN];
> >
> > #define PS_INIT_STATUS(argc, argv, execname, username, hostname, dbname)
> > \
> >         { \
> >                 bzero (ps_status_buffer, BUFFERPATHLEN); \
> >                 bzero (ps_status, BUFFERPATHLEN); \
> >                 sprintf(ps_status_buffer, "%s %s %s %s ", execname,
> > username, hostname, dbname); \
> >                 setproctitle("%s", ps_status_buffer); \
> >         }
> >
> > #define PS_CLEAR_STATUS() \
> >         { \
> >                 bzero (ps_status, BUFFERPATHLEN); \
> >                 setproctitle("%s", ps_status_buffer); \
> >         }
> >
> > #define PS_SET_STATUS(status) \
> >         { \
> >                 PS_CLEAR_STATUS(); \
> >                 strcpy(ps_status, status); \
> >                 setproctitle("%s%s", ps_status_buffer, ps_status); \
> >         }
> >
> > #define PS_STATUS (ps_status)
> >
> >
> >
> > #endif   /* PS_STATUS_H */
> >
> >
> >
> > --
> > _____________________________________________________________________
> > Matthew Altus  B.Eng. C.S.E.        Sales   : (08) 8221 5221
> > Software Development Engineer       Support : (08) 8221 5792
> > SE Network Access Pty Ltd           Fax     : (08) 8221 5220
> > 222 Grote Street                    E-Mail  : matt@senet.com.au
> > Adelaide  SA  5000                  WWW     : http://www.senet.com.au
> >
>
> --
>   Bruce Momjian                        |  http://candle.pha.pa.us
>   pgman@candle.pha.pa.us               |  (610) 853-3000
>   +  If your life is a hard drive,     |  830 Blythe Avenue
>   +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026

--
_____________________________________________________________________
Matthew Altus  B.Eng. C.S.E.        Sales   : (08) 8221 5221
Software Development Engineer       Support : (08) 8221 5792
SE Network Access Pty Ltd           Fax     : (08) 8221 5220
222 Grote Street                    E-Mail  : matt@senet.com.au
Adelaide  SA  5000                  WWW     : http://www.senet.com.au

pgsql-bugs by date:

Previous
From: ryan
Date:
Subject: "New" bug?? Serious - crashes backend.
Next
From: Bruce Momjian
Date:
Subject: Re: ps_status.h on FreeBSD 4.0 problems and fix