Bug #14012 InnoDB crash
Submitted: 13 Oct 2005 18:14 Modified: 8 Dec 2006 14:46
Reporter: Frank Denis Email Updates:
Status: No Feedback Impact on me:
None 
Category:MySQL Server: InnoDB storage engine Severity:S2 (Serious)
Version:4.1.14 OS:Linux (Linux amd64)
Assigned to: Assigned Account CPU Architecture:Any

[13 Oct 2005 18:14] Frank Denis
Description:
len 216; hex
 b87c54b0aa2a0000902b25e1aa2a00004a0000000005044b640400000000000003000000000000000300000000000000010000000000000000000000000000000000000000000000
 0200000000000000010000000000000000000000000000002f32198efa41cb6300000000000d0a1401000000000000008344510700000000bf086eb0aa2a0000010000000000000038b5a6f1aa2a00
 000000000000000000a34e00000000000060e11177000000000200000000000000000000000000000065ff74656c657068b8086eb0aa2a00006c00000000000000;
 asc  |T  *   +%  *  J
  Kd
 /2   A c                 DQ       n  *          8    *           N      `
 w
             e teleph  n  *  l       ;051013 17:14:12InnoDB: Assertion
 failure in thread 75509579883 in file btr0pcur.c line 213
 InnoDB: Failing assertion: 0
 InnoDB: We intentionally generate a memory trap.
 InnoDB: Submit a detailed bug report to http://bugs.mysql.com.
 InnoDB: If you get repeated assertion failures or crashes, even
 InnoDB: immediately after the mysqld startup, there may be
 InnoDB: corruption in the InnoDB tablespace. Please refer to
 InnoDB: http://dev.mysql.com/doc/mysql/en/Forcing_recovery.html
 InnoDB: about forcing recovery.
 InnoDB: Thread 75510989014 stopped in file ha_innodb.cc line 668
 InnoDB: Thread 75511726351 stopped in file os0sync.c line 244
 InnoDB: Thread 75508629558 stopped in file os0sync.c line 501
 InnoDB: Thread 75506319556 stopped in file ./../include/sync0sync.ic line
 111
 InnoDB: Thread 114696 stopped in file ./../include/sync0sync.ic line 111
 mysqld got signal 11;

How to repeat:
I've no idea on how it happened.
[13 Oct 2005 18:44] MySQL Verification Team
Since you don't have provided the test case and comparing the assertion
message I assume it is duplicate of bug:

http://bugs.mysql.com/bug.php?id=13379

---------------------------------------------------------------------------
Continuing.

Breakpoint 4, ha_innobase::index_next_same(char*, char const*, unsigned) (
    this=0x8b2dbe8, buf=0x8b2dcf0 "ÿ\001", key=0x8b4e7a8 "\001", keylen=16)
    at ha_innodb.cc:3285
3285            statistic_increment(ha_read_next_count, &LOCK_status);
(gdb) c
Continuing.

Breakpoint 1, row_search_for_mysql (buf=0x8b2dcf0 "ÿ\001", mode=0,
    prebuilt=0x40acb668, match_mode=1, direction=1) at row0sel.c:2858
2858            dict_index_t*   index           = prebuilt->index;
Current language:  auto; currently c
(gdb)
Continuing.
 len 108; hex
68c4ac408880d84000000000000000000300000001000000030000000000000001
00000003000000000000000000000000000000000000000100000083445107000000000000000000

000000000000000000000060e111770200000000000000000000000000000000000000; asc h 
@
   @                                                     DQ
`  w                    ;050922  0:01:08InnoDB: Assertion failure in thread
1474
66 in file btr0pcur.c line 213
InnoDB: Failing assertion: 0
---------------------------------------------------------------------------
[13 Oct 2005 18:50] Heikki Tuuri
Hi!

It is the assertion below that fails.

In 4.1.10 and 4.1.11 there was bug (TL_IGNORE) that could cause this crash. But in 4.1.14 that bug should not be present. Are you sure you are running 4.1.14?

Regards,

Heikki

/******************************************************************
Restores the stored position of a persistent cursor bufferfixing the page and
obtaining the specified latches. If the cursor position was saved when the
(1) cursor was positioned on a user record: this function restores the position
to the last record LESS OR EQUAL to the stored record;
(2) cursor was positioned on a page infimum record: restores the position to
the last record LESS than the user record which was the successor of the page
infimum;
(3) cursor was positioned on the page supremum: restores to the first record
GREATER than the user record which was the predecessor of the supremum.
(4) cursor was positioned before the first or after the last in an empty tree:
restores to before first or after the last in the tree. */

ibool
btr_pcur_restore_position(
/*======================*/
                                        /* out: TRUE if the cursor position
                                        was stored when it was on a user record
                                        and it can be restored on a user record
                                        whose ordering fields are identical to
                                        the ones of the original user record */
        ulint           latch_mode,     /* in: BTR_SEARCH_LEAF, ... */
        btr_pcur_t*     cursor,         /* in: detached persistent cursor */
        mtr_t*          mtr)            /* in: mtr */
{
        dict_tree_t*    tree;
        page_t*         page;
        dtuple_t*       tuple;
        ulint           mode;
        ulint           old_mode;
        ibool           from_left;
        mem_heap_t*     heap;

        ut_a(cursor->pos_state == BTR_PCUR_WAS_POSITIONED
                        || cursor->pos_state == BTR_PCUR_IS_POSITIONED);
        if (cursor->old_stored != BTR_PCUR_OLD_STORED) {
                ut_print_buf(stderr, (const byte*)cursor, sizeof(btr_pcur_t));
                if (cursor->trx_if_known) {
                        trx_print(stderr, cursor->trx_if_known);
                }

                ut_a(0);
        }
[13 Oct 2005 18:53] Heikki Tuuri
Miguel,

good catch. It may be a duplicate of
http://bugs.mysql.com/bug.php?id=13379

Regards,

Heikki
[14 Oct 2005 20:03] Heikki Tuuri
Frank,

are you using subqueries?
[15 Oct 2005 6:46] Valeriy Kravchuk
Frank,

Please, answer the questions at the last comment from Heikki: 

1. Do you use subqueries?
2. Can you identifiy some specific actions, queries, tables etc. that lead to this result in your case? Look also at the similar bug report http://bugs.mysql.com/bug.php?id=13379
[16 Nov 2005 0: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".
[17 Mar 2006 13:38] Heikki Tuuri
I reopened this bug report, so that I remember to monitor the progress of:
http://bugs.mysql.com/bug.php?id=13379
[21 Aug 2006 18:07] Sveta Smirnova
Duplicates bug #13379.
[23 Aug 2006 14:31] Heikki Tuuri
Sveta,

we do not know if this is a duplicate of #13379. That is why I am keeping this open.

--Heikki
[8 Nov 2006 14:46] Heikki Tuuri
http://bugs.mysql.com/bug.php?id=21077 may have fixed this. Putting this to the 'Need feedback' status.
[9 Dec 2006 0: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".