Server hangs on updating an XtraDB table after FLUSH TABLES WITH READ LOCK AND DISABLE CHECKPOINT

Bug #994854 reported by Elena Stepanova
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
MariaDB
Fix Released
Medium
Michael Widenius

Bug Description

The following sequence of commands

FLUSH TABLES WITH READ LOCK AND DISABLE CHECKPOINT;
UNLOCK TABLES;
CREATE TABLE t1 ( m MEDIUMTEXT ) ENGINE=InnoDB;
INSERT INTO t1 VALUES ( REPEAT('i',1048576) );

makes server to hang, seemingly forever, when it's run with XtraDB (but not with InnoDB plugin).
The above 4 statements are the full test case.

bzr version-info
revision-id: <email address hidden>
date: 2012-05-04 17:22:40 +0200
build-date: 2012-05-05 00:36:39 +0300
revno: 3397

Stack traces of the threads that are doing something (although maybe they are irrelevant to the problem):

Thread 5 (Thread 0x7f8b23b3e710 (LWP 30444)):
#0 0x00007f8b34faa39c in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1 0x000000000115fcf2 in safe_cond_wait (cond=0x3112240, mp=0x3112190,
    file=0x13a0838 "storage/xtradb/os/os0sync.c", line=207)
    at mysys/thr_mutex.c:496
#2 0x0000000001067326 in os_cond_wait (cond=0x3112240, mutex=0x3112190)
    at storage/xtradb/os/os0sync.c:207
#3 0x00000000010680ff in os_event_wait_low (event=0x3112190, reset_sig_count=1)
    at storage/xtradb/os/os0sync.c:609
#4 0x0000000000e8659b in sync_array_wait_event (arr=0x260aff0, index=1)
    at storage/xtradb/sync/sync0arr.c:458
#5 0x0000000000e88d95 in rw_lock_s_lock_spin (lock=0x7f8b28d84d88, pass=2,
    file_name=0x1375750 "storage/xtradb/buf/buf0flu.c", line=1335)
    at storage/xtradb/sync/sync0rw.c:453
#6 0x0000000000f45444 in rw_lock_s_lock_func (lock=0x7f8b28d84d88, pass=2,
    file_name=0x1375750 "storage/xtradb/buf/buf0flu.c", line=1335)
    at storage/xtradb/include/sync0rw.ic:419
#7 0x0000000000f45700 in pfs_rw_lock_s_lock_func (lock=0x7f8b28d84d88, pass=2,
    file_name=0x1375750 "storage/xtradb/buf/buf0flu.c", line=1335)
    at storage/xtradb/include/sync0rw.ic:783
#8 0x0000000000f4ce6a in buf_flush_page (buf_pool=0x30cb6b8, bpage=0x7f8b28d84c10, flush_type=BUF_FLUSH_LIST)
    at storage/xtradb/buf/buf0flu.c:1334
#9 0x0000000000f4d583 in buf_flush_try_neighbors (space=0, offset=242, flush_type=BUF_FLUSH_LIST, n_flushed=7,
    n_to_flush=200) at storage/xtradb/buf/buf0flu.c:1519
#10 0x0000000000f4da83 in buf_flush_page_and_try_neighbors (bpage=0x7f8b28d84c10, flush_type=BUF_FLUSH_LIST,
    n_to_flush=200, count=0x7f8b23b3d620) at storage/xtradb/buf/buf0flu.c:1606
#11 0x0000000000f4e16c in buf_flush_flush_list_batch (buf_pool=0x30cb6b8, min_n=200,
    lsn_limit=18446744073709551615) at storage/xtradb/buf/buf0flu.c:1739
#12 0x0000000000f4e341 in buf_flush_batch (buf_pool=0x30cb6b8, flush_type=BUF_FLUSH_LIST, min_n=200,
    lsn_limit=18446744073709551615) at storage/xtradb/buf/buf0flu.c:1829
#13 0x0000000000f4ed9d in buf_flush_list (min_n=200, lsn_limit=18446744073709551615)
    at storage/xtradb/buf/buf0flu.c:2071
#14 0x0000000000e7c1f7 in srv_master_thread (arg=0x0)
    at storage/xtradb/srv/srv0srv.c:3729
#15 0x00007f8b34fa5a4f in start_thread () from /lib64/libpthread.so.0
#16 0x00007f8b33d3a82d in clone () from /lib64/libc.so.6

Thread 2 (Thread 0x7f8b22af4710 (LWP 30454)):
#0 0x00007f8b34faa39c in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1 0x000000000115fcf2 in safe_cond_wait (cond=0x3258750, mp=0x32586a0,
    file=0x13a0838 "storage/xtradb/os/os0sync.c", line=207)
    at mysys/thr_mutex.c:496
#2 0x0000000001067326 in os_cond_wait (cond=0x3258750, mutex=0x32586a0)
    at storage/xtradb/os/os0sync.c:207
#3 0x00000000010680ff in os_event_wait_low (event=0x32586a0, reset_sig_count=3)
    at storage/xtradb/os/os0sync.c:609
#4 0x0000000000e8659b in sync_array_wait_event (arr=0x260aff0, index=0)
    at storage/xtradb/sync/sync0arr.c:458
#5 0x0000000000e88d95 in rw_lock_s_lock_spin (lock=0x3155b88, pass=0,
    file_name=0x1398ce8 "storage/xtradb/log/log0log.c", line=2076)
    at storage/xtradb/sync/sync0rw.c:453
#6 0x0000000001036836 in rw_lock_s_lock_func (lock=0x3155b88, pass=0,
    file_name=0x1398ce8 "storage/xtradb/log/log0log.c", line=2076)
    at storage/xtradb/include/sync0rw.ic:419
#7 0x0000000001037006 in pfs_rw_lock_s_lock_func (lock=0x3155b88, pass=0,
    file_name=0x1398ce8 "storage/xtradb/log/log0log.c", line=2076)
    at storage/xtradb/include/sync0rw.ic:783
#8 0x000000000103d556 in log_checkpoint (sync=1, write_always=1, safe_to_ignore=0)
    at storage/xtradb/log/log0log.c:2076
#9 0x00000000010382d0 in log_fsp_current_free_limit_set_and_checkpoint (limit=6)
    at storage/xtradb/log/log0log.c:192
#10 0x0000000000fd3acf in fsp_fill_free_list (init_space=0, space=0, header=0x7f8b29370026 "",
    mtr=0x7f8b22af1da0) at storage/xtradb/fsp/fsp0fsp.c:1340
#11 0x0000000000fd41f0 in fsp_alloc_free_extent (space=0, zip_size=0, hint=0, mtr=0x7f8b22af1da0)
    at storage/xtradb/fsp/fsp0fsp.c:1460
#12 0x0000000000fd44da in fsp_alloc_free_page (space=0, zip_size=0, hint=0, mtr=0x7f8b22af1da0)
    at storage/xtradb/fsp/fsp0fsp.c:1522
#13 0x0000000000fd936b in fseg_alloc_free_page_low (space=0, zip_size=0, seg_inode=0x7f8b293533f2 "", hint=0,
    direction=113 'q', mtr=0x7f8b22af1da0) at storage/xtradb/fsp/fsp0fsp.c:2662
#14 0x0000000000fd9c53 in fseg_alloc_free_page_general (seg_header=0x7f8b2934c04a "", hint=320,
    direction=113 'q', has_done_reservation=1, mtr=0x7f8b22af1da0)
    at storage/xtradb/fsp/fsp0fsp.c:2822
#15 0x0000000000ee3e81 in btr_page_alloc (index=0x32e6038, hint_page_no=320, file_direction=113 'q', level=0,
    mtr=0x7f8b22af1da0) at storage/xtradb/btr/btr0btr.c:950
#16 0x0000000000f0f537 in btr_store_big_rec_extern_fields_func (index=0x32e6038, rec_block=0x7f8b28d849c0,
    rec=0x7f8b2934c080 "", offsets=0x2604688, local_mtr=0x7f8b22af2390, update_in_place=0,
    big_rec_vec=0x3730788) at storage/xtradb/btr/btr0cur.c:4386
#17 0x00000000010cbf66 in row_ins_index_entry_low (mode=2, index=0x32e6038, entry=0x32c9ac8, n_ext=0,
    thr=0x3366638) at storage/xtradb/row/row0ins.c:2157
#18 0x00000000010cc14c in row_ins_index_entry (index=0x32e6038, entry=0x32c9ac8, n_ext=0, foreign=1,
    thr=0x3366638) at storage/xtradb/row/row0ins.c:2206
#19 0x00000000010cc740 in row_ins_index_entry_step (node=0x3366410, thr=0x3366638)
    at storage/xtradb/row/row0ins.c:2291
#20 0x00000000010ccc8b in row_ins (node=0x3366410, thr=0x3366638)
    at storage/xtradb/row/row0ins.c:2423
#21 0x00000000010cd1bb in row_ins_step (thr=0x3366638)
    at storage/xtradb/row/row0ins.c:2540
#22 0x0000000000e2ea49 in row_insert_for_mysql (mysql_rec=0x33e5bc8 "\376", prebuilt=0x32c2178)
    at storage/xtradb/row/row0mysql.c:1217
#23 0x0000000000de751c in ha_innobase::write_row (this=0x33c74d8, record=0x33e5bc8 "\376")
    at storage/xtradb/handler/ha_innodb.cc:5820
#24 0x0000000000967bc3 in handler::ha_write_row (this=0x33c74d8, buf=0x33e5bc8 "\376")
    at sql/handler.cc:5064
#25 0x00000000006776af in write_record (thd=0x3290da0, table=0x32dfdb0, info=0x7f8b22af2da0)
    at sql/sql_insert.cc:1800
#26 0x0000000000673eb3 in mysql_insert (thd=0x3290da0, table_list=0x3393370, fields=..., values_list=...,
    update_fields=..., update_values=..., duplic=DUP_ERROR, ignore=false)
    at sql/sql_insert.cc:965
#27 0x00000000006a42ab in mysql_execute_command (thd=0x3290da0) at sql/sql_parse.cc:2917
#28 0x00000000006b1305 in mysql_parse (thd=0x3290da0,
    rawbuf=0x3393268 "INSERT INTO t1 VALUES ( REPEAT('i',1048576) )", length=45, parser_state=0x7f8b22af3610)
    at sql/sql_parse.cc:5731
#29 0x000000000069cd8e in dispatch_command (command=COM_QUERY, thd=0x3290da0,
    packet=0x338ba51 "INSERT INTO t1 VALUES ( REPEAT('i',1048576) )", packet_length=45)
    at sql/sql_parse.cc:1055
#30 0x000000000069b8be in do_command (thd=0x3290da0) at sql/sql_parse.cc:794
#31 0x000000000083309d in do_handle_one_connection (thd_arg=0x3290da0)
    at sql/sql_connect.cc:1253
#32 0x00000000008328aa in handle_one_connection (arg=0x3290da0)
    at sql/sql_connect.cc:1168
#33 0x0000000000dd126e in pfs_spawn_thread (arg=0x34e29f0)
    at storage/perfschema/pfs.cc:1015
#34 0x00007f8b34fa5a4f in start_thread () from /lib64/libpthread.so.0
#35 0x00007f8b33d3a82d in clone () from /lib64/libc.so.6

Revision history for this message
Elena Stepanova (elenst) wrote :
Elena Stepanova (elenst)
tags: added: xtradb
tags: removed: xtradb
Revision history for this message
Elena Stepanova (elenst) wrote :

Fix released with 5.5.24

Changed in maria:
status: New → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.