Bug #53819 assert in my_seek, concurrent workload
Submitted: 19 May 2010 17:42 Modified: 19 May 2010 17:42
Reporter: Matthias Leich Email Updates:
Status: Analyzing Impact on me:
None 
Category:MySQL Server: Partitions Severity:S3 (Non-critical)
Version:mysql-next-mr-wl3561 OS:Any
Assigned to: Assigned Account CPU Architecture:Any
Tags: RQG

[19 May 2010 17:42] Matthias Leich
Description:
The assert happens in my_seek.c line 57:
  /*
      Make sure we are using a valid file descriptor!
  */
  DBUG_ASSERT(fd != -1); <------------

RQG test with 10 concurrent sessions.

Result on mysql-next-mr-wl3561 revno: 3135 2010-04-28
-----------------------------------------------------
# 2010-05-14T22:25:11 #6  0x00007feb0461af09 in __assert_fail () from /lib/libc.so.6
# 2010-05-14T22:25:11 #7  0x0000000000b53d6f in my_seek (fd=-1, pos=0, whence=2, MyFlags=0)
# 2010-05-14T22:25:11     at my_seek.c:57
# 2010-05-14T22:25:11 #8  0x0000000000b5519a in init_io_cache (info=0x7feaf4979a90, file=-1,
# 2010-05-14T22:25:11     cachesize=262108, type=READ_CACHE, seek_offset=0, use_async_io=1 '\001',
# 2010-05-14T22:25:11     cache_myflags=16) at mf_iocache.c:209
# 2010-05-14T22:25:11 #9  0x0000000000a86f23 in mi_repair (param=0x7feaf49797b0,
# 2010-05-14T22:25:11     info=0x7feae805b338, name=0x7feaf4979500 "./testdb_N/t1_part1_N#P#p2",
# 2010-05-14T22:25:11     rep_quick=0) at mi_check.c:1557
# 2010-05-14T22:25:11 #10 0x0000000000a6d2fe in ha_myisam::repair (this=0x7feae80a18f8,
# 2010-05-14T22:25:11     thd=0x7feaf001e458, param=@0x7feaf49797b0, do_optimize=false)
# 2010-05-14T22:25:11     at ha_myisam.cc:1057
# 2010-05-14T22:25:11 #11 0x0000000000a6dbb3 in ha_myisam::repair (this=0x7feae80a18f8,
# 2010-05-14T22:25:11     thd=0x7feaf001e458, check_opt=0x7feaf00209c8) at ha_myisam.cc:932
# 2010-05-14T22:25:11 #12 0x00000000008199dd in handler::ha_repair (this=0x7feae80a18f8,
# 2010-05-14T22:25:11     thd=0x7feaf001e458, check_opt=0x7feaf00209c8) at handler.cc:3166
# 2010-05-14T22:25:11 #13 0x000000000082b0dc in handle_opt_part (thd=0x7feaf001e458,
# 2010-05-14T22:25:11     check_opt=0x7feaf00209c8, file=0x7feae80a18f8, flag=4)
# 2010-05-14T22:25:11     at ha_partition.cc:1011
# 2010-05-14T22:25:11 #14 0x000000000082b466 in ha_partition::handle_opt_partitions (
# 2010-05-14T22:25:11     this=0x7feae80b6288, thd=0x7feaf001e458, check_opt=0x7feaf00209c8, flag=4)
# 2010-05-14T22:25:11     at ha_partition.cc:1166
# 2010-05-14T22:25:11 #15 0x000000000082b678 in ha_partition::repair (this=0x7feae80b6288,
# 2010-05-14T22:25:11     thd=0x7feaf001e458, check_opt=0x7feaf00209c8) at ha_partition.cc:941
# 2010-05-14T22:25:11 #16 0x00000000008199dd in handler::ha_repair (this=0x7feae80b6288,
# 2010-05-14T22:25:11     thd=0x7feaf001e458, check_opt=0x7feaf00209c8) at handler.cc:3166
# 2010-05-14T22:25:11 #17 0x0000000000849381 in mysql_admin_table (thd=0x7feaf001e458,
# 2010-05-14T22:25:11     tables=0x3496438, check_opt=0x7feaf00209c8,
# 2010-05-14T22:25:11     operator_name=0xd230ed "repair", lock_type=TL_WRITE,
# 2010-05-14T22:25:11     open_for_modify=false, no_warnings_for_error=false, extra_open_options=32,
# 2010-05-14T22:25:11     prepare_func=0x838924 <prepare_for_repair>,
# 2010-05-14T22:25:11     operator_func=0x8199a2 <handler::ha_repair(THD*, st_ha_check_opt*)>,
# 2010-05-14T22:25:11     view_operator_func=0) at sql_table.cc:4890
# 2010-05-14T22:25:11 #18 0x000000000084a7a1 in mysql_repair_table (thd=0x7feaf001e458,
# 2010-05-14T22:25:11     tables=0x3496438, check_opt=0x7feaf00209c8) at sql_table.cc:5163
# 2010-05-14T22:25:11 #19 0x00000000006d370a in mysql_execute_command (thd=0x7feaf001e458)
# 2010-05-14T22:25:11     at sql_parse.cc:2980
# 2010-05-14T22:25:11 #20 0x00000000006d929b in mysql_parse (thd=0x7feaf001e458,
# 2010-05-14T22:25:11     inBuf=0x3496328 "REPAIR  TABLE testdb_N . t1_part1_N", length=35,
# 2010-05-14T22:25:11     found_semicolon=0x7feaf49849f8) at sql_parse.cc:5865
# 2010-05-14T22:25:11 #21 0x00000000006d9e77 in dispatch_command (command=COM_QUERY,
# 2010-05-14T22:25:11     thd=0x7feaf001e458, packet=0x7feaf000d529 "", packet_length=38)
# 2010-05-14T22:25:11     at sql_parse.cc:1088
# 2010-05-14T22:25:11 #22 0x00000000006db3a1 in do_command (thd=0x7feaf001e458) at sql_parse.cc:774
# 2010-05-14T22:25:11 #23 0x00000000006c8f00 in do_handle_one_connection (thd_arg=0x7feaf001e458)
# 2010-05-14T22:25:11     at sql_connect.cc:1188
# 2010-05-14T22:25:11 #24 0x00000000006c8fc5 in handle_one_connection (arg=0x7feaf001e458)
# 2010-05-14T22:25:11     at sql_connect.cc:1127
# 2010-05-14T22:25:11 #25 0x00007feb052433ba in start_thread () from /lib/libpthread.so.0
# 2010-05-14T22:25:11 #26 0x00007feb046d4fcd in clone () from /lib/libc.so.6
# 2010-05-14T22:25:11 #27 0x0000000000000000 in ?? ()
....
stack_bottom = 0x7feaf49850d0 thread_stack 0x40000
/data0/mleich/mysql-next-mr-wl3561/sql/mysqld(my_print_stacktrace+0x32)[0xb7b8fe]
/data0/mleich/mysql-next-mr-wl3561/sql/mysqld(handle_segfault+0x2a6)[0x6be185]
/lib/libpthread.so.0[0x7feb0524b080]
/lib/libc.so.6(gsignal+0x35)[0x7feb04621fb5]
/lib/libc.so.6(abort+0x183)[0x7feb04623bc3]
/lib/libc.so.6(__assert_fail+0xe9)[0x7feb0461af09]
/data0/mleich/mysql-next-mr-wl3561/sql/mysqld(my_seek+0xa3)[0xb53d6f]
/data0/mleich/mysql-next-mr-wl3561/sql/mysqld(init_io_cache+0x23b)[0xb5519a]
/data0/mleich/mysql-next-mr-wl3561/sql/mysqld(mi_repair+0x27b)[0xa86f23]
/data0/mleich/mysql-next-mr-wl3561/sql/mysqld(_ZN9ha_myisam6repairEP3THDR17st_mi_check_paramb+0x5be)[0xa6d2fe]
/data0/mleich/mysql-next-mr-wl3561/sql/mysqld(_ZN9ha_myisam6repairEP3THDP15st_ha_check_opt+0x1db)[0xa6dbb3]
/data0/mleich/mysql-next-mr-wl3561/sql/mysqld(_ZN7handler9ha_repairEP3THDP15st_ha_check_opt+0x3b)[0x8199dd]
/data0/mleich/mysql-next-mr-wl3561/sql/mysqld[0x82b0dc]
/data0/mleich/mysql-next-mr-wl3561/sql/mysqld(_ZN12ha_partition21handle_opt_partitionsEP3THDP15st_ha_check_optj+0x2fa)[0x82b466]
/data0/mleich/mysql-next-mr-wl3561/sql/mysqld(_ZN12ha_partition6repairEP3THDP15st_ha_check_opt+0x50)[0x82b678]
/data0/mleich/mysql-next-mr-wl3561/sql/mysqld(_ZN7handler9ha_repairEP3THDP15st_ha_check_opt+0x3b)[0x8199dd]
/data0/mleich/mysql-next-mr-wl3561/sql/mysqld[0x849381]
/data0/mleich/mysql-next-mr-wl3561/sql/mysqld(_Z18mysql_repair_tableP3THDP10TABLE_LISTP15st_ha_check_opt+0xb1)[0x84a7a1]
/data0/mleich/mysql-next-mr-wl3561/sql/mysqld(_Z21mysql_execute_commandP3THD+0x25da)[0x6d370a]
/data0/mleich/mysql-next-mr-wl3561/sql/mysqld(_Z11mysql_parseP3THDPKcjPS2_+0x265)[0x6d929b]
/data0/mleich/mysql-next-mr-wl3561/sql/mysqld(_Z16dispatch_command19enum_server_commandP3THDPcj+0xa40)[0x6d9e77]
/data0/mleich/mysql-next-mr-wl3561/sql/mysqld(_Z10do_commandP3THD+0x22b)[0x6db3a1]
/data0/mleich/mysql-next-mr-wl3561/sql/mysqld(_Z24do_handle_one_connectionP3THD+0x137)[0x6c8f00]
/data0/mleich/mysql-next-mr-wl3561/sql/mysqld(handle_one_connection+0x2d)[0x6c8fc5]
/lib/libpthread.so.0[0x7feb052433ba]
/lib/libc.so.6(clone+0x6d)[0x7feb046d4fcd]

It is rather likely that mysql-next-mr shows the same bug.

How to repeat:
I will upload the RQG grammars which were used.
[19 May 2010 17:51] Matthias Leich
grammars + config + protocol

Attachment: 53819.tgz (application/x-compressed-tar, text), 46.59 KiB.

[19 May 2010 17:54] Matthias Leich
One note:
  WL3561 adds the functionality for transactional locking.
  The RQG grammar used within this test does not generate
  transactional locks.
[6 Oct 2010 13:02] Matthias Leich
I hit the same problem today
mysql-5.5-runtime
revno: 3152 2010-10-04