Hi everybody,

I found a problem running Postgres 6.4 and 6.4.2 on our HP-Ux 
10.10 system. (Compiling with gcc 2.7.1.3 or gcc 2.8.1 makes no 
differences.)

After two SQL errors (e.g. SALACT instead of SELECT or insert 
something into a none existing table) the backend dies abnormally. 

Below the HP-Ux gurus can find additional information from the 
core file.

Any help welcome.

Kind regards,
Reiner Nippes

UMS GmbH, Ulm - Germany

------- Forwarded Message Follows -------
From:           	jwieck@debis.com (Jan Wieck)
Subject:        	Re: [ADMIN] Running Postgres on a HP-Ux 10.10 System
To:             	nippes@mail.ums-ulm.de
Date sent:      	Wed, 27 Jan 1999 15:15:05 +0100 (MET)
Copies to:      	wieck@debis.com, pgsql-admin@postgreSQL.org
Send reply to:  	jwieck@debis.com (Jan Wieck)

> #0  0xc00a9098 in memset ()
> (gdb) backtrace
> #0  0xc00a9098 in memset ()
> #1  0x15d0e8 in PostgresMain (argc=-534762622, argv=0x203cb000,
>     real_argc=-534763790, real_argv=0x203cb000) at postgres.c:1582
> #2  0xe0202530 in ?? ()
> Cannot access memory at address 0x203cafe8.
>
> (gdb) frame 1
> #1  0x15d0e8 in PostgresMain (argc=-534762622, argv=0x203cb000,
>     real_argc=-534763790, real_argv=0x203cb000) at postgres.c:1582
> 1582                    MemSet(parser_input, 0, MAX_PARSE_BUFFER);
> (gdb) list
> 1577
> 1578                    /* ----------------
> 1579                     *       (3) read a command.
> 1580                     * ----------------
> 1581                     */
> 1582                    MemSet(parser_input, 0, MAX_PARSE_BUFFER);
> 1583
> 1584                    firstchar = ReadCommand(parser_input);
> 1585
> 1586                    QueryCancel = false;    /* forget any earlier CANCEL sig
> nal */
> (gdb)

    Bingo!

    MemSet()  is  a  macro  in src/include/c.h which in this case
    calls the real memset() library  function  (area  to  set  is
    greater than 64 bytes).

    parser_input    is   a   dynamic   char   array   inside   of
    PostgresMain(), so it's part  of  the  innermost  stackframe.
    This  looks  to  me  like the execution of longjmp() from the
    elog() corrupted the stackframe of PostgresMain() instead  of
    restoring it as it should have done.

    There  are  different  kinds  of  jumps used depending on the
    installation.   One  is  setjmp()/longjmp()  the   other   is
    sigsetjmp()/siglongjmp(). If I recall correct, sigsetjmp() is
    #defined to setjmp() if it isn't available.

    So folks, low level HP/UX 10.10 know how required!


Jan

--

#======================================================================#
# It's easier to get forgiveness for being wrong than for being right. #
# Let's break this rule - forgive me.                                  #
#======================================== jwieck@debis.com (Jan Wieck) #




Thu, 28 Jan 1999 15:22:30 +0100
"Reiner Nippes" <nippes@ums-ulm.de>
(Fwd) Re: [ADMIN] Running Postgres on a HP-Ux 10.10 System