Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
MariaDB
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
d754b571
Commit
d754b571
authored
May 17, 2010
by
Jimmy Yang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix bug #52546, crash on shutdown of plugin with innodb_use_sys_malloc=0.
rb://339
, approved by Sunny Bains.
parent
a6142ed8
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
37 additions
and
34 deletions
+37
-34
storage/innobase/include/mem0pool.h
storage/innobase/include/mem0pool.h
+0
-12
storage/innobase/mem/mem0mem.c
storage/innobase/mem/mem0mem.c
+6
-6
storage/innobase/mem/mem0pool.c
storage/innobase/mem/mem0pool.c
+26
-15
storage/innobase/srv/srv0start.c
storage/innobase/srv/srv0start.c
+5
-1
No files found.
storage/innobase/include/mem0pool.h
View file @
d754b571
...
...
@@ -100,18 +100,6 @@ mem_pool_get_reserved(
/*==================*/
mem_pool_t
*
pool
);
/*!< in: memory pool */
/********************************************************************//**
Reserves the mem pool mutex. */
UNIV_INTERN
void
mem_pool_mutex_enter
(
void
);
/*======================*/
/********************************************************************//**
Releases the mem pool mutex. */
UNIV_INTERN
void
mem_pool_mutex_exit
(
void
);
/*=====================*/
/********************************************************************//**
Validates a memory pool.
@return TRUE if ok */
UNIV_INTERN
...
...
storage/innobase/mem/mem0mem.c
View file @
d754b571
...
...
@@ -367,7 +367,7 @@ mem_heap_create_block(
block
->
line
=
line
;
#ifdef MEM_PERIODIC_CHECK
m
em_pool_mutex_enter
(
);
m
utex_enter
(
&
(
mem_comm_pool
->
mutex
)
);
if
(
!
mem_block_list_inited
)
{
mem_block_list_inited
=
TRUE
;
...
...
@@ -376,7 +376,7 @@ mem_heap_create_block(
UT_LIST_ADD_LAST
(
mem_block_list
,
mem_block_list
,
block
);
m
em_pool_mutex_exit
(
);
m
utex_exit
(
&
(
mem_comm_pool
->
mutex
)
);
#endif
mem_block_set_len
(
block
,
len
);
mem_block_set_type
(
block
,
type
);
...
...
@@ -479,11 +479,11 @@ mem_heap_block_free(
UT_LIST_REMOVE
(
list
,
heap
->
base
,
block
);
#ifdef MEM_PERIODIC_CHECK
m
em_pool_mutex_enter
(
);
m
utex_enter
(
&
(
mem_comm_pool
->
mutex
)
);
UT_LIST_REMOVE
(
mem_block_list
,
mem_block_list
,
block
);
m
em_pool_mutex_exit
(
);
m
utex_exit
(
&
(
mem_comm_pool
->
mutex
)
);
#endif
ut_ad
(
heap
->
total_size
>=
block
->
len
);
...
...
@@ -556,7 +556,7 @@ mem_validate_all_blocks(void)
{
mem_block_t
*
block
;
m
em_pool_mutex_enter
(
);
m
utex_enter
(
&
(
mem_comm_pool
->
mutex
)
);
block
=
UT_LIST_GET_FIRST
(
mem_block_list
);
...
...
@@ -568,6 +568,6 @@ mem_validate_all_blocks(void)
block
=
UT_LIST_GET_NEXT
(
mem_block_list
,
block
);
}
m
em_pool_mutex_exit
(
);
m
utex_exit
(
&
(
mem_comm_pool
->
mutex
)
);
}
#endif
storage/innobase/mem/mem0pool.c
View file @
d754b571
...
...
@@ -34,6 +34,7 @@ Created 5/12/1997 Heikki Tuuri
#include "ut0lst.h"
#include "ut0byte.h"
#include "mem0mem.h"
#include "srv0start.h"
/* We would like to use also the buffer frames to allocate memory. This
would be desirable, because then the memory consumption of the database
...
...
@@ -126,23 +127,33 @@ mysql@lists.mysql.com */
UNIV_INTERN
ulint
mem_n_threads_inside
=
0
;
/********************************************************************//**
Reserves the mem pool mutex. */
UNIV_INTERN
Reserves the mem pool mutex if we are not in server shutdown. Use
this function only in memory free functions, since only memory
free functions are used during server shutdown. */
UNIV_INLINE
void
mem_pool_mutex_enter
(
void
)
/*======================*/
mem_pool_mutex_enter
(
/*=================*/
mem_pool_t
*
pool
)
/*!< in: memory pool */
{
mutex_enter
(
&
(
mem_comm_pool
->
mutex
));
if
(
srv_shutdown_state
<
SRV_SHUTDOWN_EXIT_THREADS
)
{
mutex_enter
(
&
(
pool
->
mutex
));
}
}
/********************************************************************//**
Releases the mem pool mutex. */
UNIV_INTERN
Releases the mem pool mutex if we are not in server shutdown. As
its corresponding mem_pool_mutex_enter() function, use it only
in memory free functions */
UNIV_INLINE
void
mem_pool_mutex_exit
(
void
)
/*=====================*/
mem_pool_mutex_exit
(
/*================*/
mem_pool_t
*
pool
)
/*!< in: memory pool */
{
mutex_exit
(
&
(
mem_comm_pool
->
mutex
));
if
(
srv_shutdown_state
<
SRV_SHUTDOWN_EXIT_THREADS
)
{
mutex_exit
(
&
(
pool
->
mutex
));
}
}
/********************************************************************//**
...
...
@@ -572,7 +583,7 @@ mem_area_free(
n
=
ut_2_log
(
size
);
m
utex_enter
(
&
(
pool
->
mutex
)
);
m
em_pool_mutex_enter
(
pool
);
mem_n_threads_inside
++
;
ut_a
(
mem_n_threads_inside
==
1
);
...
...
@@ -600,7 +611,7 @@ mem_area_free(
pool
->
reserved
+=
ut_2_exp
(
n
);
mem_n_threads_inside
--
;
m
utex_exit
(
&
(
pool
->
mutex
)
);
m
em_pool_mutex_exit
(
pool
);
mem_area_free
(
new_ptr
,
pool
);
...
...
@@ -616,7 +627,7 @@ mem_area_free(
}
mem_n_threads_inside
--
;
m
utex_exit
(
&
(
pool
->
mutex
)
);
m
em_pool_mutex_exit
(
pool
);
ut_ad
(
mem_pool_validate
(
pool
));
}
...
...
@@ -635,7 +646,7 @@ mem_pool_validate(
ulint
free
;
ulint
i
;
m
utex_enter
(
&
(
pool
->
mutex
)
);
m
em_pool_mutex_enter
(
pool
);
free
=
0
;
...
...
@@ -663,7 +674,7 @@ mem_pool_validate(
ut_a
(
free
+
pool
->
reserved
==
pool
->
size
);
m
utex_exit
(
&
(
pool
->
mutex
)
);
m
em_pool_mutex_exit
(
pool
);
return
(
TRUE
);
}
...
...
storage/innobase/srv/srv0start.c
View file @
d754b571
...
...
@@ -2093,9 +2093,13 @@ innobase_shutdown_for_mysql(void)
pars_lexer_close
();
log_mem_free
();
buf_pool_free
(
srv_buf_pool_instances
);
ut_free_all_mem
();
mem_close
();
/* ut_free_all_mem() frees all allocated memory not freed yet
in shutdown, and it will also free the ut_list_mutex, so it
should be the last one for all operation */
ut_free_all_mem
();
if
(
os_thread_count
!=
0
||
os_event_count
!=
0
||
os_mutex_count
!=
0
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment