Hi! A deadlock of threads is a bug. It is is not connected to transactions or multiversioning.
Is the problem repeatable in your computer? Can you compile a debug version of mysqld? Go to the source tree root directory /mysql/ and do: ./BUILD/compile-pentium-debug-max Then run the compiled /mysql/sql/mysqld inside gdb. When it hangs do: (gdb) info threads (gdb) thread 1 (gdb) bt full ... and so on for all threads. Send the output to me. You could also try an official MySQL binary you can download from www.mysql.com. Your build platform gcc-2.96 + Red Hat 7.0 is somewhat suspicious and might produce broken binaries. I tried to repeat the hang in my computer, but did not succeed. Can you send me what SHOW CREATE TABLE ticketlast; prints? Best regards, Heikki Tuuri Innobase Oy --- Order technical MySQL/InnoDB support at https://order.mysql.com/ See http://www.innodb.com for the online manual and latest news on InnoDB sql query ----- Original Message ----- From: <[EMAIL PROTECTED]> Newsgroups: mailing.database.mysql Sent: Monday, March 03, 2003 3:58 AM Subject: innodb deadlock leads to server crash > >Description: > A deadlock within innodb leads to a server crash. > > I have a large table which I need to update in-place. So one mysql > connection does a SELECT, and another updates the data. I thought > that, since innodb supports transactions and multiversioning, the > two should not block each other. > > Apparently, this is wrong and leads to a server crash. > > The relevant output from mysqld's server log is this: > ---------- > SEMAPHORES > ---------- > OS WAIT ARRAY INFO: reservation count 13947, signal count 13945 > --Thread 13326 has waited at btr0sea.c line 448 for 499.00 seconds the semaphore: > X-lock on RW-latch at 40172668 created in file btr0sea.c line 128 > a writer (thread id 13326) has reserved it in mode wait exclusive > number of readers 1, waiters flag 1 > Last time read locked in file btr0sea.c line 683 > Last time write locked in file btr0sea.c line 1117 > --Thread 7176 has waited at btr0sea.c line 863 for 490.00 seconds the semaphore: > S-lock on RW-latch at 40172668 created in file btr0sea.c line 128 > a writer (thread id 13326) has reserved it in mode wait exclusive > number of readers 1, waiters flag 1 > Last time read locked in file btr0sea.c line 683 > Last time write locked in file btr0sea.c line 1117 > Mutex spin waits 662, rounds 8840, OS waits 94 > RW-shared spins 31791, OS waits 13822; RW-excl spins 34, OS waits 31 > ------------ > TRANSACTIONS > ------------ > Trx id counter 0 2108142 > Purge done for trx's n:o < 0 2108136 undo n:o < 0 0 > Total number of lock structs in row lock hash table 0 > LIST OF TRANSACTIONS FOR EACH SESSION: > ---TRANSACTION 0 2107229, not started, OS thread id 10251 > MySQL thread id 28, query id 881 gemini.office.noris.de 10.2.0.132 updater > ---TRANSACTION 0 2107136, not started, OS thread id 9226 > MySQL thread id 23, query id 815 gemini.office.noris.de 10.2.0.132 updater > ---TRANSACTION 0 2108141, ACTIVE 499 sec, OS thread id 13326 starting index read > MySQL thread id 30, query id 1484 gemini.office.noris.de 10.2.0.132 updater preparing > select timestamp,seq,wann from ticketlast where ticket = '1823' and person = '3 > 406' > ---TRANSACTION 0 2108137, ACTIVE 507 sec, OS thread id 11276 > , holds adaptive hash latch > MySQL thread id 29, query id 1481 gemini.office.noris.de 10.2.0.132 updater Sending data > select timestamp,ticket,person from ticketlast where timestamp >= FROM_UNIXTIME (916760612) order by ticket,person > Trx read view will not see trx with id >= 0 2108138, sees < 0 2108138 > -------- > > >How-To-Repeat: > Create a table with suitably many records. > mysql -q -e "select id from FOO order by id" | program > > The program would do a loop with "select * from FOO where id=$ID", > and do an occasional UPDATE. > > >Fix: > the two processes should not block each other. > Dropping the "-q" is not a solution; the table is too large. > > > >Submitter-Id: <submitter ID> > >Originator: > >Organization: > noris network AG, Nuernberg, Germany > >MySQL support: license > >Synopsis: innodb deadlock > >Severity: serious > >Priority: high > >Category: mysql > >Class: sw-bug > >Release: mysql-3.23.56 > > >Environment: > System: Linux dev1.dev.noris.de 2.4.18-3 #1 Thu Apr 18 07:37:53 EDT 2002 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/i386-redhat-linux/2.96/specs > gcc version 2.96 20000731 (Red Hat Linux 7.0) > Compilation info: CC='gcc' CFLAGS='-g -O2' CXX='g++' CXXFLAGS='-DTHREAD_SAFE_CLIENT -felide-constructors -fno-exceptions -fno-rtt i' LDFLAGS='' > LIBC: > lrwxrwxrwx 1 root root 13 Jun 6 2002 /lib/libc.so.6 -> libc-2.2.5.so > -rwxr-xr-x 1 root root 1260480 Apr 15 2002 /lib/libc-2.2.5.so > -rw-r--r-- 1 root root 2310808 Apr 15 2002 /usr/lib/libc.a > -rw-r--r-- 1 root root 178 Apr 15 2002 /usr/lib/libc.so > -rwxr-xr-x 1 root root 2194520 Feb 6 12:32 /usr/lib/libc-client.a > Configure command: ./configure '--prefix=/usr' '--without-debug' '--enable-shared' '--without-mit-threads' '--libexecdir=/usr/sbin' '--localstatedir=/var/mysql' '--enable-thread-safe-client' '--sysconfdir=/etc' '--datadir=/usr/share' '--enable-large-files' '--without-readline' '--with-mysqld-user=mysql' '--with-unix-socket-path=/var/run/mysql.socket' '--enable-strcoll' '--with-comment=noris network MySQL' '--with-docs' '--with-bench' '--without-berkeley-db' '--without-bench' '--with-innodb' 'CPPFLAGS=-DTHREAD_SAFE_CLIENT' 'CXXFLAGS=-DTHREAD_SAFE_CLIENT -felide-constructors -fno-exceptions -fno-rtt i' > > > --------------------------------------------------------------------- > 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 > --------------------------------------------------------------------- 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