diff --git a/procmeminfo.cpp b/procmeminfo.cpp
index e755ff1..85c6562 100644
--- a/procmeminfo.cpp
+++ b/procmeminfo.cpp
@@ -41,6 +41,10 @@
 namespace android {
 namespace meminfo {
 
+// List of VMA names that we don't want to process:
+//   - On ARM32, [vectors] is a special VMA that is outside of pagemap range.
+static const std::vector<std::string> g_blacklisted_vmas = {"[vectors]"};
+
 static void add_mem_usage(MemUsage* to, const MemUsage& from) {
     to->vss += from.vss;
     to->rss += from.rss;
@@ -143,7 +147,12 @@
         return maps_;
     }
 
-    auto collect_vmas = [&](const Vma& vma) { maps_.emplace_back(vma); };
+    auto collect_vmas = [&](const Vma& vma) {
+        if (std::find(g_blacklisted_vmas.begin(), g_blacklisted_vmas.end(), vma.name) ==
+                g_blacklisted_vmas.end()) {
+            maps_.emplace_back(vma);
+        }
+    };
     if (path.empty() && !ForEachVma(collect_vmas)) {
         LOG(ERROR) << "Failed to read smaps for Process " << pid_;
         maps_.clear();
@@ -267,7 +276,10 @@
     if (!::android::procinfo::ReadMapFile(
                 maps_file, [&](uint64_t start, uint64_t end, uint16_t flags, uint64_t pgoff, ino_t,
                                const char* name) {
-                    maps_.emplace_back(Vma(start, end, pgoff, flags, name));
+                    if (std::find(g_blacklisted_vmas.begin(), g_blacklisted_vmas.end(), name) ==
+                            g_blacklisted_vmas.end()) {
+                        maps_.emplace_back(Vma(start, end, pgoff, flags, name));
+                    }
                 })) {
         LOG(ERROR) << "Failed to parse " << maps_file;
         maps_.clear();
