Hi!

It was the same rollback bug which caused also crash in the case
you ran out of tablespace. I had overlooked that the same bug causes
problems also if you rollback a transaction which has updated the
same row more than once.

You can download the fixed /mysql/innobase/row/row0undo.c from
my website (look at May 14, 2001):

http://www.innodb.com/bugfixes.html

or you can just edit the file row0undo.c and remove the call
to trx_undo_rec_release from line 174.

Regards,

Heikki Tuuri
Innobase Oy

>>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

Reply via email to