diff options
author | Marko Mäkelä <marko.makela@mariadb.com> | 2018-01-29 18:09:33 +0200 |
---|---|---|
committer | Marko Mäkelä <marko.makela@mariadb.com> | 2018-01-29 18:09:33 +0200 |
commit | d04fcbbaed9044f16a59ba7eea866e1b78b675a5 (patch) | |
tree | c5bd2814f9aef990f06df35d8ca49550ff794ef1 /mysys/my_alloc.c | |
parent | 2749d2509661c2addbf78ec5f5b2218ff7301b0f (diff) | |
parent | b76881a23cff7aeef1126560410613d9d7bbbb7d (diff) | |
download | mariadb-git-d04fcbbaed9044f16a59ba7eea866e1b78b675a5.tar.gz |
WIP Merge 10.0 into 10.1
Bootstrap fails as follows:
Logging: /mariadb/10.1/mysql-test/mysql-test-run.pl --mem --parallel=auto --force --retry=0 --suite=innodb
vardir: /mariadb/10.1/build/mysql-test/var
Removing old var directory...
Creating var directory '/mariadb/10.1/build/mysql-test/var'...
- symlinking 'var' to '/dev/shm/var_auto_CT5B'
Checking supported features...
mysqld: /mariadb/10.1/sql/sql_cache.cc:2767: void Query_cache::free_cache(): Assertion `m_cache_lock_status == LOCKED_NO_WAIT || m_cache_status == DISABLE_REQUEST' failed.
180129 18:05:25 [ERROR] mysqld got signal 6 ;
Diffstat (limited to 'mysys/my_alloc.c')
-rw-r--r-- | mysys/my_alloc.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/mysys/my_alloc.c b/mysys/my_alloc.c index 7275f602525..1b0ef857afa 100644 --- a/mysys/my_alloc.c +++ b/mysys/my_alloc.c @@ -26,6 +26,8 @@ #define MALLOC_FLAG(A) ((A & 1) ? MY_THREAD_SPECIFIC : 0) +#define TRASH_MEM(X) TRASH_FREE(((char*)(X) + ((X)->size-(X)->left)), (X)->left) + /* Initialize memory root @@ -73,12 +75,13 @@ void init_alloc_root(MEM_ROOT *mem_root, size_t block_size, if (pre_alloc_size) { if ((mem_root->free= mem_root->pre_alloc= - (USED_MEM*) my_malloc(pre_alloc_size+ ALIGN_SIZE(sizeof(USED_MEM)), - MYF(my_flags)))) + (USED_MEM*) my_malloc(pre_alloc_size + ALIGN_SIZE(sizeof(USED_MEM)), + MYF(my_flags)))) { mem_root->free->size= pre_alloc_size+ALIGN_SIZE(sizeof(USED_MEM)); mem_root->free->left= pre_alloc_size; mem_root->free->next= 0; + TRASH_MEM(mem_root->free); } } #endif @@ -148,6 +151,7 @@ void reset_root_defaults(MEM_ROOT *mem_root, size_t block_size, mem->left= pre_alloc_size; mem->next= *prev; *prev= mem_root->pre_alloc= mem; + TRASH_MEM(mem); } else { @@ -248,6 +252,7 @@ void *alloc_root(MEM_ROOT *mem_root, size_t length) next->size= get_size; next->left= get_size-ALIGN_SIZE(sizeof(USED_MEM)); *prev=next; + TRASH_MEM(next); } point= (uchar*) ((char*) next+ (next->size-next->left)); @@ -316,8 +321,6 @@ void *multi_alloc_root(MEM_ROOT *root, ...) DBUG_RETURN((void*) start); } -#define TRASH_MEM(X) TRASH(((char*)(X) + ((X)->size-(X)->left)), (X)->left) - /* Mark all data in blocks free for reusage */ static inline void mark_blocks_free(MEM_ROOT* root) |