| Bug #9815 | --skip-innodb --default-table-type=innodb leads to assertion failure | ||
|---|---|---|---|
| Submitted: | 11 Apr 2005 13:36 | Modified: | 9 Nov 2005 3:02 | 
| Reporter: | Guilhem Bichot | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server | Severity: | S1 (Critical) | 
| Version: | 4.1.11,5.0.16-bk | OS: | Linux (linux,windows) | 
| Assigned to: | Jim Winstead | CPU Architecture: | Any | 
   [11 Apr 2005 13:41]
   Heikki Tuuri        
  In earlier versions, MySQL used (?) MyISAM if InnoDB was missing. I am changing this to a general 'Server' bug, as it is the task of MySQL not to access storage engines that are not present. Regards, Heikki
   [14 Apr 2005 1:25]
   Bugs System        
  A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/internals/23999
   [25 Apr 2005 22:51]
   Jim Winstead        
  Fixed in 4.1.12 and 5.0.5.
   [26 Apr 2005 3:05]
   Paul DuBois        
  Noted in 4.1.12, 5.0.5 changelogs.
   [3 Nov 2005 1:54]
   Bugs System        
  A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/internals/31855
   [4 Nov 2005 2:30]
   Jim Winstead        
  Fixed in 5.0.16.
   [9 Nov 2005 3:02]
   Paul DuBois        
  Noted in 5.0.16 changelog.


Description: High priority as it is a crash. Verified on two machines. Start a mysqld (debug binary built from latest 4.1 bk tree) with InnoDB enabled. Create an InnoDB table in database "test". Shutdown mysqld, restart it with --skip-innodb --default-table-type=innodb (yes it does not make sense but it's not a reason to crash :) Launch "mysql test" (no -A): mysqld crashes here (because of safemutex): #4 0x4025c9bc in abort () from /lib/i686/libc.so.6 #5 0x0840f402 in safe_mutex_lock (mp=0x85cbdc0, file=0x848cb08 "ha_innodb.cc", line=1075353872) at thr_mutex.c:129 #6 0x0822d657 in get_share (table_name=0x40bb0744 "./test/i") at ha_innodb.cc:5205 #7 0x082282d9 in ha_innobase::open (this=0x85fb938, name=0x40bb0744 "./test/i", mode=2, test_if_locked=2) at ha_innodb.cc:1597 #8 0x0821e274 in handler::ha_open (this=0x85fb938, name=0x40bb0744 "./test/i", mode=2, test_if_locked=2) at handler.cc:919 #9 0x081c9308 in openfrm (name=0x40bb1804 "./test/i", alias=0x0, db_stat=39, prgflag=44, ha_open_flags=0, outparam=0x85fb418) at table.cc:761 #10 0x081c426f in open_unireg_entry (thd=0x85f59e8, entry=0x85fb418, db=0x85f1d50 "test", name=0x85fb3e8 "i", alias=0x85fb3e8 "i") at sql_base.cc:1431 #11 0x081c2ffa in open_table (thd=0x85f59e8, db=0x85f1d50 "test", table_name=0x85fb3e8 "i", alias=0x85fb3e8 "i", refresh=0x40bb2abf) at sql_base.cc:908 #12 0x081c47f1 in open_ltable (thd=0x85f59e8, table_list=0x40bb2cd4, lock_type=TL_UNLOCK) at sql_base.cc:1621 #13 0x08253057 in mysqld_list_fields (thd=0x85f59e8, table_list=0x40bb2cd4, wild=0x85f3828 "") at sql_show.cc:1065 #14 0x081a0c2e in dispatch_command (command=COM_FIELD_LIST, thd=0x85f59e8, packet=0x860f953 "", packet_length=3) at sql_parse.cc:1595 #15 0x081a01d9 in do_command (thd=0x85f59e8) at sql_parse.cc:1318 #16 0x0819f656 in handle_one_connection (arg=0x0) at sql_parse.cc:1050 #17 0x4017ef71 in pthread_start_thread () from /lib/i686/libpthread.so.0 Another simpler way to repeat is: don't create an InnoDB table first. Just start mysqld with the stupid couple of options, and do create table i (a int) type=innodb. How to repeat: see description (two ways to crash) Suggested fix: fix that --skip-innodb really wins over --default-table-type and --default-storage-engine. Please when you fix, verify that the two testcases don't crash.