Thread: BUG #18581: psql symbol append_history not found when quitting

BUG #18581: psql symbol append_history not found when quitting

From
PG Bug reporting form
Date:
The following bug has been logged on the website:

Bug reference:      18581
Logged by:          Rainer Brandt
Email address:      rjhb@bb-c.de
PostgreSQL version: 15.8
Operating system:   Solaris 11.4
Description:

When leaving a psql session via \q in 15.8 (which I built today under Oracle
Solaris 11.4), I get:
 ld.so.1: psql: fatal: relocation error: file
/opt/postgres/15-pgdg/bin/64/psql: symbol append_history: referenced symbol
not found
Killed

Then with nm:
nm /opt/postgres/15-pgdg/bin/64/psql | grep append_history
[1744]  |          4296745248|                   0|FUNC |GLOB |0    |UNDEF
|append_history
[1511]  |          4295420712|                 112|FUNC |GLOB |0    |14
|pg_append_history

Previously, I used 15.6, which only uses pg_append_history and doesn't use
append_history.

I also see:
grep -n append_history postgresql-15.8/src/bin/psql/*
postgresql-15.8/src/bin/psql/input.c:114:pg_append_history(const char *s,
PQExpBuffer history_buf)
postgresql-15.8/src/bin/psql/input.c:133: * pg_append_history before we'll
do anything.
postgresql-15.8/src/bin/psql/input.c:453:                       /*
append_history fails if file doesn't already exist :-( */
postgresql-15.8/src/bin/psql/input.c:462:                       errnum =
append_history(nlines, fname);
[...]

Isn't the a "pg_" missing on line 462?

Thank you.


PG Bug reporting form <noreply@postgresql.org> writes:
> When leaving a psql session via \q in 15.8 (which I built today under Oracle
> Solaris 11.4), I get:
>  ld.so.1: psql: fatal: relocation error: file
> /opt/postgres/15-pgdg/bin/64/psql: symbol append_history: referenced symbol
> not found
> Killed

Hmmm...

> Isn't the a "pg_" missing on line 462?

No.  That's intending to call the readline function append_history.
That call has been there since 2009.  I'm not sure what changed
between your 15.6 and 15.8 builds, but that wasn't it.

However, that call is only compiled if HAVE_APPEND_HISTORY is
defined, which indicates that configure successfully probed
for existence of the function.  Maybe you need to take a closer
look at what configure did?

            regards, tom lane



Re: BUG #18581: psql symbol append_history not found when quitting

From
"Rainer J.H. Brandt"
Date:
Tom Lane writes:
> PG Bug reporting form <noreply@postgresql.org> writes:
> > When leaving a psql session via \q in 15.8 (which I built today under Oracle
> > Solaris 11.4), I get:
> >  ld.so.1: psql: fatal: relocation error: file
> > /opt/postgres/15-pgdg/bin/64/psql: symbol append_history: referenced symbol
> > not found
> > Killed
> 
> Hmmm...
> 
> > Isn't the a "pg_" missing on line 462?
> 
> No.  That's intending to call the readline function append_history.
> That call has been there since 2009.  I'm not sure what changed
> between your 15.6 and 15.8 builds, but that wasn't it.
You're right.  The error was mine.

I overlooked that the build machine had a newer libedit library than
the machine on which I tried to use psql.  The newer libedit defines
append_history, and so the build process used it, but the older libedit
doesn't define it.

Sorry for the noise.
Thanks, Rainer