MB-20586: Update ep-engine to use cb_malloc memory API 13/67313/8
authorDave Rigby <daver@couchbase.com>
Fri, 26 Aug 2016 12:37:57 +0000 (13:37 +0100)
committerDave Rigby <daver@couchbase.com>
Tue, 13 Sep 2016 10:23:41 +0000 (10:23 +0000)
Similar to changes in memcached, update all C-style memory allocation
uses to use cb_malloc instead of raw system malloc.

Change-Id: Ic9bce029c34f74e161aed20b99129985264e0d4c
Reviewed-on: http://review.couchbase.org/67313
Well-Formed: buildbot <build@couchbase.com>
Reviewed-by: Daniel Owen <owend@couchbase.com>
Tested-by: buildbot <build@couchbase.com>
18 files changed:
src/configuration.cc
src/couch-kvstore/couch-kvstore.cc
src/ep_engine.cc
src/forest-kvstore/forest-kvstore.cc
src/stored-value.cc
src/stored-value.h
tests/ep_test_apis.cc
tests/ep_testsuite.cc
tests/ep_testsuite_basic.cc
tests/ep_testsuite_common.cc
tests/ep_testsuite_dcp.cc
tests/ep_testsuite_tap.cc
tests/ep_testsuite_xdcr.cc
tests/module_tests/defragmenter_test.cc
tests/module_tests/hash_table_test.cc
tests/module_tests/timing_tests.cc
tests/module_tests/vbucket_test.cc
tests/suite_stubs.c

index 45ef71e..44baa5b 100644 (file)
@@ -23,6 +23,8 @@
 #include <sstream>
 #include <vector>
 
+#include <platform/cb_malloc.h>
+
 #include "configuration.h"
 
 #ifdef AUTOCONF_BUILD
@@ -266,12 +268,12 @@ void Configuration::setParameter(const std::string &key, const char *value) {
 
     if (attributes.find(key) != attributes.end() && attributes[key].datatype
             == DT_STRING) {
-        free((void*)attributes[key].val.v_string);
+        cb_free((void*)attributes[key].val.v_string);
     }
     attributes[key].datatype = DT_STRING;
     attributes[key].val.v_string = NULL;
     if (value != NULL) {
-        attributes[key].val.v_string = strdup(value);
+        attributes[key].val.v_string = cb_strdup(value);
     }
 
     std::vector<ValueChangedListener*> copy(attributes[key].changeListener);
@@ -403,7 +405,7 @@ bool Configuration::parseConfiguration(const char *str,
             }
 
             if (items[ii].datatype == DT_STRING) {
-                free(*items[ii].value.dt_string);
+                cb_free(*items[ii].value.dt_string);
             }
         }
     }
@@ -427,7 +429,7 @@ Configuration::~Configuration() {
 
         delete iter->second.validator;
         if (iter->second.datatype == DT_STRING) {
-            free((void*)iter->second.val.v_string);
+            cb_free((void*)iter->second.val.v_string);
         }
     }
 }
index 7d3f935..9b4d1cc 100644 (file)
@@ -34,6 +34,7 @@
 #include <iostream>
 #include <list>
 #include <map>
+#include <platform/cb_malloc.h>
 #include <platform/checked_snprintf.h>
 #include <string>
 #include <utility>
@@ -623,11 +624,11 @@ static int edit_docinfo_hook(DocInfo **info, const sized_buf *item) {
                 (*info)->content_meta) {
             size_t uncompr_len;
             snappy_uncompressed_length(item->buf, item->size, &uncompr_len);
-            char *dbuf = (char *) malloc(uncompr_len);
+            char *dbuf = (char *) cb_malloc(uncompr_len);
             snappy_uncompress(item->buf, item->size, dbuf, &uncompr_len);
             data = (const unsigned char*)dbuf;
             ret = checkUTF8JSON(data, uncompr_len);
-            free(dbuf);
+            cb_free(dbuf);
         } else {
             data = (const unsigned char*)item->buf;
             ret = checkUTF8JSON(data, item->size);
@@ -640,7 +641,7 @@ static int edit_docinfo_hook(DocInfo **info, const sized_buf *item) {
             datatype = PROTOCOL_BINARY_RAW_BYTES;
         }
 
-        DocInfo *docinfo = (DocInfo *) calloc (1,
+        DocInfo *docinfo = (DocInfo *) cb_calloc(1,
                                                sizeof(DocInfo) +
                                                (*info)->id.size +
                                                (*info)->rev_meta.size +
@@ -684,7 +685,7 @@ static int edit_docinfo_hook(DocInfo **info, const sized_buf *item) {
     } else if ((*info)->rev_meta.size == V1_META_LEN) {
         // Metadata doesn't have conflict_resolution_mode,
         // provision space for this flag.
-        DocInfo *docinfo = (DocInfo *) calloc (1,
+        DocInfo *docinfo = (DocInfo *) cb_calloc(1,
                                                sizeof(DocInfo) +
                                                (*info)->id.size +
                                                (*info)->rev_meta.size +
index c6022e4..393010a 100644 (file)
@@ -30,6 +30,7 @@
 #include <fstream>
 #include <iostream>
 #include <limits>
+#include <platform/cb_malloc.h>
 #include <platform/checked_snprintf.h>
 #include <string>
 #include <vector>
@@ -5516,7 +5517,7 @@ ENGINE_ERROR_CODE EventuallyPersistentEngine::setWithMeta(const void* cookie,
         delete itm;
         ++stats.numOpsGetMetaOnSetWithMeta;
         if (!startTimeC) {
-            startTimeC = malloc(sizeof(hrtime_t));
+            startTimeC = cb_malloc(sizeof(hrtime_t));
             memcpy(startTimeC, &startTime, sizeof(hrtime_t));
             storeEngineSpecific(cookie, startTimeC);
         }
@@ -5533,7 +5534,7 @@ ENGINE_ERROR_CODE EventuallyPersistentEngine::setWithMeta(const void* cookie,
     }
 
     if (startTimeC) {
-        free(startTimeC);
+        cb_free(startTimeC);
         startTimeC = NULL;
         storeEngineSpecific(cookie, startTimeC);
     }
@@ -6077,19 +6078,19 @@ public:
     AllKeysCallback() {
         length = 0;
         buffersize = (avgKeySize + sizeof(uint16_t)) * expNumKeys;
-        buffer = (char *) malloc(buffersize);
+        buffer = (char *) cb_malloc(buffersize);
     }
 
     ~AllKeysCallback() {
-        free(buffer);
+        cb_free(buffer);
     }
 
     void callback(uint16_t& len, char*& buf) {
         if (length + len + sizeof(uint16_t) > buffersize) {
             buffersize *= 2;
-            char *temp = (char *) malloc (buffersize);
+            char *temp = (char *) cb_malloc(buffersize);
             memcpy (temp, buffer, length);
-            free (buffer);
+            cb_free(buffer);
             buffer = temp;
         }
         len = htons(len);
index 4e08306..8a7724d 100644 (file)
@@ -20,6 +20,7 @@
 #include "common.h"
 
 #include <sys/stat.h>
+#include <platform/cb_malloc.h>
 #include <platform/dirutils.h>
 #include <vbucket.h>
 #include <JSON_checker.h>
@@ -923,8 +924,8 @@ ForestKVStore::getAllKeys(uint16_t vbid, std::string &start_key, uint32_t count,
                   fdb_error_msg(status));
     }
 
-    rdoc->key = malloc(MAX_KEY_LENGTH);
-    rdoc->meta = malloc(FORESTDB_METADATA_SIZE);
+    rdoc->key = cb_malloc(MAX_KEY_LENGTH);
+    rdoc->meta = cb_malloc(FORESTDB_METADATA_SIZE);
 
     for (uint32_t curr_count = 0; curr_count < count; curr_count++) {
         status = fdb_iterator_get_metaonly(fdb_iter, &rdoc);
@@ -1229,8 +1230,8 @@ scan_error_t ForestKVStore::scan(ScanContext *ctx) {
          return scan_failed;
      }
      // Pre-allocate key and meta data as their max sizes are known.
-     rdoc->key = malloc(MAX_KEY_LENGTH);
-     rdoc->meta = malloc(FORESTDB_METADATA_SIZE);
+     rdoc->key = cb_malloc(MAX_KEY_LENGTH);
+     rdoc->meta = cb_malloc(FORESTDB_METADATA_SIZE);
      // Document body will be allocated by fdb_iterator_get API below.
      rdoc->body = NULL;
      do {
@@ -1257,7 +1258,7 @@ scan_error_t ForestKVStore::scan(ScanContext *ctx) {
          cl->callback(lookup);
          if (cl->getStatus() == ENGINE_KEY_EEXISTS) {
              ctx->lastReadSeqno = static_cast<uint64_t>(rdoc->seqnum);
-             free(rdoc->body);
+             cb_free(rdoc->body);
              rdoc->body = NULL;
              continue;
          } else if (cl->getStatus() == ENGINE_ENOMEM) {
@@ -1311,7 +1312,7 @@ scan_error_t ForestKVStore::scan(ScanContext *ctx) {
          GetValue rv(it, ENGINE_SUCCESS, -1, onlyKeys);
          cb->callback(rv);
 
-         free(rdoc->body);
+         cb_free(rdoc->body);
          rdoc->body = NULL;
 
          if (cb->getStatus() == ENGINE_ENOMEM) {
@@ -1450,8 +1451,8 @@ RollbackResult ForestKVStore::rollback(uint16_t vbid, uint64_t rollbackSeqno,
    std::vector<std::string> rollbackKeys;
    fdb_doc *rdoc = NULL;
    fdb_doc_create(&rdoc, NULL, 0, NULL, 0, NULL, 0);
-   rdoc->key = malloc(MAX_KEY_LENGTH);
-   rdoc->meta = malloc(FORESTDB_METADATA_SIZE);
+   rdoc->key = cb_malloc(MAX_KEY_LENGTH);
+   rdoc->meta = cb_malloc(FORESTDB_METADATA_SIZE);
    do {
        status = fdb_iterator_get_metaonly(fdb_iter, &rdoc);
        if (status != FDB_RESULT_SUCCESS) {
index d474379..85682f8 100644 (file)
@@ -19,6 +19,7 @@
 
 #include <limits>
 #include <string>
+#include <platform/cb_malloc.h>
 
 #include "stored-value.h"
 
@@ -359,7 +360,7 @@ void HashTable::resize(size_t newSize) {
     }
 
     // Get a place for the new items.
-    StoredValue **newValues = static_cast<StoredValue**>(calloc(newSize,
+    StoredValue **newValues = static_cast<StoredValue**>(cb_calloc(newSize,
                                                         sizeof(StoredValue*)));
     // If we can't allocate memory, don't move stuff around.
     if (!newValues) {
@@ -387,7 +388,7 @@ void HashTable::resize(size_t newSize) {
     }
 
     // values still points to the old (now empty) table.
-    free(values);
+    cb_free(values);
     values = newValues;
 
     stats.memOverhead.fetch_add(memorySize());
index 14ef63c..19d8e80 100644 (file)
@@ -23,6 +23,8 @@
 #include "item_pager.h"
 #include "utility.h"
 
+#include <platform/cb_malloc.h>
+
 // Forward declaration for StoredValue
 class HashTable;
 class StoredValueFactory;
@@ -840,7 +842,7 @@ public:
     {
         size = HashTable::getNumBuckets(s);
         n_locks = HashTable::getNumLocks(l);
-        values = static_cast<StoredValue**>(calloc(size, sizeof(StoredValue*)));
+        values = static_cast<StoredValue**>(cb_calloc(size, sizeof(StoredValue*)));
         mutexes = new Mutex[n_locks];
         activeState = true;
     }
@@ -856,7 +858,7 @@ public:
 #endif
         }
         delete []mutexes;
-        free(values);
+        cb_free(values);
         values = NULL;
     }
 
index bc50a14..7703113 100644 (file)
@@ -20,6 +20,7 @@
 #include "ep_testsuite_common.h"
 
 #include <memcached/util.h>
+#include <platform/cb_malloc.h>
 #include <platform/platform.h>
 #include <stdlib.h>
 #include <string.h>
@@ -312,7 +313,7 @@ protocol_binary_request_header* createPacket(uint8_t opcode,
                                              uint16_t nmeta) {
     char *pkt_raw;
     uint32_t headerlen = sizeof(protocol_binary_request_header);
-    pkt_raw = static_cast<char*>(calloc(1, headerlen + extlen + keylen + vallen + nmeta));
+    pkt_raw = static_cast<char*>(cb_calloc(1, headerlen + extlen + keylen + vallen + nmeta));
     cb_assert(pkt_raw);
     protocol_binary_request_header *req =
         (protocol_binary_request_header*)pkt_raw;
@@ -362,7 +363,7 @@ void set_drift_counter_state(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *h1,
     h1->unknown_command(h, NULL, request, add_response);
     check(last_status == PROTOCOL_BINARY_RESPONSE_SUCCESS,
             "Expected success for CMD_SET_DRIFT_COUNTER_STATE");
-    free(request);
+    cb_free(request);
     delete[] ext;
 }
 
@@ -406,7 +407,7 @@ void add_with_meta(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *h1, const char *key,
     }
     check(h1->unknown_command(h, NULL, pkt, add_response) == ENGINE_SUCCESS,
           "Expected to be able to store with meta");
-    free(pkt);
+    cb_free(pkt);
     delete[] ext;
 }
 
@@ -429,14 +430,14 @@ void changeVBFilter(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *h1, std::string name,
                        name.length(), value.str().data(), value.str().length());
     check(h1->unknown_command(h, NULL, request, add_response) == ENGINE_SUCCESS,
           "Failed to change the TAP VB filter.");
-    free(request);
+    cb_free(request);
 }
 
 void createCheckpoint(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *h1) {
     protocol_binary_request_header *request = createPacket(PROTOCOL_BINARY_CMD_CREATE_CHECKPOINT);
     check(h1->unknown_command(h, NULL, request, add_response) == ENGINE_SUCCESS,
           "Failed to create a new checkpoint.");
-    free(request);
+    cb_free(request);
 }
 
 ENGINE_ERROR_CODE del(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *h1, const char *key,
@@ -487,7 +488,7 @@ void del_with_meta(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *h1, const char *key,
     }
     check(h1->unknown_command(h, cookie, pkt, add_response_set_del_meta) == ENGINE_SUCCESS,
           "Expected to be able to delete with meta");
-    free(pkt);
+    cb_free(pkt);
     delete[] ext;
 }
 
@@ -502,7 +503,7 @@ void evict_key(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *h1, const char *key,
     check(h1->unknown_command(h, NULL, pkt, add_response) == ENGINE_SUCCESS,
           "Failed to evict key.");
 
-    free(pkt);
+    cb_free(pkt);
     if (expectError) {
         check(last_status == PROTOCOL_BINARY_RESPONSE_KEY_EEXISTS,
               "Expected exists when evicting key.");
@@ -544,7 +545,7 @@ ENGINE_ERROR_CODE checkpointPersistence(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *h1,
     request = createPacket(PROTOCOL_BINARY_CMD_CHECKPOINT_PERSISTENCE, vb, 0, NULL, 0, NULL, 0,
                            (const char *)&checkpoint_id, sizeof(uint64_t));
     ENGINE_ERROR_CODE rv = h1->unknown_command(h, NULL, request, add_response);
-    free(request);
+    cb_free(request);
     return rv;
 }
 
@@ -557,7 +558,7 @@ ENGINE_ERROR_CODE seqnoPersistence(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *h1,
         createPacket(PROTOCOL_BINARY_CMD_SEQNO_PERSISTENCE, vbucket, 0, buffer, 8);
 
     ENGINE_ERROR_CODE rv = h1->unknown_command(h, NULL, request, add_response);
-    free(request);
+    cb_free(request);
     return rv;
 }
 
@@ -572,7 +573,7 @@ void gat(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *h1, const char* key,
 
     check(h1->unknown_command(h, NULL, request, add_response) == ENGINE_SUCCESS,
           "Failed to call gat");
-    free(request);
+    cb_free(request);
 }
 
 bool get_item_info(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *h1, item_info *info,
@@ -616,7 +617,7 @@ void getl(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *h1, const char* key,
 
     check(h1->unknown_command(h, NULL, request, add_response) == ENGINE_SUCCESS,
           "Failed to call getl");
-    free(request);
+    cb_free(request);
 }
 
 bool get_meta(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *h1, const char* key,
@@ -635,7 +636,7 @@ bool get_meta(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *h1, const char* key,
     ENGINE_ERROR_CODE ret = h1->unknown_command(h, NULL, req,
                                                 add_response_get_meta);
     check(ret == ENGINE_SUCCESS, "Expected get_meta call to be successful");
-    free(req);
+    cb_free(req);
     if (last_status == PROTOCOL_BINARY_RESPONSE_SUCCESS) {
         return true;
     }
@@ -659,7 +660,7 @@ void observe(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *h1,
                            value.str().data(), value.str().length());
     check(h1->unknown_command(h, NULL, request, add_response) == ENGINE_SUCCESS,
           "Observe call failed");
-    free(request);
+    cb_free(request);
 }
 
 void observe_seqno(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *h1,
@@ -673,7 +674,7 @@ void observe_seqno(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *h1,
                            NULL, 0, data.str().data(), data.str().length());
     check(h1->unknown_command(h, NULL, request, add_response) == ENGINE_SUCCESS,
           "Observe_seqno call failed");
-    free(request);
+    cb_free(request);
 }
 
 void get_replica(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *h1, const char* key,
@@ -682,7 +683,7 @@ void get_replica(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *h1, const char* key,
     pkt = createPacket(PROTOCOL_BINARY_CMD_GET_REPLICA, vbid, 0, NULL, 0, key, strlen(key));
     check(h1->unknown_command(h, NULL, pkt, add_response) == ENGINE_SUCCESS,
                               "Get Replica Failed");
-    free(pkt);
+    cb_free(pkt);
 }
 
 protocol_binary_request_header* prepare_get_replica(ENGINE_HANDLE *h,
@@ -716,11 +717,11 @@ bool set_param(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *h1, protocol_binary_engine_pa
                        strlen(param), val, strlen(val));
 
     if (h1->unknown_command(h, NULL, pkt, add_response) != ENGINE_SUCCESS) {
-        free(pkt);
+        cb_free(pkt);
         return false;
     }
 
-    free(pkt);
+    cb_free(pkt);
     return last_status == PROTOCOL_BINARY_RESPONSE_SUCCESS;
 }
 
@@ -736,7 +737,7 @@ bool set_vbucket_state(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *h1,
         return false;
     }
 
-    free(pkt);
+    cb_free(pkt);
     return last_status == PROTOCOL_BINARY_RESPONSE_SUCCESS;
 }
 
@@ -755,7 +756,7 @@ bool get_all_vb_seqnos(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *h1,
     check(h1->unknown_command(h, cookie, pkt, add_response) ==
           ENGINE_SUCCESS, "Error in getting all vb info");
 
-    free(pkt);
+    cb_free(pkt);
     return last_status == PROTOCOL_BINARY_RESPONSE_SUCCESS;
 }
 
@@ -833,7 +834,7 @@ void set_with_meta(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *h1, const char *key,
 
     check(h1->unknown_command(h, cookie, pkt, add_response_set_del_meta) == ENGINE_SUCCESS,
           "Expected to be able to store with meta");
-    free(pkt);
+    cb_free(pkt);
     delete[] ext;
 }
 
@@ -851,7 +852,7 @@ void return_meta(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *h1, const char *key,
                        vallen, datatype);
     check(h1->unknown_command(h, cookie, pkt, add_response_ret_meta)
               == ENGINE_SUCCESS, "Expected to be able to store ret meta");
-    free(pkt);
+    cb_free(pkt);
 }
 
 void set_ret_meta(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *h1, const char *key,
@@ -883,7 +884,7 @@ void disable_traffic(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *h1) {
           "Failed to send data traffic command to the server");
     check(last_status == PROTOCOL_BINARY_RESPONSE_SUCCESS,
           "Failed to disable data traffic");
-    free(pkt);
+    cb_free(pkt);
 }
 
 void enable_traffic(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *h1) {
@@ -892,7 +893,7 @@ void enable_traffic(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *h1) {
           "Failed to send data traffic command to the server");
     check(last_status == PROTOCOL_BINARY_RESPONSE_SUCCESS,
           "Failed to enable data traffic");
-    free(pkt);
+    cb_free(pkt);
 }
 
 void start_persistence(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *h1) {
@@ -901,7 +902,7 @@ void start_persistence(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *h1) {
           "Failed to stop persistence.");
     check(last_status == PROTOCOL_BINARY_RESPONSE_SUCCESS,
           "Error starting persistence.");
-    free(pkt);
+    cb_free(pkt);
 }
 
 void stop_persistence(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *h1) {
@@ -918,7 +919,7 @@ void stop_persistence(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *h1) {
           "Failed to stop persistence.");
     check(last_status == PROTOCOL_BINARY_RESPONSE_SUCCESS,
           "Error stopping persistence.");
-    free(pkt);
+    cb_free(pkt);
 }
 
 ENGINE_ERROR_CODE store(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *h1,
@@ -996,7 +997,7 @@ void touch(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *h1, const char* key,
 
     check(h1->unknown_command(h, NULL, request, add_response) == ENGINE_SUCCESS,
           "Failed to call touch");
-    free(request);
+    cb_free(request);
 }
 
 void unl(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *h1, const char* key,
@@ -1007,7 +1008,7 @@ void unl(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *h1, const char* key,
 
     check(h1->unknown_command(h, NULL, request, add_response) == ENGINE_SUCCESS,
           "Failed to call unl");
-    free(request);
+    cb_free(request);
 }
 
 void compact_db(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *h1,
@@ -1029,7 +1030,7 @@ void compact_db(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *h1,
                      NULL, 0);
     check(h1->unknown_command(h, NULL, pkt, add_response) == ENGINE_SUCCESS,
           "Failed to request compact vbucket");
-    free(pkt);
+    cb_free(pkt);
 }
 
 void vbucketDelete(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *h1, uint16_t vb,
@@ -1040,7 +1041,7 @@ void vbucketDelete(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *h1, uint16_t vb,
                      args, argslen);
     check(h1->unknown_command(h, NULL, pkt, add_response) == ENGINE_SUCCESS,
           "Failed to request delete bucket");
-    free(pkt);
+    cb_free(pkt);
 }
 
 ENGINE_ERROR_CODE verify_key(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *h1,
@@ -1081,7 +1082,7 @@ bool verify_vbucket_state(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *h1, uint16_t vb,
     pkt = createPacket(PROTOCOL_BINARY_CMD_GET_VBUCKET, vb, 0);
 
     ENGINE_ERROR_CODE errcode = h1->unknown_command(h, NULL, pkt, add_response);
-    free(pkt);
+    cb_free(pkt);
     if (errcode != ENGINE_SUCCESS) {
         if (!mute) {
             fprintf(stderr, "Error code when getting vbucket %d\n", errcode);
@@ -1483,7 +1484,7 @@ void set_degraded_mode(ENGINE_HANDLE *h,
     }
 
     ENGINE_ERROR_CODE errcode = h1->unknown_command(h, NULL, pkt, add_response);
-    free(pkt);
+    cb_free(pkt);
     if (errcode != ENGINE_SUCCESS) {
         std::cerr << "Failed to set degraded mode to " << enable
                   << ". api call return engine code: " << errcode << std::endl;
index 429d38c..ae44eca 100644 (file)
@@ -45,6 +45,7 @@
 #include "mutex.h"
 #include <memcached/engine.h>
 #include <memcached/engine_testapp.h>
+#include <platform/cb_malloc.h>
 #include <JSON_checker.h>
 
 #ifdef linux
@@ -232,7 +233,7 @@ static int checkCurrItemsAfterShutdown(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *h1,
     checkeq(PROTOCOL_BINARY_RESPONSE_SUCCESS,
             last_status.load(),
             "Failed to stop persistence!");
-    free(pkt);
+    cb_free(pkt);
 
     std::vector<std::string>::iterator itr;
     for (itr = keys.begin(); itr != keys.end(); ++itr) {
@@ -257,7 +258,7 @@ static int checkCurrItemsAfterShutdown(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *h1,
             "CMD_START_PERSISTENCE failed!");
     checkeq(PROTOCOL_BINARY_RESPONSE_SUCCESS, last_status.load(),
           "Failed to start persistence!");
-    free(pkt);
+    cb_free(pkt);
 
     // shutdown engine force and restart
     testHarness.reload_engine(&h, &h1,
@@ -1132,7 +1133,7 @@ static enum test_result test_get_replica_active_state(ENGINE_HANDLE *h,
     checkeq(PROTOCOL_BINARY_RESPONSE_NOT_MY_VBUCKET, last_status.load(),
             "Expected PROTOCOL_BINARY_RESPONSE_NOT_MY_VBUCKET response.");
 
-    free(pkt);
+    cb_free(pkt);
     return SUCCESS;
 }
 
@@ -1147,7 +1148,7 @@ static enum test_result test_get_replica_pending_state(ENGINE_HANDLE *h,
             h1->unknown_command(h, cookie, pkt, add_response),
             "Should have returned error for pending state");
     testHarness.destroy_cookie(cookie);
-    free(pkt);
+    cb_free(pkt);
     return SUCCESS;
 }
 
@@ -1161,7 +1162,7 @@ static enum test_result test_get_replica_dead_state(ENGINE_HANDLE *h,
     checkeq(PROTOCOL_BINARY_RESPONSE_NOT_MY_VBUCKET, last_status.load(),
             "Expected PROTOCOL_BINARY_RESPONSE_NOT_MY_VBUCKET response.");
 
-    free(pkt);
+    cb_free(pkt);
     return SUCCESS;
 }
 
@@ -1177,7 +1178,7 @@ static enum test_result test_get_replica(ENGINE_HANDLE *h,
     checkeq(std::string("replicadata"), last_body,
             "Should have returned identical value");
 
-    free(pkt);
+    cb_free(pkt);
     return SUCCESS;
 }
 
@@ -1213,7 +1214,7 @@ static enum test_result test_get_replica_invalid_key(ENGINE_HANDLE *h,
             "Get Replica Failed");
     checkeq(PROTOCOL_BINARY_RESPONSE_NOT_MY_VBUCKET, last_status.load(),
             "Expected PROTOCOL_BINARY_RESPONSE_NOT_MY_VBUCKET response.");
-    free(pkt);
+    cb_free(pkt);
     return SUCCESS;
 }
 
@@ -2651,7 +2652,7 @@ static enum test_result test_session_cas_validation(ENGINE_HANDLE *h,
     checkeq(ENGINE_SUCCESS,
             h1->unknown_command(h, NULL, pkt, add_response),
             "SET_VBUCKET command failed");
-    free(pkt);
+    cb_free(pkt);
     cb_assert(last_status == PROTOCOL_BINARY_RESPONSE_KEY_EEXISTS);
 
     cas = 0x0102030405060708;
@@ -2659,7 +2660,7 @@ static enum test_result test_session_cas_validation(ENGINE_HANDLE *h,
     checkeq(ENGINE_SUCCESS,
             h1->unknown_command(h, NULL, pkt, add_response),
             "SET_VBUCKET command failed");
-    free(pkt);
+    cb_free(pkt);
     cb_assert(last_status == PROTOCOL_BINARY_RESPONSE_SUCCESS);
 
     return SUCCESS;
@@ -3067,7 +3068,7 @@ static enum test_result test_warmup_oom(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *h1)
             "Failed to send data traffic command to the services");
     checkeq(PROTOCOL_BINARY_RESPONSE_ENOMEM, last_status.load(),
             "Data traffic command should have failed with enomem");
-    free(pkt);
+    cb_free(pkt);
 
     return SUCCESS;
 }
@@ -3261,13 +3262,13 @@ static enum test_result test_cluster_config(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *
     checkeq(ENGINE_SUCCESS,
             h1->unknown_command(h, NULL, pkt1, add_response),
             "Failed to set cluster configuration");
-    free(pkt1);
+    cb_free(pkt1);
 
     protocol_binary_request_header *pkt2 =
         createPacket(PROTOCOL_BINARY_CMD_GET_CLUSTER_CONFIG, 1, 0, NULL, 0, NULL, 0, NULL, 0);
     checkeq(ENGINE_SUCCESS, h1->unknown_command(h, NULL, pkt2, add_response),
             "Failed to get cluster configuration");
-    free(pkt2);
+    cb_free(pkt2);
     if (last_body.compare(0, sizeof(var), reinterpret_cast<char*>(&var),
                           sizeof(var)) != 0) {
         return FAIL;
@@ -3283,14 +3284,14 @@ static enum test_result test_not_my_vbucket_with_cluster_config(ENGINE_HANDLE *h
         createPacket(PROTOCOL_BINARY_CMD_SET_CLUSTER_CONFIG, 1, 0, NULL, 0, NULL, 0, (char*)&var, 8);
     checkeq(ENGINE_SUCCESS, h1->unknown_command(h, NULL, pkt1, add_response),
             "Failed to set cluster configuration");
-    free(pkt1);
+    cb_free(pkt1);
 
     protocol_binary_request_header *pkt2 =
         createPacket(PROTOCOL_BINARY_CMD_GET_VBUCKET, 1, 0, NULL, 0, NULL, 0, NULL, 0);
     ENGINE_ERROR_CODE ret = h1->unknown_command(h, NULL, pkt2,
                                                 add_response);
     checkeq(ENGINE_SUCCESS, ret, "Should've received not_my_vbucket/cluster config");
-    free(pkt2);
+    cb_free(pkt2);
     if (last_body.compare(0, sizeof(var), reinterpret_cast<char*>(&var),
                           sizeof(var)) != 0) {
         return FAIL;
@@ -3344,7 +3345,7 @@ static enum test_result test_all_keys_api(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *h1
 
     checkeq(ENGINE_SUCCESS, h1->unknown_command(h, NULL, pkt1, add_response),
             "Failed to get all_keys, sort: ascending");
-    free(pkt1);
+    cb_free(pkt1);
 
     /* Check the keys. */
     size_t offset = 0;
@@ -3384,7 +3385,7 @@ static enum test_result test_all_keys_api_during_bucket_creation(
 
     ENGINE_ERROR_CODE err = h1->unknown_command(h, NULL, pkt1,
                                                 add_response);
-    free(pkt1);
+    cb_free(pkt1);
     start_persistence(h, h1);
 
     checkeq(ENGINE_SUCCESS, err,
@@ -3528,7 +3529,7 @@ static enum test_result test_value_eviction(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *
         checkeq(PROTOCOL_BINARY_RESPONSE_SUCCESS, last_status.load(),
             "expected the success for evicting a non-existent key with full eviction");
     }
-    free(pkt);
+    cb_free(pkt);
 
     h1->reset_stats(h, NULL);
     checkeq(0, get_int_stat(h, h1, "ep_num_value_ejects"),
@@ -4118,7 +4119,7 @@ static enum test_result test_observe_seqno_error(ENGINE_HANDLE *h,
                            invalid_data.str().length());
     h1->unknown_command(h, NULL, request, add_response);
 
-    free(request);
+    cb_free(request);
     checkeq(PROTOCOL_BINARY_RESPONSE_KEY_ENOENT, last_status.load(),
           "Expected vb uuid not found");
 
@@ -4428,14 +4429,14 @@ static enum test_result test_observe_errors(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *
     check(h1->unknown_command(h, NULL, pkt, add_response) == ENGINE_SUCCESS,
           "Observe failed.");
     checkeq(PROTOCOL_BINARY_RESPONSE_EINVAL, last_status.load(), "Expected invalid");
-    free(pkt);
+    cb_free(pkt);
 
     pkt = createPacket(PROTOCOL_BINARY_CMD_OBSERVE, 0, 0, NULL, 0, NULL, 0, "0000", 4);
     checkeq(ENGINE_SUCCESS,
             h1->unknown_command(h, NULL, pkt, add_response),
             "Observe failed.");
     checkeq(PROTOCOL_BINARY_RESPONSE_EINVAL, last_status.load(), "Expected invalid");
-    free(pkt);
+    cb_free(pkt);
 
     return SUCCESS;
 }
@@ -4453,7 +4454,7 @@ static enum test_result test_control_data_traffic(ENGINE_HANDLE *h, ENGINE_HANDL
             "Failed to send data traffic command to the server");
     checkeq(PROTOCOL_BINARY_RESPONSE_SUCCESS, last_status.load(),
           "Faile to disable data traffic");
-    free(pkt);
+    cb_free(pkt);
 
     checkeq(ENGINE_TMPFAIL,
             store(h, h1, NULL, OPERATION_SET, "key", "value2", &itm),
@@ -4466,7 +4467,7 @@ static enum test_result test_control_data_traffic(ENGINE_HANDLE *h, ENGINE_HANDL
             "Failed to send data traffic command to the server");
     checkeq(PROTOCOL_BINARY_RESPONSE_SUCCESS, last_status.load(),
           "Faile to enable data traffic");
-    free(pkt);
+    cb_free(pkt);
 
     checkeq(ENGINE_SUCCESS,
             store(h, h1, NULL, OPERATION_SET, "key", "value2", &itm),
@@ -4723,7 +4724,7 @@ static enum test_result test_set_ret_meta_error(ENGINE_HANDLE *h,
                        "key", 3, "val", 3);
     checkeq(ENGINE_SUCCESS, h1->unknown_command(h, NULL, pkt, add_response),
             "Expected to be able to store ret meta");
-    free(pkt);
+    cb_free(pkt);
     checkeq(PROTOCOL_BINARY_RESPONSE_EINVAL, last_status.load(),
           "Expected set returing meta to succeed");
 
@@ -4807,7 +4808,7 @@ static enum test_result test_add_ret_meta_error(ENGINE_HANDLE *h,
                        "key", 3, "val", 3);
     checkeq(ENGINE_SUCCESS, h1->unknown_command(h, NULL, pkt, add_response),
           "Expected to be able to add ret meta");
-    free(pkt);
+    cb_free(pkt);
     checkeq(PROTOCOL_BINARY_RESPONSE_EINVAL, last_status.load(),
           "Expected add returing meta to succeed");
 
@@ -4926,7 +4927,7 @@ static enum test_result test_del_ret_meta_error(ENGINE_HANDLE *h,
     checkeq(ENGINE_SUCCESS,
             h1->unknown_command(h, NULL, pkt, add_response),
             "Expected to be able to del ret meta");
-    free(pkt);
+    cb_free(pkt);
     checkeq(PROTOCOL_BINARY_RESPONSE_EINVAL, last_status.load(),
           "Expected add returing meta to succeed");
 
@@ -5584,7 +5585,7 @@ static enum test_result test_hlc_cas(ENGINE_HANDLE *h,
     request = createPacket(PROTOCOL_BINARY_CMD_GET_ADJUSTED_TIME, 0, 0, NULL, 0,
                            NULL, 0, NULL, 0);
     h1->unknown_command(h, NULL, request, add_response);
-    free(request);
+    cb_free(request);
     checkeq(PROTOCOL_BINARY_RESPONSE_SUCCESS, last_status.load(),
             "Expected Success");
     checkeq(sizeof(int64_t), last_body.size(),
index 6fe78a6..a44837d 100644 (file)
@@ -24,6 +24,7 @@
 #include "ep_test_apis.h"
 #include "ep_testsuite_common.h"
 
+#include <platform/cb_malloc.h>
 #include <platform/cbassert.h>
 #include <JSON_checker.h>
 
@@ -1586,7 +1587,7 @@ static enum test_result test_touch(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *h1) {
             "Failed to call touch");
     checkeq(PROTOCOL_BINARY_RESPONSE_EINVAL, last_status.load(),
             "Testing invalid arguments");
-    free(request);
+    cb_free(request);
 
     // Try to touch an unknown item...
     touch(h, h1, "mykey", 0, (time(NULL) + 10));
@@ -1701,7 +1702,7 @@ static enum test_result test_gat(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *h1) {
             "Failed to call gat");
     checkeq(PROTOCOL_BINARY_RESPONSE_EINVAL, last_status.load(),
             "Testing invalid arguments");
-    free(request);
+    cb_free(request);
 
     // Try to gat an unknown item...
     gat(h, h1, "mykey", 0, 10);
@@ -1763,7 +1764,7 @@ static enum test_result test_gatq(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *h1) {
             "Failed to call gatq");
     checkeq(PROTOCOL_BINARY_RESPONSE_EINVAL,
             last_status.load(), "Testing invalid arguments");
-    free(request);
+    cb_free(request);
 
     // Try to gatq an unknown item...
     last_status = static_cast<protocol_binary_response_status>(0xffff);
index 42cd8b3..cfd7d14 100644 (file)
@@ -31,6 +31,7 @@
 #include <sys/wait.h>
 #endif
 
+#include <platform/cb_malloc.h>
 #include <platform/dirutils.h>
 
 const char *dbname_env = NULL;
@@ -115,12 +116,12 @@ engine_test_t* BaseTestCase::getTest() {
         nm.append(" (couchstore)");
     }
 
-    ret->name = strdup(nm.c_str());
+    ret->name = cb_strdup(nm.c_str());
     std::string config = ss.str();
     if (config.length() == 0) {
         ret->cfg = 0;
     } else {
-        ret->cfg = strdup(config.c_str());
+        ret->cfg = cb_strdup(config.c_str());
     }
 
     return ret;
@@ -158,7 +159,7 @@ bool test_setup(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *h1) {
     protocol_binary_request_header *pkt = createPacket(PROTOCOL_BINARY_CMD_ENABLE_TRAFFIC);
     check(h1->unknown_command(h, NULL, pkt, add_response) == ENGINE_SUCCESS,
           "Failed to enable data traffic");
-    free(pkt);
+    cb_free(pkt);
 
     return true;
 }
@@ -258,7 +259,7 @@ engine_test_t* get_tests(void) {
     }
 
     if (oneTestIdx == -1) {
-        testcases = static_cast<engine_test_t*>(calloc(num + 1, sizeof(engine_test_t)));
+        testcases = static_cast<engine_test_t*>(cb_calloc(num + 1, sizeof(engine_test_t)));
 
         int ii = 0;
         for (int jj = 0; jj < num; ++jj) {
@@ -268,7 +269,7 @@ engine_test_t* get_tests(void) {
             }
         }
     } else {
-        testcases = static_cast<engine_test_t*>(calloc(1 + 1, sizeof(engine_test_t)));
+        testcases = static_cast<engine_test_t*>(cb_calloc(1 + 1, sizeof(engine_test_t)));
 
         engine_test_t *r = testsuite_testcases[oneTestIdx].getTest();
         if (r != 0) {
@@ -289,10 +290,10 @@ bool setup_suite(struct test_harness *th) {
 MEMCACHED_PUBLIC_API
 bool teardown_suite() {
     for (int i = 0; testcases[i].name != nullptr; i++) {
-        free((char*)testcases[i].name);
-        free((char*)testcases[i].cfg);
+        cb_free((char*)testcases[i].name);
+        cb_free((char*)testcases[i].cfg);
     }
-    free(testcases);
+    cb_free(testcases);
     testcases = NULL;
     return true;
 }
index 1d62ec7..21a595d 100644 (file)
@@ -26,6 +26,7 @@
 #include "mock/mock_dcp.h"
 #include "programs/engine_testapp/mock_server.h"
 
+#include <platform/cb_malloc.h>
 #include <thread>
 
 // Helper functions ///////////////////////////////////////////////////////////
@@ -2840,7 +2841,7 @@ static uint32_t add_stream_for_consumer(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *h1,
     size_t pkt_len = headerlen + bodylen;
 
     protocol_binary_response_header* pkt =
-        (protocol_binary_response_header*)malloc(pkt_len);
+        (protocol_binary_response_header*)cb_malloc(pkt_len);
     memset(pkt->bytes, '\0', pkt_len);
     pkt->response.magic = PROTOCOL_BINARY_RES;
     pkt->response.opcode = PROTOCOL_BINARY_CMD_DCP_STREAM_REQ;
@@ -2866,7 +2867,7 @@ static uint32_t add_stream_for_consumer(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *h1,
             h1->dcp.response_handler(h, cookie, pkt),
             "Expected success");
     dcp_step(h, h1, cookie);
-    free (pkt);
+    cb_free(pkt);
 
     if (response == PROTOCOL_BINARY_RESPONSE_ROLLBACK) {
         return stream_opaque;
@@ -2877,7 +2878,7 @@ static uint32_t add_stream_for_consumer(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *h1,
         verify_curr_items(h, h1, 0, "Wrong amount of items");
 
         protocol_binary_response_header* pkt =
-            (protocol_binary_response_header*)malloc(pkt_len);
+            (protocol_binary_response_header*)cb_malloc(pkt_len);
         memset(pkt->bytes, '\0', 40);
         pkt->response.magic = PROTOCOL_BINARY_RES;
         pkt->response.opcode = PROTOCOL_BINARY_CMD_DCP_STREAM_REQ;
@@ -2898,7 +2899,7 @@ static uint32_t add_stream_for_consumer(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *h1,
         cb_assert(dcp_last_op == PROTOCOL_BINARY_CMD_DCP_ADD_STREAM);
         cb_assert(dcp_last_status == PROTOCOL_BINARY_RESPONSE_SUCCESS);
         cb_assert(dcp_last_stream_opaque == stream_opaque);
-        free(pkt);
+        cb_free(pkt);
     } else {
         cb_assert(dcp_last_op == PROTOCOL_BINARY_CMD_DCP_ADD_STREAM);
         cb_assert(dcp_last_status == response);
@@ -3383,7 +3384,7 @@ static enum test_result test_chk_manager_rollback(ENGINE_HANDLE *h,
 
     uint64_t rollbackSeqno = htonll(40);
     protocol_binary_response_header* pkt =
-        (protocol_binary_response_header*)malloc(32);
+        (protocol_binary_response_header*)cb_malloc(32);
     memset(pkt->bytes, '\0', 32);
     pkt->response.magic = PROTOCOL_BINARY_RES;
     pkt->response.opcode = PROTOCOL_BINARY_CMD_DCP_STREAM_REQ;
@@ -3402,13 +3403,13 @@ static enum test_result test_chk_manager_rollback(ENGINE_HANDLE *h,
     } while (dcp_last_op != PROTOCOL_BINARY_CMD_DCP_STREAM_REQ);
 
     stream_opaque = dcp_last_opaque;
-    free(pkt);
+    cb_free(pkt);
 
     // Send success
 
     uint64_t vb_uuid = htonll(123456789);
     uint64_t by_seqno = 0;
-    pkt = (protocol_binary_response_header*)malloc(40);
+    pkt = (protocol_binary_response_header*)cb_malloc(40);
     memset(pkt->bytes, '\0', 40);
     pkt->response.magic = PROTOCOL_BINARY_RES;
     pkt->response.opcode = PROTOCOL_BINARY_CMD_DCP_STREAM_REQ;
@@ -3422,7 +3423,7 @@ static enum test_result test_chk_manager_rollback(ENGINE_HANDLE *h,
             h1->dcp.response_handler(h, cookie, pkt),
             "Expected success");
     dcp_step(h, h1, cookie);
-    free(pkt);
+    cb_free(pkt);
 
     int items = get_int_stat(h, h1, "curr_items_tot");
     int seqno = get_int_stat(h, h1, "vb_0:high_seqno", "vbucket-seqno");
@@ -3481,7 +3482,7 @@ static enum test_result test_fullrollback_for_consumer(ENGINE_HANDLE *h,
     uint32_t bodylen = sizeof(uint64_t);
     uint64_t rollbackSeqno = htonll(5);
     protocol_binary_response_header *pkt1 =
-        (protocol_binary_response_header*)malloc(headerlen + bodylen);
+        (protocol_binary_response_header*)cb_malloc(headerlen + bodylen);
     memset(pkt1->bytes, '\0', headerlen + bodylen);
     pkt1->response.magic = PROTOCOL_BINARY_RES;
     pkt1->response.opcode = PROTOCOL_BINARY_CMD_DCP_STREAM_REQ;
@@ -3502,7 +3503,7 @@ static enum test_result test_fullrollback_for_consumer(ENGINE_HANDLE *h,
 
     bodylen = 2 *sizeof(uint64_t);
     protocol_binary_response_header* pkt2 =
-        (protocol_binary_response_header*)malloc(headerlen + bodylen);
+        (protocol_binary_response_header*)cb_malloc(headerlen + bodylen);
     memset(pkt2->bytes, '\0', headerlen + bodylen);
     pkt2->response.magic = PROTOCOL_BINARY_RES;
     pkt2->response.opcode = PROTOCOL_BINARY_CMD_DCP_STREAM_REQ;
@@ -3521,8 +3522,8 @@ static enum test_result test_fullrollback_for_consumer(ENGINE_HANDLE *h,
     dcp_step(h, h1, cookie);
     cb_assert(dcp_last_op == PROTOCOL_BINARY_CMD_DCP_ADD_STREAM);
 
-    free(pkt1);
-    free(pkt2);
+    cb_free(pkt1);
+    cb_free(pkt2);
 
     //Verify that all items have been removed from consumer
     wait_for_flusher_to_settle(h, h1);
@@ -3591,7 +3592,7 @@ static enum test_result test_partialrollback_for_consumer(ENGINE_HANDLE *h,
     uint32_t bodylen = sizeof(uint64_t);
     uint64_t rollbackSeqno = htonll(100);
     protocol_binary_response_header *pkt1 =
-        (protocol_binary_response_header*)malloc(headerlen + bodylen);
+        (protocol_binary_response_header*)cb_malloc(headerlen + bodylen);
     memset(pkt1->bytes, '\0', headerlen + bodylen);
     pkt1->response.magic = PROTOCOL_BINARY_RES;
     pkt1->response.opcode = PROTOCOL_BINARY_CMD_DCP_STREAM_REQ;
@@ -3609,7 +3610,7 @@ static enum test_result test_partialrollback_for_consumer(ENGINE_HANDLE *h,
 
     bodylen = 2 * sizeof(uint64_t);
     protocol_binary_response_header* pkt2 =
-        (protocol_binary_response_header*)malloc(headerlen + bodylen);
+        (protocol_binary_response_header*)cb_malloc(headerlen + bodylen);
     memset(pkt2->bytes, '\0', headerlen + bodylen);
     pkt2->response.magic = PROTOCOL_BINARY_RES;
     pkt2->response.opcode = PROTOCOL_BINARY_CMD_DCP_STREAM_REQ;
@@ -3626,8 +3627,8 @@ static enum test_result test_partialrollback_for_consumer(ENGINE_HANDLE *h,
             "Expected success");
     dcp_step(h, h1, cookie);
 
-    free(pkt1);
-    free(pkt2);
+    cb_free(pkt1);
+    cb_free(pkt2);
 
     //?Verify that 10 items plus 10 updates have been removed from consumer
     wait_for_flusher_to_settle(h, h1);
@@ -4037,7 +4038,7 @@ static enum test_result test_dcp_consumer_mutate(ENGINE_HANDLE *h,
 
     std::string key("key");
     uint32_t dataLen = 100;
-    char *data = static_cast<char *>(malloc(dataLen));
+    char *data = static_cast<char *>(cb_malloc(dataLen));
     memset(data, 'x', dataLen);
 
     uint8_t cas = 0x1;
@@ -4104,7 +4105,7 @@ static enum test_result test_dcp_consumer_mutate(ENGINE_HANDLE *h,
     check_key_value(h, h1, "key", data, dataLen);
 
     testHarness.destroy_cookie(cookie);
-    free(data);
+    cb_free(data);
 
     return SUCCESS;
 }
@@ -4137,7 +4138,7 @@ static enum test_result test_dcp_consumer_mutate_with_time_sync(
                                      PROTOCOL_BINARY_RESPONSE_SUCCESS);
 
     uint32_t dataLen = 100;
-    char *data = static_cast<char *>(malloc(dataLen));
+    char *data = static_cast<char *>(cb_malloc(dataLen));
     memset(data, 'x', dataLen);
 
     uint8_t cas = 0x1;
@@ -4178,14 +4179,14 @@ static enum test_result test_dcp_consumer_mutate_with_time_sync(
     check_key_value(h, h1, "key", data, dataLen);
 
     testHarness.destroy_cookie(cookie);
-    free(data);
+    cb_free(data);
 
     protocol_binary_request_header *request;
     int64_t adjusted_time2;
     request = createPacket(PROTOCOL_BINARY_CMD_GET_ADJUSTED_TIME, 0, 0, NULL, 0,
                            NULL, 0, NULL, 0);
     h1->unknown_command(h, NULL, request, add_response);
-    free(request);
+    cb_free(request);
     checkeq(PROTOCOL_BINARY_RESPONSE_SUCCESS, last_status.load(),
             "Expected Success");
     checkeq(last_body.size(), sizeof(int64_t),
@@ -4334,7 +4335,7 @@ static enum test_result test_dcp_consumer_delete_with_time_sync(
     request = createPacket(PROTOCOL_BINARY_CMD_GET_ADJUSTED_TIME, 0, 0, NULL, 0,
                            NULL, 0, NULL, 0);
     h1->unknown_command(h, NULL, request, add_response);
-    free(request);
+    cb_free(request);
     checkeq(PROTOCOL_BINARY_RESPONSE_SUCCESS, last_status.load(),
             "Expected Success");
     checkeq(sizeof(int64_t), last_body.size(),
@@ -5525,7 +5526,7 @@ static enum test_result test_get_all_vb_seqnos(ENGINE_HANDLE *h,
 static enum test_result test_mb19153(ENGINE_HANDLE *h,
                                      ENGINE_HANDLE_V1 *h1) {
 
-    putenv(strdup("ALLOW_NO_STATS_UPDATE=yeah"));
+    putenv(cb_strdup("ALLOW_NO_STATS_UPDATE=yeah"));
 
     // Set max num AUX IO to 0, so no backfill would start
     // immediately
index 82457f6..0b1afb6 100644 (file)
@@ -24,6 +24,8 @@
 #include "ep_test_apis.h"
 #include "ep_testsuite_common.h"
 
+#include <platform/cb_malloc.h>
+
 // Helper functions ///////////////////////////////////////////////////////////
 
 static enum test_result verify_item(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *h1,
@@ -728,7 +730,7 @@ static enum test_result test_tap_filter_stream(ENGINE_HANDLE *h, ENGINE_HANDLE_V
     filtermap[2] = 0;
 
     uint16_t numOfVBs = htons(2); // Start with vbuckets 0 and 1
-    char *userdata = static_cast<char*>(calloc(1, 28));
+    char *userdata = static_cast<char*>(cb_calloc(1, 28));
     char *ptr = userdata;
     memcpy(ptr, &numOfVBs, sizeof(uint16_t));
     ptr += sizeof(uint16_t);
@@ -847,7 +849,7 @@ static enum test_result test_tap_filter_stream(ENGINE_HANDLE *h, ENGINE_HANDLE_V
     checkeq(0,
             get_int_stat(h, h1, "eq_tapq:tap_client_thread:qlen", "tap"),
             "queue should be empty");
-    free(userdata);
+    cb_free(userdata);
 
     return SUCCESS;
 }
index 10967d5..2b3fe50 100644 (file)
@@ -24,6 +24,8 @@
 #include "ep_test_apis.h"
 #include "ep_testsuite_common.h"
 
+#include <platform/cb_malloc.h>
+
 // Helper functions ///////////////////////////////////////////////////////////
 
 static void verifyLastMetaData(ItemMetaData imd, uint8_t conflict_res_mode) {
@@ -1591,7 +1593,7 @@ static enum test_result test_adjusted_time_apis(ENGINE_HANDLE *h,
     request = createPacket(PROTOCOL_BINARY_CMD_GET_ADJUSTED_TIME, 0, 0, NULL, 0,
                            NULL, 0, NULL, 0);
     h1->unknown_command(h, NULL, request, add_response);
-    free(request);
+    cb_free(request);
     checkeq(PROTOCOL_BINARY_RESPONSE_SUCCESS, last_status.load(),
             "Expected Success");
     checkeq(sizeof(int64_t), last_body.size(),
@@ -1604,7 +1606,7 @@ static enum test_result test_adjusted_time_apis(ENGINE_HANDLE *h,
     request = createPacket(PROTOCOL_BINARY_CMD_GET_ADJUSTED_TIME, 0, 0, NULL, 0,
                            NULL, 0, NULL, 0);
     h1->unknown_command(h, NULL, request, add_response);
-    free(request);
+    cb_free(request);
     checkeq(PROTOCOL_BINARY_RESPONSE_SUCCESS, last_status.load(),
             "Expected Success");
     checkeq(sizeof(int64_t), last_body.size(),
@@ -1634,7 +1636,7 @@ static enum test_result test_adjusted_time_apis(ENGINE_HANDLE *h,
     request = createPacket(PROTOCOL_BINARY_CMD_GET_ADJUSTED_TIME, 0, 0, NULL, 0,
             NULL, 0, NULL, 0);
     h1->unknown_command(h, NULL, request, add_response);
-    free(request);
+    cb_free(request);
     checkeq(PROTOCOL_BINARY_RESPONSE_SUCCESS, last_status.load(),
             "Expected Success");
     checkeq(sizeof(int64_t), last_body.size(),
@@ -1661,7 +1663,7 @@ static enum test_result test_adjusted_time_apis(ENGINE_HANDLE *h,
     request = createPacket(PROTOCOL_BINARY_CMD_GET_ADJUSTED_TIME, 0, 0, NULL, 0,
             NULL, 0, NULL, 0);
     h1->unknown_command(h, NULL, request, add_response);
-    free(request);
+    cb_free(request);
     checkeq(PROTOCOL_BINARY_RESPONSE_SUCCESS, last_status.load(),
             "Expected Success");
     checkeq(sizeof(int64_t), last_body.size(),
@@ -1690,7 +1692,7 @@ static enum test_result test_adjusted_time_apis(ENGINE_HANDLE *h,
     h1->unknown_command(h, NULL, request, add_response);
     checkeq(PROTOCOL_BINARY_RESPONSE_EINVAL, last_status.load(),
             "Expected invalid response");
-    free(request);
+    cb_free(request);
     delete[] ext;
 
     return SUCCESS;
@@ -1704,7 +1706,7 @@ static enum test_result test_adjusted_time_negative_tests(ENGINE_HANDLE *h,
     request = createPacket(PROTOCOL_BINARY_CMD_GET_ADJUSTED_TIME, 1, 0, NULL, 0,
                            NULL, 0, NULL, 0);
     h1->unknown_command(h, NULL, request, add_response);
-    free(request);
+    cb_free(request);
     checkeq(PROTOCOL_BINARY_RESPONSE_NOT_MY_VBUCKET, last_status.load(),
             "Expected not my vbucket");
 
@@ -1712,7 +1714,7 @@ static enum test_result test_adjusted_time_negative_tests(ENGINE_HANDLE *h,
     request = createPacket(PROTOCOL_BINARY_CMD_GET_ADJUSTED_TIME, 0, 0, NULL, 0,
                            NULL, 0, NULL, 0);
     h1->unknown_command(h, NULL, request, add_response);
-    free(request);
+    cb_free(request);
     checkeq(PROTOCOL_BINARY_RESPONSE_NOT_SUPPORTED, last_status.load(),
             "Expected not supported response");
 
@@ -1731,7 +1733,7 @@ static enum test_result test_adjusted_time_negative_tests(ENGINE_HANDLE *h,
     h1->unknown_command(h, NULL, request, add_response);
     checkeq(PROTOCOL_BINARY_RESPONSE_NOT_MY_VBUCKET, last_status.load(),
             "Expected not my vbucket");
-    free(request);
+    cb_free(request);
 
     /* SET_DRIFT_COUNTER_STATE when time_synchronization is "disabled" */
     request = createPacket(PROTOCOL_BINARY_CMD_SET_DRIFT_COUNTER_STATE,
@@ -1739,7 +1741,7 @@ static enum test_result test_adjusted_time_negative_tests(ENGINE_HANDLE *h,
     h1->unknown_command(h, NULL, request, add_response);
     checkeq(PROTOCOL_BINARY_RESPONSE_NOT_SUPPORTED, last_status.load(),
             "Expected not supported");
-    free(request);
+    cb_free(request);
     delete[] ext;
 
     return SUCCESS;
index 9693ea7..ad981e7 100644 (file)
@@ -22,6 +22,7 @@
 #include <gtest/gtest.h>
 #include <iomanip>
 #include <locale>
+#include <platform/cb_malloc.h>
 
 #ifdef HAVE_JEMALLOC
 /* Global replacement of operators new and delete when using jemalloc.
  * appropriate calls to Valgrind to inform it of allocations / frees.
  */
 void* operator new(std::size_t count ) {
-    return malloc(count);
+    return cb_malloc(count);
 }
 
 void operator delete(void* ptr ) noexcept
 {
-    free(ptr);
+    cb_free(ptr);
 }
 #endif // HAVE_JEMALLOC
 
index 63cbd0d..0bfe809 100644 (file)
@@ -19,6 +19,7 @@
 
 #include <ep.h>
 #include <item.h>
+#include <platform/cb_malloc.h>
 #include <signal.h>
 #include <stats.h>
 
@@ -397,7 +398,7 @@ TEST_F(HashTableTest, SizeStats) {
 
     const std::string k("somekey");
     const size_t itemSize(16 * 1024);
-    char *someval(static_cast<char*>(calloc(1, itemSize)));
+    char *someval(static_cast<char*>(cb_calloc(1, itemSize)));
     EXPECT_TRUE(someval);
 
     Item i(k.data(), k.length(), 0, 0, someval, itemSize);
@@ -410,7 +411,7 @@ TEST_F(HashTableTest, SizeStats) {
     EXPECT_EQ(0, ht.cacheSize.load());
     EXPECT_EQ(initialSize, global_stats.currentSize.load());
 
-    free(someval);
+    cb_free(someval);
 }
 
 TEST_F(HashTableTest, SizeStatsFlush) {
@@ -422,7 +423,7 @@ TEST_F(HashTableTest, SizeStatsFlush) {
 
     const std::string k("somekey");
     const size_t itemSize(16 * 1024);
-    char *someval(static_cast<char*>(calloc(1, itemSize)));
+    char *someval(static_cast<char*>(cb_calloc(1, itemSize)));
     EXPECT_TRUE(someval);
 
     Item i(k.data(), k.length(), 0, 0, someval, itemSize);
@@ -435,7 +436,7 @@ TEST_F(HashTableTest, SizeStatsFlush) {
     EXPECT_EQ(0, ht.cacheSize.load());
     EXPECT_EQ(initialSize, global_stats.currentSize.load());
 
-    free(someval);
+    cb_free(someval);
 }
 
 TEST_F(HashTableTest, SizeStatsSoftDel) {
@@ -447,7 +448,7 @@ TEST_F(HashTableTest, SizeStatsSoftDel) {
 
     const std::string k("somekey");
     const size_t itemSize(16 * 1024);
-    char *someval(static_cast<char*>(calloc(1, itemSize)));
+    char *someval(static_cast<char*>(cb_calloc(1, itemSize)));
     EXPECT_TRUE(someval);
 
     Item i(k.data(), k.length(), 0, 0, someval, itemSize);
@@ -461,7 +462,7 @@ TEST_F(HashTableTest, SizeStatsSoftDel) {
     EXPECT_EQ(0, ht.cacheSize.load());
     EXPECT_EQ(initialSize, global_stats.currentSize.load());
 
-    free(someval);
+    cb_free(someval);
 }
 
 TEST_F(HashTableTest, SizeStatsSoftDelFlush) {
@@ -473,7 +474,7 @@ TEST_F(HashTableTest, SizeStatsSoftDelFlush) {
 
     const std::string k("somekey");
     const size_t itemSize(16 * 1024);
-    char *someval(static_cast<char*>(calloc(1, itemSize)));
+    char *someval(static_cast<char*>(cb_calloc(1, itemSize)));
     EXPECT_TRUE(someval);
 
     Item i(k.data(), k.length(), 0, 0, someval, itemSize);
@@ -487,7 +488,7 @@ TEST_F(HashTableTest, SizeStatsSoftDelFlush) {
     EXPECT_EQ(0, ht.cacheSize.load());
     EXPECT_EQ(initialSize, global_stats.currentSize.load());
 
-    free(someval);
+    cb_free(someval);
 }
 
 TEST_F(HashTableTest, SizeStatsEject) {
@@ -500,7 +501,7 @@ TEST_F(HashTableTest, SizeStatsEject) {
     const std::string k("somekey");
     std::string kstring(k);
     const size_t itemSize(16 * 1024);
-    char *someval(static_cast<char*>(calloc(1, itemSize)));
+    char *someval(static_cast<char*>(cb_calloc(1, itemSize)));
     EXPECT_TRUE(someval);
 
     Item i(k.data(), k.length(), 0, 0, someval, itemSize);
@@ -519,7 +520,7 @@ TEST_F(HashTableTest, SizeStatsEject) {
     EXPECT_EQ(0, ht.cacheSize.load());
     EXPECT_EQ(initialSize, global_stats.currentSize.load());
 
-    free(someval);
+    cb_free(someval);
 }
 
 TEST_F(HashTableTest, SizeStatsEjectFlush) {
@@ -532,7 +533,7 @@ TEST_F(HashTableTest, SizeStatsEjectFlush) {
     const std::string k("somekey");
     std::string kstring(k);
     const size_t itemSize(16 * 1024);
-    char *someval(static_cast<char*>(calloc(1, itemSize)));
+    char *someval(static_cast<char*>(cb_calloc(1, itemSize)));
     EXPECT_TRUE(someval);
 
     Item i(k.data(), k.length(), 0, 0, someval, itemSize);
@@ -551,7 +552,7 @@ TEST_F(HashTableTest, SizeStatsEjectFlush) {
     EXPECT_EQ(0, ht.cacheSize.load());
     EXPECT_EQ(initialSize, global_stats.currentSize.load());
 
-    free(someval);
+    cb_free(someval);
 }
 
 TEST_F(HashTableTest, ItemAge) {
@@ -588,7 +589,7 @@ TEST_F(HashTableTest, ItemAge) {
  *
  * (This must be static as putenv() essentially 'takes ownership' of
  * the provided array, so it is unsafe to use an automatic variable.
- * However, if we use the result of malloc() (i.e. the heap) then
+ * However, if we use the result of cb_malloc() (i.e. the heap) then
  * memory leak checkers (e.g. Valgrind) will report the memory as
  * leaked as it's impossible to free it).
  */
index 377d9cc..85e0335 100644 (file)
@@ -18,6 +18,7 @@
 
 #include <memcached/engine.h>
 #include <memcached/engine_testapp.h>
+#include <platform/cb_malloc.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -173,7 +174,7 @@ static test_result test_persistence(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *h1) {
 
     char key[24];
     char *data;
-    data = static_cast<char *>(malloc(sizeof(char) * size));
+    data = static_cast<char *>(cb_malloc(sizeof(char) * size));
     cb_assert(data);
 
     for (size_t i = 0; i < (sizeof(char) * size); ++i) {
@@ -188,7 +189,7 @@ static test_result test_persistence(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *h1) {
                            size, 9713, &it, 0, 0) == ENGINE_SUCCESS,
                   "store failure");
     }
-    free(data);
+    cb_free(data);
     wait_for_flusher_to_settle(h, h1);
 
     std::cout << total << " at " << size << " - "
index 3d03382..9c1117e 100644 (file)
@@ -20,6 +20,7 @@
 #include <signal.h>
 
 #include <algorithm>
+#include <platform/cb_malloc.h>
 #include <vector>
 
 #include "configuration.h"
@@ -210,7 +211,7 @@ static void testGetVBucketsByState(void) {
 
 int main(int argc, char **argv) {
     (void)argc; (void)argv;
-    putenv(strdup("ALLOW_NO_STATS_UPDATE=yeah"));
+    putenv(cb_strdup("ALLOW_NO_STATS_UPDATE=yeah"));
 
     HashTable::setDefaultNumBuckets(5);
     HashTable::setDefaultNumLocks(1);
index 6b31087..7fa7e0e 100644 (file)
@@ -20,6 +20,7 @@
 #include <arpa/inet.h>
 
 #include <memcached/engine.h>
+#include <platform/cb_malloc.h>
 
 #include "suite_stubs.h"
 #include "ep-engine/command_ids.h"
@@ -205,7 +206,7 @@ void checkValue(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *h1, const char* exp) {
     info.nvalue = 1;
     h1->get_item_info(h, NULL, i, &info);
 
-    buf = malloc(info.value[0].iov_len + 1);
+    buf = cb_malloc(info.value[0].iov_len + 1);
     cb_assert(buf != NULL);
     memcpy(buf, info.value[0].iov_base, info.value[0].iov_len);
     buf[sizeof(buf) - 1] = 0x00;
@@ -227,12 +228,12 @@ void checkValue(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *h1, const char* exp) {
         fprintf(stderr, "Expected ``%s'', got ``%s''\n", exp, buf);
         abort();
     }
-    free(buf);
+    cb_free(buf);
 }
 
 static protocol_binary_request_header* create_packet(uint8_t opcode,
                                                      const char *val) {
-    char *pkt_raw = calloc(1,
+    char *pkt_raw = cb_calloc(1,
                            sizeof(protocol_binary_request_header)
                            + strlen(key)
                            + strlen(val));
@@ -258,7 +259,7 @@ void getLock(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *h1) {
         fprintf(stderr, "Failed to issue getl request.\n");
         abort();
     }
-    free (pkt);
+    cb_free(pkt);
 
     hasError = last_status != 0;
 }
@@ -311,7 +312,7 @@ engine_test_t* get_tests(void) {
         }
     }
 
-    rv = calloc(num_tests+1, sizeof(engine_test_t));
+    rv = cb_calloc(num_tests+1, sizeof(engine_test_t));
     cb_assert(rv);
 
     for (i = 0; i < NSEGS; ++i) {