Bug #10218 | Command line recall rolls into Segmentation Fault(coredump) | ||
---|---|---|---|
Submitted: | 27 Apr 2005 21:52 | Modified: | 10 Jul 2007 22:03 |
Reporter: | Vito Munoz | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: Command-line Clients | Severity: | S2 (Serious) |
Version: | 4.1.16-pro, 5.0.30-cluster | OS: | Solaris (Solaris 8, 10) |
Assigned to: | Magnus Blåudd | CPU Architecture: | Any |
Tags: | bfsm_2007_04_19, bfsm_2007_05_31, libedit |
[27 Apr 2005 21:52]
Vito Munoz
[4 May 2005 19:46]
Hartmut Holzgraefe
On what CPU architecture does this happen?
[5 May 2005 23:16]
Vito Munoz
Sparc
[9 May 2005 19:52]
Vito Munoz
mysql-pro-4.1.11-sun-solaris2.10-sparc-64b
[9 Jun 2005 23:00]
Bugs System
No feedback was provided for this bug for over a month, so it is being suspended automatically. If you are able to provide the information that was originally requested, please do so and change the status of the bug back to "Open".
[15 Jun 2005 17:49]
Vito Munoz
I added the Platform some time ago. This was on Sun Sparc.
[28 Jul 2005 15:14]
Valeriy Kravchuk
Thank you for your bug report. What distribution did you use (pkg or tar.gz)? Please, try the latest (4.1.13 or 5.0.10). I was unable to reproduce this core dump on Solaris 9 on our SPARC with 5.0.10-beta build from sources (tar.gz): bash-2.05$ uname -a SunOS sunfire280 5.9 Generic_118558-09 sun4u sparc SUNW,Sun-Fire-280R bash-2.05$ bin/mysql -uroot Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 3 to server version: 5.0.10-beta Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> status -------------- bin/mysql Ver 14.12 Distrib 5.0.10-beta, for sun-solaris2.9 (sparc) using Edit Line wrapper Connection id: 3 Current database: Current user: root@localhost SSL: Not in use Current pager: stdout Using outfile: '' Using delimiter: ; Server version: 5.0.10-beta Protocol version: 10 Connection: Localhost via UNIX socket Server characterset: latin1 Db characterset: latin1 Client characterset: latin1 Conn. characterset: latin1 UNIX socket: /tmp/mysql.sock Uptime: 35 min 30 sec Threads: 1 Questions: 33 Slow queries: 0 Opens: 0 Flush tables: 1 Open tables: 18 Queries per second avg: 0.015 -------------- mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | test | +--------------------+ 3 rows in set (0.01 sec) Then I hit arrow up and Enter: mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | test | +--------------------+ 3 rows in set (0.01 sec) Then, once more arrow up and Enter: mysql> status -------------- bin/mysql Ver 14.12 Distrib 5.0.10-beta, for sun-solaris2.9 (sparc) using Edit Line wrapper Connection id: 3 Current database: Current user: root@localhost SSL: Not in use Current pager: stdout Using outfile: '' Using delimiter: ; Server version: 5.0.10-beta Protocol version: 10 Connection: Localhost via UNIX socket Server characterset: latin1 Db characterset: latin1 Client characterset: latin1 Conn. characterset: latin1 UNIX socket: /tmp/mysql.sock Uptime: 36 min 26 sec Threads: 1 Questions: 37 Slow queries: 0 Opens: 0 Flush tables: 1 Open tables: 18 Queries per second avg: 0.017
[28 Aug 2005 23:00]
Bugs System
No feedback was provided for this bug for over a month, so it is being suspended automatically. If you are able to provide the information that was originally requested, please do so and change the status of the bug back to "Open".
[14 Jan 2006 8:00]
Valeriy Kravchuk
Vito, Can you, send the output of "ldd mysql" run from your shell prompt? Also, please send the output of "SHOW VARIABLES LIKE 'version%'" run from the MySQL client.
[22 Jan 2006 2:01]
Kolbe Kegel
Install a 64-bit non-GPL MySQL build on a 64-bit Sparc Solaris system. Start the server, and connect to it using the mysql client. Issue a statement to the server Press the up arrow to review the previous statement Issue the statement again Press the up arrow twice to review the original statement This will cause a segfault kkegel@sunfire100b mysql-pro-4.1.16-sun-solaris2.8-sparc-64bit $ ./bin/mysql --socket=./data/mysql.sock Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 to server version: 4.1.16-pro Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql 4.1.16-pro (root) "test"> show databases; +----------+ | Database | +----------+ | mysql | | test | +----------+ 2 rows in set (0.01 sec) mysql 4.1.16-pro (root) "test"> show databases; +----------+ | Database | +----------+ | mysql | | test | +----------+ 2 rows in set (0.00 sec) mysql 4.1.16-pro (root) "test"> show databases;Segmentation Fault (core dumped)
[14 Feb 2006 23:56]
JOrdan L
I'm getting the exact same error on a CentOS release 3.6 (Final) with a static binary install from the mysql website. root@sj3d22 rsct_4]# mysqld -V mysqld Ver 5.0.18-standard-log for pc-linux-gnu on i686 (MySQL Community Edition - Standard (GPL)) root@sj3d22 rsct_4]# mysql -V mysql Ver 14.12 Distrib 5.0.18, for pc-linux-gnu (i686) using readline 5.0 [root@sj3d22 rsct_4]# uname -a Linux sj3d22 2.4.21-37.ELsmp #1 SMP Wed Sep 28 14:05:46 EDT 2005 i686 i686 i386 GNU/Linux [root@sj3d22 rsct_4]# cat /proc/cpuinfo | grep 'model name' model name : Intel(R) Pentium(R) 4 CPU 3.00GHz [root@sj3d22 rsct_4]# ldd /usr/local/mysql/bin/mysqld not a dynamic executable [root@sj3d22 rsct_4]# ldd /usr/local/mysql/bin/mysql not a dynamic executable mysql> SHOW VARIABLES LIKE 'version%'; +-------------------------+------------------------------------------+ | Variable_name | Value | +-------------------------+------------------------------------------+ | version | 5.0.18-standard-log | | version_comment | MySQL Community Edition - Standard (GPL) | | version_compile_machine | i686 | | version_compile_os | pc-linux-gnu | +-------------------------+------------------------------------------+ 4 rows in set (0.00 sec) Let me know if you've had any progress on this.
[14 Feb 2006 23:59]
JOrdan L
I would also like to say that we've installed many other installs of mysql (even on centOS boxes) and never had this problem. I have a feeling this will be a hard bug to duplicate.
[5 Jul 2006 14:45]
Mark Round
Hi, We're having the exact same problem, but have a little more information to add. Hardware : Sun Ultra 20 (Opteron) OS : SunOS 5.10 Generic_118844-26 i86pc i386 i86pc MySQL distro : 4.1.20, built by us from source using Sun Studio 11. We have discovered that a 64-bit client dumps core when using command recall, but a 32-bit client works fine. This is connecting to a local 64-bit server. The stack from the core file is : core './core' of 21538: mysql -uroot -p fffffd7fff3587b2 tputs () + 22 000000000041f272 term_move_to_char () + 122 000000000041dcc3 re_update_line () + 4f3 000000000041d501 re_refresh () + 191 000000000041cfdf el_gets () + 29f 00000000004188c8 readline () + 108 0000000000410af6 __1cKread_lines6Fb_i_ () + d6 000000000040fe25 main () + 495 000000000040f7dc ???????? () And the ldd information is as follows : libcurses.so.1 => /lib/64/libcurses.so.1 libmysqlclient.so.14 => /usr/local/mysql/lib/mysql/amd64/libmysqlclient.so.14 librt.so.1 => /lib/64/librt.so.1 libgen.so.1 => /lib/64/libgen.so.1 libsocket.so.1 => /lib/64/libsocket.so.1 libnsl.so.1 => /lib/64/libnsl.so.1 libm.so.2 => /lib/64/libm.so.2 libz.so.1 => /usr/lib/64/libz.so.1 libCstd.so.1 => /usr/lib/64/libCstd.so.1 libCrun.so.1 => /usr/lib/64/libCrun.so.1 libthread.so.1 => /lib/64/libthread.so.1 libc.so.1 => /lib/64/libc.so.1 libaio.so.1 => /lib/64/libaio.so.1 libmd5.so.1 => /lib/64/libmd5.so.1 libmp.so.2 => /lib/64/libmp.so.2 libscf.so.1 => /lib/64/libscf.so.1 libdoor.so.1 => /lib/64/libdoor.so.1 libuutil.so.1 => /lib/64/libuutil.so.1 The 64-bit binaries were compiled using the defaults, with the following environment : CC=/opt/SUNWspro/bin/cc CFLAGS="-xtarget=opteron -xarch=amd64" CXX=/opt/SUNWspro/bin/CC CXXFLAGS="-xtarget=opteron -xarch=amd64" LDFLAGS="-xtarget=opteron -xarch=amd64 -L/usr/local/mysql/lib/mysql -R/usr/local/mysql/lib/mysql/amd64" CCAS="/usr/sfw/bin/gas" If there is any other output you would like, or any other tests I can run, please let me know.
[6 Nov 2006 23:20]
Johan Andersson
What is the progress on this one? The same problem exists on 5.0.2x on Solaris9. -johan
[20 May 2007 21:58]
Magnus Blåudd
Unfortunately I get exactly the same crash with the examples/test program supplied with "libedit-20070302-2.10" - when configured to use termcap which the configure provided with that package does not look for by default. Core was generated by `/home/msvensson/mysql/bug10218/libedit-20070302-2.10/examples/.libs/lt-test'. Program terminated with signal 11, Segmentation fault. #0 0x0000003b26c011d6 in tputs () from /lib64/libtermcap.so.2 (gdb) where #0 0x0000003b26c011d6 in tputs () from /lib64/libtermcap.so.2 #1 0x00002aaaaaac56ce in term_move_to_char (el=0x6021b0, where=6) at term.c:614 #2 0x00002aaaaaac190b in re_refresh (el=0x6021b0) at refresh.c:314 #3 0x00002aaaaaac10c2 in el_gets (el=0x6021b0, nread=0x7fff73534a04) at read.c:560 #4 0x0000000000401653 in main (argc=1, argv=0x7fff73534b28) at test.c:163
[21 May 2007 10:03]
Magnus Blåudd
It appears libedit calls the function 'tgoto' from termcap library. It's supposed to return a pointer to a string that when "put" will move the cursor to the selected posistion. Unfortunately the pointer returned by tgoto is not adressable. term.c>> protected void term_move_to_char(EditLine *el, int where) { <snip> del = where - el->el_cursor.h; if ((del < -4 || del > 4) && GoodStr(T_ch)) /* go there directly */ (void) tputs(tgoto(Str(T_ch), where, where), where, term__putc); ^^^^^^^^^^^^^^ will return illegal pointer that tputs uses << While debugging the 'tgoto' function it looks like the generated string is valid, but it's generated in a static buffer located in tparam.c "static char tgoto_buf[50];" and maybe that cuases this problem. It appears like it shoud be possible to use tparam instead of tgoto which allows a buffer to be supplied by the calling application.
[21 May 2007 11:10]
Magnus Blåudd
It seems like the problem is that we include curses.h or ncurses.h when we compile the program and then link with libtermcap.
[4 Jun 2007 14:42]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/28059 ChangeSet@1.2645, 2007-06-04 16:42:42+02:00, msvensson@pilot.(none) +2 -0 Bug#10218 Command line recall rolls into Segmentation Fault(coredump)' - Declare 'tgoto' if not already declared in system header files.
[16 Jun 2007 4:50]
Bugs System
Pushed into 5.0.44
[16 Jun 2007 4:51]
Bugs System
Pushed into 5.1.20-beta
[18 Jun 2007 15:49]
Paul DuBois
Noted in 5.0.44, 5.1.20 changelogs. Resetting report to Patch Queued pending push into 4.1.x.
[10 Jul 2007 13:29]
Bugs System
Pushed into 4.1.24
[10 Jul 2007 22:03]
Paul DuBois
Noted in 4.1.24 changelog.
[9 Nov 2007 13:35]
Janusz Batko
I have the same problem in 5.0.45-log (binary version). Every time I recall previous command (by up arrow) I get segmentation fault: mysql> \sSegmentation fault My Linux distro is Red Hat 9.0 - 2.4.26-ow1 #2 SMP i686 Glibc version is glibc-2.3.2-27.9.7 I did strace and here's result (ending lines): open("/lib/ld-linux.so.2", O_RDONLY) = 4 read(4, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0 \f\0\000"..., 1024) = 1 024 brk(0x82d5000) = 0x82d5000 fstat64(4, {st_mode=S_IFREG|0755, st_size=106400, ...}) = 0 old_mmap(NULL, 87796, PROT_READ|PROT_EXEC, MAP_PRIVATE, 4, 0) = 0x15e000 mprotect(0x173000, 1780, PROT_NONE) = 0 old_mmap(0x173000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 4, 0x15000 ) = 0x173000 close(4) = 0 --- SIGSEGV (Segmentation fault) @ 0 (0) --- +++ killed by SIGSEGV +++
[9 Nov 2007 13:50]
Janusz Batko
OK, it seems that the reason why I got Segmentation fault lies in glibc. I downgraded glibc from glibc-2.3.2-27.9.7 to glibc-2.3.2-11.9 (which comes from RH 9.0 installation source while version 2.3.2-27.9.7 is an update for it) and now everything's fine. I can recall previous commands using up-arrow. But it's strange anyway why binary version of mysql client is so sensitive on glibc subversion.
[13 Nov 2007 7:54]
Magnus Blåudd
This bug only occurs on Solaris
[13 Nov 2007 7:54]
Magnus Blåudd
s/occurs/occured/ ;)