BUG #12344: libcurses issue with psql binary of Solaris package

Started by Egoitz Aurrekoetxeaover 11 years ago5 messagesbugs
Jump to latest
#1Egoitz Aurrekoetxea
egoitz@sarenet.es

The following bug has been logged on the website:

Bug reference: 12344
Logged by: Egoitz Aurrekoetxea
Email address: egoitz@sarenet.es
PostgreSQL version: 9.4.0
Operating system: Solaris 11.2 (5.11 11.2 i86pc i386 i86pc)
Description:

Good morning,

I'm giving a try to
https://ftp.postgresql.org/pub/binary/v9.4.0/solaris/solaris11/i386/postgresql-9.4.0-S11.i386-64.tar.bz2
under Solaris 11.2. All seems to be running fine although I have found an
issue running the psql binary. It generates a core if you hit for example
CTRL+A after writting an amount of text. I do paste here the test content
and the core in order to fixed...

pgsql@themachine:~$ /usr/postgres/9.4-pgdg/bin/psql
theconnectingdatabase
psql (9.4.0)
Type "help" for help.

theconnectingdatabase=#
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSegmentation Fault
(`core' generado)

(you write the aaaaas and later CTRL+A)

pgsql@themachine:~$
pgsql@themachine:~$
pgsql@themachine:~$
pgsql@themachine:~$ gdb /usr/postgres/9.4-pgdg/bin/psql core
GNU gdb (GDB) 7.6
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
<http://gnu.org/licenses/gpl.html&gt;
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show
copying"
and "show warranty" for details.
This GDB was configured as "i386-pc-solaris2.11".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/&gt;...
Reading symbols from /usr/postgres/9.4-pgdg/bin/psql...done.
[New LWP 1]
[New LWP 1]
[Thread debugging using libthread_db enabled]
[New Thread 1 (LWP 1)]
Core was generated by `/usr/postgres/9.4-pgdg/bin/psql
theconnectingdatabase'.
Program terminated with signal 11, Segmentation fault.
#0 0xffff80ffbd5636b1 in tputs () from /lib/64/libcurses.so.1
(gdb) bt
#0 0xffff80ffbd5636b1 in tputs () from /lib/64/libcurses.so.1
#1 0x00000000004612fb in term_move_to_char ()
#2 0x000000000045f366 in re_refresh_cursor ()
#3 0x000000000045e39f in el_gets ()
#4 0x00000000004561d0 in readline ()
#5 0x0000000000425f75 in gets_interactive ()
#6 0x0000000000426c0b in MainLoop ()
#7 0x000000000042bd89 in main ()
(gdb)

uname -ar
SunOS themachine 5.11 11.2 i86pc i386 i86pc

The server part seems to be running fine.

Thank you so much,
Best regards

--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Egoitz Aurrekoetxea (#1)
Re: BUG #12344: libcurses issue with psql binary of Solaris package

egoitz@sarenet.es writes:

I'm giving a try to
https://ftp.postgresql.org/pub/binary/v9.4.0/solaris/solaris11/i386/postgresql-9.4.0-S11.i386-64.tar.bz2
under Solaris 11.2. All seems to be running fine although I have found an
issue running the psql binary. It generates a core if you hit for example
CTRL+A after writting an amount of text. I do paste here the test content
and the core in order to fixed...

This is evidently a bug in libreadline or libedit (whichever you're
using), and almost certainly has nothing to do with psql proper.

The mention of el_gets() in the stack trace makes me suspect that it's
libedit, which is not terribly surprising because frankly we've seen a
darn lot of nasty bugs in that library. They do fix 'em, so you could try
getting a newer version of libedit. Or you could get GNU readline and
rebuild against that. TBH I'd recommend the latter solution.

regards, tom lane

--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

#3Egoitz Aurrekoetxea
egoitz@sarenet.es
In reply to: Tom Lane (#2)
Re: BUG #12344: libcurses issue with psql binary of Solaris package

Good afternoon,

Thank you so much for the fast response. If I let it that way, without rebuilding and knowing the issue in one of the libraries mentioned
by you, could this just bug end by affecting the Postgresql server part in some way?.

Thank you so much,
Best regards,

Egoitz Aurrekoetxea
Departamento de sistemas
944 209 470
Parque Tecnológico. Edificio 103
48170 Zamudio (Bizkaia)
egoitz@sarenet.es <mailto:egoitz@sarenet.es>
www.sarenet.es <http://www.sarenet.es/&gt;
Antes de imprimir este correo electrónico piense si es necesario hacerlo.

Show quoted text

El 26/12/2014, a las 16:39, Tom Lane <tgl@sss.pgh.pa.us> escribió:

egoitz@sarenet.es writes:

I'm giving a try to
https://ftp.postgresql.org/pub/binary/v9.4.0/solaris/solaris11/i386/postgresql-9.4.0-S11.i386-64.tar.bz2
under Solaris 11.2. All seems to be running fine although I have found an
issue running the psql binary. It generates a core if you hit for example
CTRL+A after writting an amount of text. I do paste here the test content
and the core in order to fixed...

This is evidently a bug in libreadline or libedit (whichever you're
using), and almost certainly has nothing to do with psql proper.

The mention of el_gets() in the stack trace makes me suspect that it's
libedit, which is not terribly surprising because frankly we've seen a
darn lot of nasty bugs in that library. They do fix 'em, so you could try
getting a newer version of libedit. Or you could get GNU readline and
rebuild against that. TBH I'd recommend the latter solution.

regards, tom lane

#4Egoitz Aurrekoetxea
egoitz@sarenet.es
In reply to: Egoitz Aurrekoetxea (#3)
Re: BUG #12344: libcurses issue with psql binary of Solaris package

Hello!,

And by the way… have done some checks….

Have just build Postgresql 9.4.0 in Solaris 11.2 with this flags….

export CC='/usr/gcc/4.8/bin/gcc -m64'
export CXX='/usr/gcc/4.8/bin/c++ -m64'
export LDFLAGS='-L/usr/local/lib -R/usr/local/lib'
export CPPFLAGS='-I/usr/local/include'

later

./configure --prefix=/tmp/postgresql-prueba
gmake

Just for ensuring was a bug in some Solaris library…… and not a versioning issue (the package is compiled against or whatever….) or whatever…

/tmp/prueba-comp-postgres/postgresql-9.4.0/src/bin/psql# ./psql
ld.so.1: psql: fatal: libpq.so.5: open failed: No such file or directory
Killed

It has not build libpq which I don’t really know why not… but like was just for the testing purpose…. have copied the Postgresql binary package for Solaris libpq.so* files….

/tmp/prueba-comp-postgres/postgresql-9.4.0/src/bin/psql# cp /usr/postgres/9.4-pgdg/lib/libpq.so* .

Later…. have done a :

export LD_LIBRARY_PATH='/tmp/prueba-comp-postgres/postgresql-9.4.0/src/bin/psql'
And voilà :
/tmp/prueba-comp-postgres/postgresql-9.4.0/src/bin/psql# ./psql
psql: FATAL: role "root" does not exist
root@themachine:/tmp/prueba-comp-postgres/postgresql-9.4.0/src/bin/psql# ./psql -U thedatabase -h localhost
psql (9.4.0)
Type "help" for help.

thedatabase=# aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
thedatabase-#
thedatabase-#
thedatabase-# ;
NOTICE: identifier "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" will be truncated to "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
ERROR: syntax error at or near "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
LINE 1: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...
^
thedatabase=# select * from pg_stat_activity;
thedatabase=# aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
thedatabase-# ;
NOTICE: identifier "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" will be truncated to "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
ERROR: syntax error at or near "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
LINE 1: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...
^
thedatabase=#
thedatabase=#
thedatabase=#
thedatabase=# \q
root@themachine:/tmp/prueba-comp-postgres/postgresql-9.4.0/src/bin/psql#

It’s not being broken now…… So perhaps is that it was build against for instance Solaris 11 not Solaris 11.2 and some issue exist with that linkage…. done with a previous version…..

If you tell me how… I wouldn’t mind creating it for Solaris 11.2 again the Postgresql package and donating it to you….
What is the proper way of building in Solaris?? With libpq and all components?

Thank you so much,
Best regards,

Egoitz Aurrekoetxea
Departamento de sistemas
944 209 470
Parque Tecnológico. Edificio 103
48170 Zamudio (Bizkaia)
egoitz@sarenet.es <mailto:egoitz@sarenet.es>
www.sarenet.es <http://www.sarenet.es/&gt;
Antes de imprimir este correo electrónico piense si es necesario hacerlo.

Show quoted text

El 26/12/2014, a las 17:07, Egoitz Aurrekoetxea <egoitz@sarenet.es> escribió:

Good afternoon,

Thank you so much for the fast response. If I let it that way, without rebuilding and knowing the issue in one of the libraries mentioned
by you, could this just bug end by affecting the Postgresql server part in some way?.

Thank you so much,
Best regards,

Egoitz Aurrekoetxea
Departamento de sistemas
944 209 470
Parque Tecnológico. Edificio 103
48170 Zamudio (Bizkaia)
egoitz@sarenet.es <mailto:egoitz@sarenet.es>
www.sarenet.es <http://www.sarenet.es/&gt;
Antes de imprimir este correo electrónico piense si es necesario hacerlo.

El 26/12/2014, a las 16:39, Tom Lane <tgl@sss.pgh.pa.us <mailto:tgl@sss.pgh.pa.us>> escribió:

egoitz@sarenet.es <mailto:egoitz@sarenet.es> writes:

I'm giving a try to
https://ftp.postgresql.org/pub/binary/v9.4.0/solaris/solaris11/i386/postgresql-9.4.0-S11.i386-64.tar.bz2 <https://ftp.postgresql.org/pub/binary/v9.4.0/solaris/solaris11/i386/postgresql-9.4.0-S11.i386-64.tar.bz2&gt;
under Solaris 11.2. All seems to be running fine although I have found an
issue running the psql binary. It generates a core if you hit for example
CTRL+A after writting an amount of text. I do paste here the test content
and the core in order to fixed...

This is evidently a bug in libreadline or libedit (whichever you're
using), and almost certainly has nothing to do with psql proper.

The mention of el_gets() in the stack trace makes me suspect that it's
libedit, which is not terribly surprising because frankly we've seen a
darn lot of nasty bugs in that library. They do fix 'em, so you could try
getting a newer version of libedit. Or you could get GNU readline and
rebuild against that. TBH I'd recommend the latter solution.

regards, tom lane

#5Egoitz Aurrekoetxea
egoitz@sarenet.es
In reply to: Egoitz Aurrekoetxea (#4)
Re: BUG #12344: libcurses issue with psql binary of Solaris package

Good afternoon,

Ok, so….

Have been debugging all this issue and have seen the following details and assumptions :

- Binary package for Solaris downloadable in http://www.postgresql.org/ftp/binary/v9.4.0/solaris/solaris11/i386/ <http://www.postgresql.org/ftp/binary/v9.4.0/solaris/solaris11/i386/&gt; will probably be for Solaris 11.0 not 11.1 or 11.2… unless it seems to be built there…
- It has been build with Solaris Studio 11 compilers which don’t really know for Solaris 11 but for Solaris 11.2 are slightly old…. apart… why this compilers were used instead of GCC installable with pkg install?
- Have found in the config (pg_config output) too some flag that seem to be only valid for Sparc arch…

And some other thing I did not remember at present instant but I believe saw….

Well like I needed to use Postgresql on Solaris… I rebuilt it… I did use all systems default libraries… I didn’t install any kind of Sunfreeware or whatever library….

So I have build successfully (unless until now, have not seen any issue with the binaries) in Solaris 11.2 concretely the OS is:

uname -ar
SunOS themachine 5.11 11.2 i86pc i386 i86pc

cat /etc/release
Oracle Solaris 11.2 X86
Copyright (c) 1983, 2014, Oracle and/or its affiliates. All rights reserved.
Assembled 23 June 2014

with just doing :

pkg install gcc-c++-48 gcc-c-48

export CC='/usr/gcc/4.8/bin/gcc -m64'
export CXX='/usr/gcc/4.8/bin/c++ -m64'
export LDFLAGS='-L/usr/local/lib -R/usr/local/lib'
export CPPFLAGS='-I/usr/local/include'
export CFLAGS='-O3'
export PATH=$PATH':/usr/gnu/bin'

./configure --prefix=/opt/postgres94 --enable-nls --with-system-tzdata=/usr/share/lib/zoneinfo --with-tclconfig=/usr/lib --with-python --with-tcl --with-pam --with-libedit-preferred --with-libxml --with-libxslt --enable-thread-safety --enable-integer-datetimes
gmake
gmake install

Perhaps it would be better (instead of providing binaries) to include a script in the sources tar.gz that if you were in Solaris (I say in Solaris, because in FreeBSD for example, which is the main OS I do use, you build it easilly from ports, and in other systems like Linux
you normally have prebuilt) which checks the env, the packages installed and so… or just directly, to say to everybody… "For installing Postgresql in Solaris, you need to have a Virgin Solaris installation and just run later the -build-on-solaris.sh-" or whatever script in order
to start everybody in the same beginning point and later to run a script which for example does this same I have wrote before. I would say this is better than having, say old binaries or…. and like building, let’s say, enforces you to have all required system libraries if you
want the code to be built if you say everyone to start at the same beginning point I think could be perhaps easier to offer an easy way to install Postgresql in Solaris.

Thank you very much for you’re help and hope this helps too,
Best regards,

Egoitz Aurrekoetxea
Departamento de sistemas
944 209 470
Parque Tecnológico. Edificio 103
48170 Zamudio (Bizkaia)
egoitz@sarenet.es <mailto:egoitz@sarenet.es>
www.sarenet.es <http://www.sarenet.es/&gt;
Antes de imprimir este correo electrónico piense si es necesario hacerlo.

Show quoted text

El 26/12/2014, a las 17:55, pgsql-bugs-owner@postgresql.org escribió:

Your message to pgsql-bugs has been delayed, and requires the approval
of the moderators, for the following reason(s):

The author (Egoitz Aurrekoetxea <egoitz@sarenet.es>)
is not a member of any of the restrict_post groups.

If you do not wish the message to be posted, or have other concerns,
please send a message to the list owners at the following address:
pgsql-bugs-owner@postgresql.org

Asunto: Re: [BUGS] BUG #12344: libcurses issue with psql binary of Solaris package
De: Egoitz Aurrekoetxea <egoitz@sarenet.es>
Fecha: 26 de diciembre de 2014, 17:55:40 CET
Cc: pgsql-bugs@postgresql.org
Para: Tom Lane <tgl@sss.pgh.pa.us>

Hello!,

And by the way… have done some checks….

Have just build Postgresql 9.4.0 in Solaris 11.2 with this flags….

export CC='/usr/gcc/4.8/bin/gcc -m64'
export CXX='/usr/gcc/4.8/bin/c++ -m64'
export LDFLAGS='-L/usr/local/lib -R/usr/local/lib'
export CPPFLAGS='-I/usr/local/include'

later

./configure --prefix=/tmp/postgresql-prueba
gmake

Just for ensuring was a bug in some Solaris library…… and not a versioning issue (the package is compiled against or whatever….) or whatever…

/tmp/prueba-comp-postgres/postgresql-9.4.0/src/bin/psql# ./psql
ld.so.1: psql: fatal: libpq.so.5: open failed: No such file or directory
Killed

It has not build libpq which I don’t really know why not… but like was just for the testing purpose…. have copied the Postgresql binary package for Solaris libpq.so* files….

/tmp/prueba-comp-postgres/postgresql-9.4.0/src/bin/psql# cp /usr/postgres/9.4-pgdg/lib/libpq.so* .

Later…. have done a :

export LD_LIBRARY_PATH='/tmp/prueba-comp-postgres/postgresql-9.4.0/src/bin/psql'
And voilà :
/tmp/prueba-comp-postgres/postgresql-9.4.0/src/bin/psql# ./psql
psql: FATAL: role "root" does not exist
root@themachine:/tmp/prueba-comp-postgres/postgresql-9.4.0/src/bin/psql# ./psql -U thedatabase -h localhost
psql (9.4.0)
Type "help" for help.

thedatabase=# aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
thedatabase-#
thedatabase-#
thedatabase-# ;
NOTICE: identifier "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" will be truncated to "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
ERROR: syntax error at or near "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
LINE 1: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...
^
thedatabase=# select * from pg_stat_activity;
thedatabase=# aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
thedatabase-# ;
NOTICE: identifier "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" will be truncated to "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
ERROR: syntax error at or near "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
LINE 1: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...
^
thedatabase=#
thedatabase=#
thedatabase=#
thedatabase=# \q
root@themachine:/tmp/prueba-comp-postgres/postgresql-9.4.0/src/bin/psql#

It’s not being broken now…… So perhaps is that it was build against for instance Solaris 11 not Solaris 11.2 and some issue exist with that linkage…. done with a previous version…..

If you tell me how… I wouldn’t mind creating it for Solaris 11.2 again the Postgresql package and donating it to you….
What is the proper way of building in Solaris?? With libpq and all components?

Thank you so much,
Best regards,

Egoitz Aurrekoetxea
Departamento de sistemas
944 209 470
Parque Tecnológico. Edificio 103
48170 Zamudio (Bizkaia)
egoitz@sarenet.es <mailto:egoitz@sarenet.es>
www.sarenet.es <http://www.sarenet.es/&gt;
Antes de imprimir este correo electrónico piense si es necesario hacerlo.

El 26/12/2014, a las 17:07, Egoitz Aurrekoetxea <egoitz@sarenet.es <mailto:egoitz@sarenet.es>> escribió:

Good afternoon,

Thank you so much for the fast response. If I let it that way, without rebuilding and knowing the issue in one of the libraries mentioned
by you, could this just bug end by affecting the Postgresql server part in some way?.

Thank you so much,
Best regards,

Egoitz Aurrekoetxea
Departamento de sistemas
944 209 470
Parque Tecnológico. Edificio 103
48170 Zamudio (Bizkaia)
egoitz@sarenet.es <mailto:egoitz@sarenet.es>
www.sarenet.es <http://www.sarenet.es/&gt;
Antes de imprimir este correo electrónico piense si es necesario hacerlo.

El 26/12/2014, a las 16:39, Tom Lane <tgl@sss.pgh.pa.us <mailto:tgl@sss.pgh.pa.us>> escribió:

egoitz@sarenet.es <mailto:egoitz@sarenet.es> writes:

I'm giving a try to
https://ftp.postgresql.org/pub/binary/v9.4.0/solaris/solaris11/i386/postgresql-9.4.0-S11.i386-64.tar.bz2 <https://ftp.postgresql.org/pub/binary/v9.4.0/solaris/solaris11/i386/postgresql-9.4.0-S11.i386-64.tar.bz2&gt;
under Solaris 11.2. All seems to be running fine although I have found an
issue running the psql binary. It generates a core if you hit for example
CTRL+A after writting an amount of text. I do paste here the test content
and the core in order to fixed...

This is evidently a bug in libreadline or libedit (whichever you're
using), and almost certainly has nothing to do with psql proper.

The mention of el_gets() in the stack trace makes me suspect that it's
libedit, which is not terribly surprising because frankly we've seen a
darn lot of nasty bugs in that library. They do fix 'em, so you could try
getting a newer version of libedit. Or you could get GNU readline and
rebuild against that. TBH I'd recommend the latter solution.

regards, tom lane