Bug#20422680 BUF_POOL_WATCH_SET WOULD CRASH TRYING
TO USE A SECOND WATCH PAGE PER INSTANCE Description: BUF_POOL_WATCH_SIZE is also initialized to number of purge threads. so BUF_POOL_WATCH_SIZE will never be lesser than number of purge threads. From the code, there is no scope for purge thread to skip buf_pool_watch_unset. So there can be at most one buffer pool watch active per purge thread. In other words, there is no chance for purge thread instance to hold a watch when setting another watch. Solution: Adding code comments to clarify the issue. Reviewed-by: Marko Mäkelä <marko.makela@oracle.com> Approved via Bug page.
This commit is contained in:
parent
26e845c19d
commit
f8eacccf2a
@ -1,6 +1,6 @@
|
||||
/*****************************************************************************
|
||||
|
||||
Copyright (c) 1995, 2014, Oracle and/or its affiliates. All Rights Reserved.
|
||||
Copyright (c) 1995, 2015, Oracle and/or its affiliates. All Rights Reserved.
|
||||
Copyright (c) 2008, Google Inc.
|
||||
|
||||
Portions of this file contain modifications contributed and copyrighted by
|
||||
@ -1528,6 +1528,9 @@ buf_pool_watch_set(
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
/* The maximum number of purge threads should never exceed
|
||||
BUF_POOL_WATCH_SIZE. So there is no way for purge thread
|
||||
instance to hold a watch when setting another watch. */
|
||||
for (i = 0; i < BUF_POOL_WATCH_SIZE; i++) {
|
||||
bpage = &buf_pool->watch[i];
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user