>Description:
InnoDB crashes when a ROLLBACK of multiple "LOAD DATA INFILE 'file'
REPLACE INTO 'table' commands.
mysqld will not startup again because InnoDB attempts the rollback
and crashes again.
>How-To-Repeat:
#create a data file (100,000 lines of 3 integers from 0 to 999999)
perl -e 'for($i=0; $i<100000; $i++){print "$i\t$i\t$i\n";}' > /tmp/data
# create a table:
create table speed1 (a int not null, b int, c int, primary key (a), index (b))
TYPE=INNODB
mysql> SET AUTOCOMMIT=0;
Query OK, 0 rows affected (0.01 sec)
mysql> LOAD DATA INFILE "/tmp/data.dat" REPLACE INTO TABLE speed1;
Query OK, 200000 rows affected (5.60 sec)
Records: 100000 Deleted: 100000 Skipped: 0 Warnings: 0
mysql> ROLLBACK;
Query OK, 0 rows affected (2.08 sec)
mysql> LOAD DATA INFILE "/tmp/data.dat" REPLACE INTO TABLE speed1;
Query OK, 200000 rows affected (5.59 sec)
Records: 100000 Deleted: 100000 Skipped: 0 Warnings: 0
mysql> LOAD DATA INFILE "/tmp/data.dat" REPLACE INTO TABLE speed1;
Query OK, 200000 rows affected (5.92 sec)
Records: 100000 Deleted: 100000 Skipped: 0 Warnings: 0
mysql> ROLLBACK;
ERROR 2013: Lost connection to MySQL server during query
mysql>
Running mysqld in gdb results in the following:
(gdb) run --basedir=/usr/local/mysql --datadir=/var/lib/mysql --user=root
--pid-Starting program: /usr/local/mysql/libexec/mysqld --basedir=/usr/local/mysql
--dInnoDB: Database was not shut down normally.
InnoDB: Starting recovery from log files...
InnoDB: Starting log scan based on checkpoint at
InnoDB: log sequence number 0 269517328
InnoDB: Doing recovery: scanned up to log sequence number 0 269582848
InnoDB: Doing recovery: scanned up to log sequence number 0 269648384
InnoDB: Doing recovery: scanned up to log sequence number 0 269713920
InnoDB: Doing recovery: scanned up to log sequence number 0 269779456
InnoDB: Doing recovery: scanned up to log sequence number 0 269844992
InnoDB: Doing recovery: scanned up to log sequence number 0 269910528
.
.
.
InnoDB: Doing recovery: scanned up to log sequence number 0 280330752
InnoDB: Doing recovery: scanned up to log sequence number 0 280396288
InnoDB: Doing recovery: scanned up to log sequence number 0 280424053
Innobase: 1 uncommitted transaction(s) which must be rolled back
Innobase: Starting rollback of uncommitted transactions
Innobase: Rolling back trx no 194872
Program received signal SIGSEGV, Segmentation fault.
0x811c9f8 in trx_undo_rec_release ()
(gdb) bt
#0 0x811c9f8 in trx_undo_rec_release ()
#1 0x80fc97e in row_undo_mod ()
#2 0x80f74a5 in row_undo ()
#3 0x80f75b1 in row_undo_step ()
#4 0x80de1e4 in que_run_threads ()
#5 0x811b9ee in trx_rollback_all_without_sess ()
#6 0x813ad9b in recv_recovery_from_checkpoint_finish ()
#7 0x80dca09 in innobase_start_or_create_for_mysql ()
#8 0x80b9d50 in innobase_init ()
#9 0x80b44d4 in ha_init ()
#10 0x806f8b2 in main ()
#11 0x81cbd15 in __libc_start_main (main=0x806f000 <main>, argc=6, ubp_av=0xbffffa54,
init=0x80480b4 <_init>,
fini=0x8239d00 <_fini>, rtld_fini=0, stack_end=0xbffffa4c) at
../sysdeps/generic/libc-start.c:129
>Fix:
None known.
>Submitter-Id: <submitter ID>
>Originator: Jeff Shelman
>Organization:
>MySQL support: none
>Synopsis: mysqld (InnoDB) crashes on ROLLBACK
>Severity: critical
>Priority: high
>Category: mysql
>Class: sw-bug
>Release: mysql-3.23.38 (Source distribution)
>Environment:
System: Linux shado 2.4.3-20mdk #1 Sun Apr 15 23:03:10 CEST 2001 i686 unknown
Architecture: i686
Some paths: /usr/bin/perl /usr/bin/make /usr/bin/gmake /usr/bin/gcc /usr/bin/cc
GCC: Reading specs from /usr/lib/gcc-lib/i586-mandrake-linux/2.96/specs
gcc version 2.96 20000731 (Linux-Mandrake 8.0 2.96-0.48mdk)
Compilation info: CC='gcc' CFLAGS='-O3 -mpentiumpro' CXX='gcc' CXXFLAGS='-O3
-mpentiumpro -felide-constructors -fno-exceptions -fno-rtti' LDFLAGS=''
LIBC:
lrwxrwxrwx 1 root root 13 May 1 20:19 /lib/libc.so.6 -> libc-2.2.2.so
-rwxr-xr-x 1 root root 1216268 Feb 21 03:38 /lib/libc-2.2.2.so
-rw-r--r-- 1 root root 26366908 Feb 21 03:31 /usr/lib/libc.a
-rw-r--r-- 1 root root 178 Feb 21 03:31 /usr/lib/libc.so
Configure command: ./configure --prefix=/usr/local/mysql --enable-assembler
--with-mysqld-ldflags=-all-static --with-innodb
---------------------------------------------------------------------
Before posting, please check:
http://www.mysql.com/manual.php (the manual)
http://lists.mysql.com/ (the list archive)
To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php