Guard against double free via checking mCodeMemMgr.get() first.

Change-Id: Id6cc8b3e269c94891c097317274b33b6d200828c
diff --git a/bcc.cpp b/bcc.cpp
index 42c8def..ac41041 100644
--- a/bcc.cpp
+++ b/bcc.cpp
@@ -3349,12 +3349,21 @@
   }
 
   ~Compiler() {
-    if (mCodeDataAddr != 0 && mCodeDataAddr != MAP_FAILED) {
-      if (munmap(mCodeDataAddr, MaxCodeSize + MaxGlobalVarSize) < 0) {
-        LOGE("munmap failed while releasing mCodeDataAddr\n");
+    if (!mCodeMemMgr.get()) {
+      // mCodeDataAddr and mCacheMapAddr are from loader and not
+      // managed by CodeMemoryManager.
+
+      if (mCodeDataAddr != 0 && mCodeDataAddr != MAP_FAILED) {
+        if (munmap(mCodeDataAddr, MaxCodeSize + MaxGlobalVarSize) < 0) {
+          LOGE("munmap failed while releasing mCodeDataAddr\n");
+        }
+
+        mCodeDataAddr = 0;
       }
+
       if (mCacheMapAddr) {
         free(mCacheMapAddr);
+        mCacheMapAddr = 0;
       }
     }