Loading Docs/manual.texi +3 −0 Original line number Diff line number Diff line Loading @@ -51289,6 +51289,9 @@ Linux-x86 binaries. @itemize @bullet @item Fixed buffer overflow problem if someone specified a too long datadir parameter to mysqld @item Add missing @code{<row>} tags for @code{mysqldump} XML output. @item Fixed problem with @code{crash-me} and @code{gcc} 3.0.4. innobase/btr/btr0cur.c +25 −0 Original line number Diff line number Diff line Loading @@ -302,6 +302,9 @@ btr_cur_search_to_nth_level( rw_lock_s_unlock(&btr_search_latch); } /* Store the position of the tree latch we push to mtr so that we know how to release it when we have latched leaf node(s) */ savepoint = mtr_set_savepoint(mtr); tree = index->tree; Loading Loading @@ -506,12 +509,18 @@ btr_cur_open_at_index_side( ulint root_height = 0; /* remove warning */ rec_t* node_ptr; ulint estimate; ulint savepoint; estimate = latch_mode & BTR_ESTIMATE; latch_mode = latch_mode & ~BTR_ESTIMATE; tree = index->tree; /* Store the position of the tree latch we push to mtr so that we know how to release it when we have latched the leaf node */ savepoint = mtr_set_savepoint(mtr); if (latch_mode == BTR_MODIFY_TREE) { mtr_x_lock(dict_tree_get_lock(tree), mtr); } else { Loading Loading @@ -544,6 +553,22 @@ btr_cur_open_at_index_side( if (height == 0) { btr_cur_latch_leaves(tree, page, space, page_no, latch_mode, cursor, mtr); /* In versions <= 3.23.52 we had forgotten to release the tree latch here. If in an index scan we had to scan far to find a record visible to the current transaction, that could starve others waiting for the tree latch. */ if ((latch_mode != BTR_MODIFY_TREE) && (latch_mode != BTR_CONT_MODIFY_TREE)) { /* Release the tree s-latch */ mtr_release_s_latch_at_savepoint( mtr, savepoint, dict_tree_get_lock(tree)); } } if (from_left) { Loading innobase/os/os0file.c +1 −1 Original line number Diff line number Diff line Loading @@ -2278,7 +2278,7 @@ os_aio_simulated_handle( ut_print_timestamp(stderr); fprintf(stderr, " InnoDB: ERROR: The page to be written seems corrupt!\n"); page_print(combined_buf + len2); buf_page_print(combined_buf + len2); fprintf(stderr, "InnoDB: ERROR: The page to be written seems corrupt!\n"); } Loading innobase/os/os0sync.c +6 −0 Original line number Diff line number Diff line Loading @@ -49,6 +49,12 @@ os_event_create( TRUE, /* Manual reset */ FALSE, /* Initial state nonsignaled */ name); if (!event) { fprintf(stderr, "InnoDB: Could not create a Windows event semaphore; Windows error %lu\n", (ulint)GetLastError()); } ut_a(event); return(event); Loading innobase/srv/srv0srv.c +11 −2 Original line number Diff line number Diff line Loading @@ -2825,7 +2825,11 @@ srv_master_thread( srv_main_thread_op_info = (char*)"purging"; if (srv_fast_shutdown && srv_shutdown_state > 0) { n_pages_purged = 0; } else { n_pages_purged = trx_purge(); } srv_main_thread_op_info = (char*)"reserving kernel mutex"; Loading @@ -2837,7 +2841,12 @@ srv_master_thread( mutex_exit(&kernel_mutex); srv_main_thread_op_info = (char*)"doing insert buffer merge"; if (srv_fast_shutdown && srv_shutdown_state > 0) { n_bytes_merged = 0; } else { n_bytes_merged = ibuf_contract_for_n_pages(TRUE, 20); } srv_main_thread_op_info = (char*)"reserving kernel mutex"; Loading Loading
Docs/manual.texi +3 −0 Original line number Diff line number Diff line Loading @@ -51289,6 +51289,9 @@ Linux-x86 binaries. @itemize @bullet @item Fixed buffer overflow problem if someone specified a too long datadir parameter to mysqld @item Add missing @code{<row>} tags for @code{mysqldump} XML output. @item Fixed problem with @code{crash-me} and @code{gcc} 3.0.4.
innobase/btr/btr0cur.c +25 −0 Original line number Diff line number Diff line Loading @@ -302,6 +302,9 @@ btr_cur_search_to_nth_level( rw_lock_s_unlock(&btr_search_latch); } /* Store the position of the tree latch we push to mtr so that we know how to release it when we have latched leaf node(s) */ savepoint = mtr_set_savepoint(mtr); tree = index->tree; Loading Loading @@ -506,12 +509,18 @@ btr_cur_open_at_index_side( ulint root_height = 0; /* remove warning */ rec_t* node_ptr; ulint estimate; ulint savepoint; estimate = latch_mode & BTR_ESTIMATE; latch_mode = latch_mode & ~BTR_ESTIMATE; tree = index->tree; /* Store the position of the tree latch we push to mtr so that we know how to release it when we have latched the leaf node */ savepoint = mtr_set_savepoint(mtr); if (latch_mode == BTR_MODIFY_TREE) { mtr_x_lock(dict_tree_get_lock(tree), mtr); } else { Loading Loading @@ -544,6 +553,22 @@ btr_cur_open_at_index_side( if (height == 0) { btr_cur_latch_leaves(tree, page, space, page_no, latch_mode, cursor, mtr); /* In versions <= 3.23.52 we had forgotten to release the tree latch here. If in an index scan we had to scan far to find a record visible to the current transaction, that could starve others waiting for the tree latch. */ if ((latch_mode != BTR_MODIFY_TREE) && (latch_mode != BTR_CONT_MODIFY_TREE)) { /* Release the tree s-latch */ mtr_release_s_latch_at_savepoint( mtr, savepoint, dict_tree_get_lock(tree)); } } if (from_left) { Loading
innobase/os/os0file.c +1 −1 Original line number Diff line number Diff line Loading @@ -2278,7 +2278,7 @@ os_aio_simulated_handle( ut_print_timestamp(stderr); fprintf(stderr, " InnoDB: ERROR: The page to be written seems corrupt!\n"); page_print(combined_buf + len2); buf_page_print(combined_buf + len2); fprintf(stderr, "InnoDB: ERROR: The page to be written seems corrupt!\n"); } Loading
innobase/os/os0sync.c +6 −0 Original line number Diff line number Diff line Loading @@ -49,6 +49,12 @@ os_event_create( TRUE, /* Manual reset */ FALSE, /* Initial state nonsignaled */ name); if (!event) { fprintf(stderr, "InnoDB: Could not create a Windows event semaphore; Windows error %lu\n", (ulint)GetLastError()); } ut_a(event); return(event); Loading
innobase/srv/srv0srv.c +11 −2 Original line number Diff line number Diff line Loading @@ -2825,7 +2825,11 @@ srv_master_thread( srv_main_thread_op_info = (char*)"purging"; if (srv_fast_shutdown && srv_shutdown_state > 0) { n_pages_purged = 0; } else { n_pages_purged = trx_purge(); } srv_main_thread_op_info = (char*)"reserving kernel mutex"; Loading @@ -2837,7 +2841,12 @@ srv_master_thread( mutex_exit(&kernel_mutex); srv_main_thread_op_info = (char*)"doing insert buffer merge"; if (srv_fast_shutdown && srv_shutdown_state > 0) { n_bytes_merged = 0; } else { n_bytes_merged = ibuf_contract_for_n_pages(TRUE, 20); } srv_main_thread_op_info = (char*)"reserving kernel mutex"; Loading