Bug #52626 Failing assertion: !lock->recursive
Submitted: 6 Apr 2010 18:10 Modified: 30 Apr 2010 5:56
Reporter: Shane Bester (Platinum Quality Contributor) Email Updates:
Status: Duplicate Impact on me:
None 
Category:MySQL Server: InnoDB Plugin storage engine Severity:S1 (Critical)
Version:1.0.6, 1.0.7 plugin OS:Any (MS Windows, Linux)
Assigned to: CPU Architecture:Any

[6 Apr 2010 18:10] Shane Bester
Description:
during tests on a barracuda table, I shutdown server:

Version: '5.1.45-enterprise-gpl-advanced'  socket: ''  port: 3306  MySQL Enterprise Server - Advanced Edition (GPL)                                                                                                                                                                                
100406 20:04:47 [Note] mysqld: Normal shutdown                                                                                                                                                                                                                                                     
                                                                                                                                                                                                                                                                                                   
100406 20:04:49  InnoDB: Assertion failure in thread 22516 in file .\sync\sync0rw.c line 556

ha_innodb_plugin.dll!rw_lock_x_lock_low()[sync0rw.c:556]             
ha_innodb_plugin.dll!rw_lock_x_lock_func()[sync0rw.c:618]            
ha_innodb_plugin.dll!buf_page_get_gen()[buf0buf.c:2333]              
ha_innodb_plugin.dll!fsp_get_space_header()[fsp0fsp.c:373]           
ha_innodb_plugin.dll!fseg_alloc_free_page_low()[fsp0fsp.c:2615]      
ha_innodb_plugin.dll!fseg_alloc_free_page_general()[fsp0fsp.c:2878]  
ha_innodb_plugin.dll!btr_page_alloc()[btr0btr.c:389]                 
ha_innodb_plugin.dll!btr_page_split_and_insert()[btr0btr.c:1945]     
ha_innodb_plugin.dll!btr_cur_pessimistic_insert()[btr0cur.c:1412]    
ha_innodb_plugin.dll!row_ins_index_entry_low()[row0ins.c:2094]       
ha_innodb_plugin.dll!row_ins_index_entry()[row0ins.c:2170]           
ha_innodb_plugin.dll!row_ins_index_entry_step()[row0ins.c:2245]      
ha_innodb_plugin.dll!row_ins()[row0ins.c:2377]                       
ha_innodb_plugin.dll!row_ins_step()[row0ins.c:2492]                  
ha_innodb_plugin.dll!row_insert_for_mysql()[row0mysql.c:1139]        
ha_innodb_plugin.dll!ha_innodb::write_row()[ha_innodb.cc:4408]       
mysqld.exe!handler::ha_write_row()[handler.cc:4650]                  
mysqld.exe!write_record()[sql_insert.cc:1379]                        
mysqld.exe!mysql_insert()[sql_insert.cc:835]                         
mysqld.exe!mysql_execute_command()[sql_parse.cc:3183]                
mysqld.exe!mysql_parse()[sql_parse.cc:5975]                          
mysqld.exe!dispatch_command()[sql_parse.cc:1235]                     
mysqld.exe!do_command()[sql_parse.cc:878]                            
mysqld.exe!handle_one_connection()[sql_connect.cc:1127]              
mysqld.exe!pthread_start()[my_winthread.c:85]                        
mysqld.exe!_callthreadstart()[thread.c:293]                          

How to repeat:
we'll see.
[7 Apr 2010 6:49] MySQL Verification Team
crashed on an update too, without shutting down server or killing anything.

ha_innodb_plugin.dll!rw_lock_x_lock_low()[sync0rw.c:556]
ha_innodb_plugin.dll!rw_lock_x_lock_func()[sync0rw.c:618]
ha_innodb_plugin.dll!buf_page_get_gen()[buf0buf.c:2333]
ha_innodb_plugin.dll!fsp_get_space_header()[fsp0fsp.c:373]
ha_innodb_plugin.dll!fseg_alloc_free_page_low()[fsp0fsp.c:2615]
ha_innodb_plugin.dll!fseg_alloc_free_page_general()[fsp0fsp.c:2878]
ha_innodb_plugin.dll!btr_page_alloc()[btr0btr.c:389]
ha_innodb_plugin.dll!btr_page_split_and_insert()[btr0btr.c:1945]
ha_innodb_plugin.dll!btr_cur_pessimistic_insert()[btr0cur.c:1412]
ha_innodb_plugin.dll!btr_cur_pessimistic_update()[btr0cur.c:2317]
ha_innodb_plugin.dll!row_upd_clust_rec()[row0upd.c:1737]
ha_innodb_plugin.dll!row_upd_clust_step()[row0upd.c:1944]
ha_innodb_plugin.dll!row_upd()[row0upd.c:2021]
ha_innodb_plugin.dll!row_upd_step()[row0upd.c:2152]
ha_innodb_plugin.dll!row_update_for_mysql()[row0mysql.c:1384]
ha_innodb_plugin.dll!ha_innodb::update_row()[ha_innodb.cc:4699]
mysqld.exe!handler::ha_update_row()[handler.cc:4671]
mysqld.exe!mysql_update()[sql_update.cc:647]
mysqld.exe!mysql_execute_command()[sql_parse.cc:3067]
mysqld.exe!mysql_parse()[sql_parse.cc:5975]
mysqld.exe!dispatch_command()[sql_parse.cc:1235]
mysqld.exe!do_command()[sql_parse.cc:878]
mysqld.exe!handle_one_connection()[sql_connect.cc:1127]
mysqld.exe!pthread_start()[my_winthread.c:85]
mysqld.exe!_callthreadstart()[thread.c:293]

t 04B8F318=update t1 set data=substring(data,1,length(data)-1)
[8 Apr 2010 10:35] Marko Mäkelä
This might share a common cause with Bug #52360.
[9 Apr 2010 17:40] Sveta Smirnova
Thank you for the feedback.

Crash repeatable on Linux, but with different trace:

Thread 2 (Thread 1231358272 (LWP 24351)):
#0  0x00000034292c6952 in __select_nocancel () from /lib64/libc.so.6
#1  0x00002aaaaab47a0b in os_thread_sleep (tm=500000) at os/os0thread.c:295
#2  0x00002aaaaaaea291 in buf_LRU_get_free_block (zip_size=0) at buf/buf0lru.c:976
#3  0x00002aaaaaae4317 in buf_page_get_gen (space=2, zip_size=8192, offset=8193, rw_latch=2, guess=0x0, mode=10, file=0x2aaaaabb93a8 "ibuf/ibuf0ibuf.c", line=3208, mtr=0x4964c900) at buf/buf0buf.c:2168
#4  0x00002aaaaab2a58a in ibuf_bitmap_get_map_page_func (space=2, page_no=10299, zip_size=8192, file=0x2aaaaabb93a8 "ibuf/ibuf0ibuf.c", line=3208, mtr=0x4964c900) at ibuf/ibuf0ibuf.c:745
---Type <return> to continue, or q <return> to quit---
#5  0x00002aaaaab2e1b1 in ibuf_merge_or_delete_for_page (block=0x0, space=2, page_no=10299, zip_size=8192, update_ibuf_bitmap=1) at ibuf/ibuf0ibuf.c:3207
#6  0x00002aaaaaae58ae in buf_page_create (space=2, offset=10299, zip_size=8192, mtr=0x4964dbf0) at buf/buf0buf.c:3071
#7  0x00002aaaaab0d86c in fseg_alloc_free_page_low (space=2, zip_size=8192, seg_inode=0x2aaaabf980f2 "", hint=10299, direction=111 'o', mtr=0x4964dbf0) at fsp/fsp0fsp.c:2784
#8  0x00002aaaaab0da69 in fseg_alloc_free_page_general (seg_header=0x2aaaab31404a "", hint=10299, direction=111 'o', has_done_reservation=1, mtr=0x4964dbf0) at fsp/fsp0fsp.c:2875
#9  0x00002aaaaaacbfc0 in btr_page_alloc (index=0x15b929b8, hint_page_no=10299, file_direction=111 'o', level=0, mtr=0x4964dbf0) at btr/btr0btr.c:388
#10 0x00002aaaaaace995 in btr_page_split_and_insert (cursor=0x15bed558, tuple=0x15c01860, n_ext=1, mtr=0x4964dbf0) at btr/btr0btr.c:1952
#11 0x00002aaaaaad475b in btr_cur_pessimistic_insert (flags=7, cursor=0x15bed558, entry=0x15c01860, rec=0x4964d430, big_rec=0x4964d438, n_ext=1, thr=0x0, mtr=0x4964dbf0) at btr/btr0cur.c:1418
#12 0x00002aaaaaad619b in btr_cur_pessimistic_update (flags=2, cursor=0x15bed558, heap=0x4964d838, big_rec=0x4964d830, update=0x15c00e50, cmpl_info=1, thr=0x15c01118, mtr=0x4964dbf0)
    at btr/btr0cur.c:2318
#13 0x00002aaaaab866a9 in row_upd_clust_rec (node=0x15c00d48, index=0x15b929b8, thr=0x15c01118, mtr=0x4964dbf0) at row/row0upd.c:1731
#14 0x00002aaaaab86cff in row_upd_clust_step (node=0x15c00d48, thr=0x15c01118) at row/row0upd.c:1941
#15 0x00002aaaaab86eaa in row_upd (node=0x15c00d48, thr=0x15c01118) at row/row0upd.c:2018
#16 0x00002aaaaab87113 in row_upd_step (thr=0x15c01118) at row/row0upd.c:2149
#17 0x00002aaaaab73149 in row_update_for_mysql (mysql_rec=0x15c07160 "þx\\", prebuilt=0x15b89558) at row/row0mysql.c:1382
#18 0x00002aaaaab1a85e in ha_innodb::update_row (this=0x15c06f38, old_row=0x15c07160 "þx\\", new_row=0x15c07128 "þx\\") at handler/ha_innodb.cc:4999
#19 0x00000000007f28ca in handler::ha_update_row (this=0x15c06f38, old_data=0x15c07160 "þx\\", new_data=0x15c07128 "þx\\") at handler.cc:4671
#20 0x00000000007612d0 in mysql_update (thd=0x15bf67a8, table_list=0x15c04bf8, fields=@0x15bf8748, values=@0x15bf8b28, conds=0x0, order_num=0, order=0x0, limit=18446744073709551478, 
    handle_duplicates=DUP_ERROR, ignore=false) at sql_update.cc:645
#21 0x00000000006aa962 in mysql_execute_command (thd=0x15bf67a8) at sql_parse.cc:3067
#22 0x00000000006b365c in mysql_parse (thd=0x15bf67a8, inBuf=0x15c04ae8 "update t1 set data=substring(data,1,length(data)-1)", length=51, found_semicolon=0x4964fec0) at sql_parse.cc:5971
#23 0x00000000006a5c91 in dispatch_command (command=COM_QUERY, thd=0x15bf67a8, packet=0x15bf5a29 "update t1 set data=substring(data,1,length(data)-1)", packet_length=51) at sql_parse.cc:1233
#24 0x00000000006a4c48 in do_command (thd=0x15bf67a8) at sql_parse.cc:874
#25 0x00000000006a2f49 in handle_one_connection (arg=0x15bf67a8) at sql_connect.cc:1127
#26 0x0000003429e061b5 in start_thread () from /lib64/libpthread.so.0
#27 0x00000034292cd39d in clone () from /lib64/libc.so.6
#28 0x0000000000000000 in ?? ()
[10 Apr 2010 0:48] Mikhail Izioumtchenko
If indeed this is the same as bug#52360, should be fixed in 1.0.7.
Could you run the testcase with 5.1.46 which has Plugin 1.0.7?
[10 Apr 2010 9:25] Sveta Smirnova
Michael,

I tested with 1.0.7 plugin:

100409 18:23:04 InnoDB Plugin 1.0.7 started; log sequence number 6897633074
[12 Apr 2010 8:23] Sveta Smirnova
See also bug #52756

Shane, please also try 1.0.7 plugin which included in 5.1.46 when you are able to.
[12 Apr 2010 8:25] Marko Mäkelä
Sveta's crash is different (the 10-minute watchdog killing InnoDB), now filed as Bug #52756.
[30 Apr 2010 5:56] MySQL Verification Team
duplicate of bug #52964
[1 May 2010 12:19] MySQL Verification Team
also seen this exact assertion on the standard InnoDB Plugin 1.0.7 without any patches, using another testcase.