support asan in 3.1_opensource_release
This commit is contained in:
		@ -174,7 +174,9 @@ void __attribute__((constructor(MALLOC_INIT_PRIORITY))) init_global_memory_pool(
 | 
			
		||||
    return OB_SUCCESS;
 | 
			
		||||
  };
 | 
			
		||||
  global_default_allocator = ObMallocAllocator::get_instance();
 | 
			
		||||
#ifndef OB_USE_ASAN
 | 
			
		||||
  abort_unless(OB_SUCCESS == install_ob_signal_handler());
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void __attribute__((destructor(MALLOC_INIT_PRIORITY))) deinit_global_memory_pool()
 | 
			
		||||
 | 
			
		||||
@ -234,8 +234,10 @@ int ObServer::init(const ObServerOptions& opts, const ObPLogWriterCfg& log_cfg)
 | 
			
		||||
    LOG_ERROR("should never reach here!", K(ret));
 | 
			
		||||
  } else if (OB_FAIL(init_restore_ctx())) {
 | 
			
		||||
    LOG_ERROR("init restore context fail", K(ret));
 | 
			
		||||
#ifndef OB_USE_ASAN
 | 
			
		||||
  } else if (OB_FAIL(ObMemoryDump::get_instance().init())) {
 | 
			
		||||
    LOG_ERROR("init memory dumper fail", K(ret));
 | 
			
		||||
#endif
 | 
			
		||||
  } else if (OB_FAIL(ObDagScheduler::get_instance().init(OBSERVER.get_self()))) {
 | 
			
		||||
    LOG_ERROR("init scheduler fail, ", K(ret));
 | 
			
		||||
  } else if (OB_FAIL(init_global_kvcache())) {
 | 
			
		||||
 | 
			
		||||
@ -221,8 +221,10 @@ int ObSignalHandle::deal_signals(int signum)
 | 
			
		||||
      break;
 | 
			
		||||
    }
 | 
			
		||||
    case 60: {
 | 
			
		||||
#ifndef OB_USE_ASAN
 | 
			
		||||
      send_request_and_wait(VERB_LEVEL_1, syscall(SYS_gettid) /*exclude_id*/);
 | 
			
		||||
      break;
 | 
			
		||||
#endif
 | 
			
		||||
    }
 | 
			
		||||
    case 62: {
 | 
			
		||||
      // RESP_DUMP_TRACE_TO_FILE();
 | 
			
		||||
 | 
			
		||||
@ -97,17 +97,21 @@ int ObSelfBufferWriter::ensure_space(int64_t size)
 | 
			
		||||
void ObSelfBufferWriter::free()
 | 
			
		||||
{
 | 
			
		||||
  if (NULL != data_) {
 | 
			
		||||
#ifndef OB_USE_ASAN
 | 
			
		||||
    if (macro_block_mem_ctx_.get_allocator().contains(data_)) {
 | 
			
		||||
      macro_block_mem_ctx_.free(data_);
 | 
			
		||||
    } else {
 | 
			
		||||
      data_ = NULL;
 | 
			
		||||
    }
 | 
			
		||||
#endif
 | 
			
		||||
    if (NULL != data_) {
 | 
			
		||||
      if (is_aligned_) {
 | 
			
		||||
        ob_free_align(data_);
 | 
			
		||||
      } else {
 | 
			
		||||
        ob_free(data_);
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
      data_ = NULL;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
}  // namespace blocksstable
 | 
			
		||||
}  // namespace oceanbase
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user