Bug #14234 Segfault using INSERT DELAYED
Submitted: 23 Oct 2005 5:37 Modified: 23 Oct 2005 10:52
Reporter: Arjen Lentz Email Updates:
Status: Can't repeat Impact on me:
None 
Category:MySQL Server Severity:S2 (Serious)
Version:5.0.13 OS:Linux (SuSE Linux 9.0)
Assigned to: CPU Architecture:Any

[23 Oct 2005 5:37] Arjen Lentz
Description:
Using MySQL-server-5.0.13-0.glibc23 RPM from mysql.com

mysqld got signal 11;

Stack trace:

0x8154e90 handle_segfault + 416
0x40060bb1 _end + 934303489
0x4018d64c _end + 935535004
0x80e97a7 _ZN11Item_string13save_in_fieldEP5Fieldb + 87
0x818f7e7 _Z11fill_recordP3THDPP5FieldR4ListI4ItemEb + 87
0x818f855 _Z36fill_record_n_invoke_before_triggersP3THDPP5FieldR4ListI4ItemEbP19
Table_triggers_list14trg_event_type + 53
0x81b2208 _Z12mysql_insertP3THDP13st_table_listR4ListI4ItemERS3_IS5_ES6_S6_15enu
m_duplicatesb + 2904
0x816b872 _Z21mysql_execute_commandP3THD + 8194
0x8170a80 _Z11mysql_parseP3THDPcj + 304
0x81681eb _Z16dispatch_command19enum_server_commandP3THDPcj + 1131
0x8167d2d _Z10do_commandP3THD + 141
0x816722b handle_one_connection + 555
0x4005a0f0 _end + 934276160
0x401f0c77 _end + 935942087

Query:

thd->query at 0x8a4f5d8 = INSERT DELAYED INTO logclients VALUES (762,'127.0.0.1','Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.5) Gecko/20041109 Firefox/1.0','http://intranet/';)

How to repeat:

CREATE TABLE logclients (
  count_ref int(10) unsigned NOT NULL default '0',
  address varchar(255) NOT NULL default '',
  agent varchar(255) NOT NULL default '',
  referer varchar(255) NOT NULL default '',
  PRIMARY KEY  (count_ref)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

The following query produces pretty much a 100% hitrate (i.e. mysqld crashes):

INSERT DELAYED INTO logclients VALUES (762,'127.0.0.1','Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.5) Gecko/20041109 Firefox/1.0','http://intranet/';);

If the query is run without the DELAYED option, it never crashes.
[23 Oct 2005 10:13] Valeriy Kravchuk
Can't repeat on 5.0.13-rc-nt:

mysql> CREATE TABLE logclients (
    ->   count_ref int(10) unsigned NOT NULL default '0',
    ->   address varchar(255) NOT NULL default '',
    ->   agent varchar(255) NOT NULL default '',
    ->   referer varchar(255) NOT NULL default '',
    ->   PRIMARY KEY  (count_ref)
    -> ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Query OK, 0 rows affected (0.14 sec)

mysql> INSERT DELAYED INTO logclients VALUES (762,'127.0.0.1','Mozilla/5.0 (X11; U;
    '> Linux i686; en-US; rv:1.7.5) Gecko/20041109 Firefox/1.0','http://intranet/';);
Query OK, 1 row affected (0.03 sec)

mysql> select version();
+--------------+
| version()    |
+--------------+
| 5.0.13-rc-nt |
+--------------+
1 row in set (0.03 sec)

and on 5.0.15-BK (ChangeSet@1.2022, 2005-10-20 11:12:34+05:00, bar@mysql.com) on Linux:

mysql> CREATE TABLE logclients (
    ->    count_ref int(10) unsigned NOT NULL default '0',
    ->    address varchar(255) NOT NULL default '',
    ->   agent varchar(255) NOT NULL default '',
    ->   referer varchar(255) NOT NULL default '',
    ->   PRIMARY KEY  (count_ref)
    -> ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Query OK, 0 rows affected (0,06 sec)

mysql> INSERT DELAYED INTO logclients VALUES (762,'127.0.0.1','Mozilla/5.0 (X11; U;
    '> Linux i686; en-US; rv:1.7.5) Gecko/20041109 Firefox/1.0','http://intranet/';);
Query OK, 1 row affected (0,01 sec)

mysql> select version();
+-----------+
| version() |
+-----------+
| 5.0.15    |
+-----------+
1 row in set (0,00 sec)

mysql> exit
Bye
[openxs@Fedora 5.0]$ uname -a
Linux Fedora 2.4.22-1.2115.nptl #1 Wed Oct 29 15:42:51 EST 2003 i686 i686 i386 GNU/Linux

Let me make a final check with RPM...
[23 Oct 2005 10:52] Valeriy Kravchuk
Sorry, still can't repeat, even after performing rpm -i MySQL-server-5.0.13-0.glibc23.i386.rpm and then:

[root@Fedora tmp]# /home/openxs/dbs/5.0/bin/mysql -uroot --socket=/var/lib/mysql/mysql.sock
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 5.0.13-rc-standard

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> use test;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> CREATE TABLE logclients (
    ->   count_ref int(10) unsigned NOT NULL default '0',
    ->   address varchar(255) NOT NULL default '',
    ->    agent varchar(255) NOT NULL default '',
    ->    referer varchar(255) NOT NULL default '',
    ->   PRIMARY KEY  (count_ref)
    -> ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Query OK, 0 rows affected (0.01 sec)

mysql> INSERT DELAYED INTO logclients VALUES (762,'127.0.0.1','Mozilla/5.0 (X11; U;
    '> Linux i686; en-US; rv:1.7.5) Gecko/20041109 Firefox/1.0','http://intranet/';);
Query OK, 1 row affected (0.00 sec)

The client (mysql) was of version 5.0.15-BK, but the crash, if 100% repeatable, should not depend on that. The test was performed on Fedora Core 1, with glibc-2.3:

[root@Fedora tmp]# uname -a
Linux Fedora 2.4.22-1.2115.nptl #1 Wed Oct 29 15:42:51 EST 2003 i686 i686 i386 GNU/Linux
[root@Fedora tmp]# rpm -q glibc
glibc-2.3.2-101
[25 Oct 2005 1:06] Arjen Lentz
Re-tested with regular 5.0.13 (not glibc23), problem still there.
Re-tested with 5.0.15, problem disappeared.