fil0fil.c:

Add assertions to check that we do not go out of bounds of io thread status array
os0file.c:
  Fix memory corruption (assertion failure on line 244 of sync0sync.c) reported by Miguel in a Windows build of MySQL-4.1.2. The bug is present in all InnoDB versions in Windows, but it depends on how the linker places a static array in srv0srv.c, whether the bug shows itself. 4 bytes were overwritten with a pointer to a statically allocated string: 'get windows aio return value'.


innobase/os/os0file.c:
  Fix memory corruption (assertion failure on line 244 of sync0sync.c) reported by Miguel in a Windows build of MySQL-4.1.2. The bug is present in all InnoDB versions in Windows, but it depends on how the linker places a static array in srv0srv.c, whether the bug shows itself. 4 bytes were overwritten with a pointer to a statically allocated string: 'get windows aio return value'.
innobase/fil/fil0fil.c:
  Add assertions to check that we do not go out of bounds of io thread status array
This commit is contained in:
unknown 2004-03-31 18:06:13 +03:00
commit f4b6dab211
2 changed files with 19 additions and 4 deletions

View file

@ -1331,6 +1331,7 @@ fil_aio_wait(
ut_ad(fil_validate());
if (os_aio_use_native_aio) {
ut_a(segment < SRV_MAX_N_IO_THREADS);
srv_io_thread_op_info[segment] = (char *) "native aio handle";
#ifdef WIN_ASYNC_IO
ret = os_aio_windows_handle(segment, 0, &fil_node, &message,
@ -1342,6 +1343,7 @@ fil_aio_wait(
ut_error;
#endif
} else {
ut_a(segment < SRV_MAX_N_IO_THREADS);
srv_io_thread_op_info[segment] =(char *)"simulated aio handle";
ret = os_aio_simulated_handle(segment, (void**) &fil_node,
@ -1350,6 +1352,7 @@ fil_aio_wait(
ut_a(ret);
ut_a(segment < SRV_MAX_N_IO_THREADS);
srv_io_thread_op_info[segment] = (char *) "complete io for fil node";
mutex_enter(&(system->mutex));
@ -1363,10 +1366,12 @@ fil_aio_wait(
/* Do the i/o handling */
if (buf_pool_is_block(message)) {
ut_a(segment < SRV_MAX_N_IO_THREADS);
srv_io_thread_op_info[segment] =
(char *) "complete io for buf page";
buf_page_io_complete(message);
} else {
ut_a(segment < SRV_MAX_N_IO_THREADS);
srv_io_thread_op_info[segment] =(char *) "complete io for log";
log_io_complete(message);
}