{
  "slug": "pangolin",
  "term": "Pangolin persistent object library",
  "aliases": [
    "Pangolin"
  ],
  "definition": "Pangolin is a research persistent-memory object library combining DRAM micro-buffers, checksums and parity for corruption recovery.",
  "note": "Updates use temporary DRAM copies; commit coordinates persistent objects, checksums and parity through redo logging. [pangolin-paper]\n\nDefault pgl_get reads do not verify checksums. Scrub mode checks periodically; Conservative mode checks each object access. [pangolin-paper]\n\nUnlike filesystem-level protection that excludes writable DAX mappings, object-library protection can accompany mapped-data updates. [fortis-paper]",
  "status": "research",
  "advantages": [],
  "limitations": [
    {
      "text": "Overlapping corruption in the same parity column can defeat repair; online recovery also has concurrency restrictions.",
      "citationIds": [
        "pangolin-paper"
      ]
    }
  ],
  "related": [
    "nova",
    "persistent-memory",
    "dax",
    "checksum",
    "data-scrubbing"
  ],
  "supersedes": [],
  "supersededBy": [],
  "firstSeen": null,
  "lastSeen": null,
  "updated": "2026-11-14",
  "citations": [
    {
      "id": "pangolin-paper",
      "title": "Lu Zhang and Steven Swanson. Pangolin: A Fault-Tolerant Persistent Memory Programming Library. USENIX ATC 2019, pp. 897-912, sections 3.1-3.6 and 4.6.",
      "url": "https://www.usenix.org/system/files/atc19-zhang-lu.pdf",
      "accessed": "2026-11-14"
    },
    {
      "id": "fortis-paper",
      "title": "Xu et al. NOVA-Fortis: A Fault-Tolerant Non-Volatile Main Memory File System. SOSP 2017, section 4.3. DOI: 10.1145/3132747.3132761.",
      "url": "https://cseweb.ucsd.edu/~swanson/papers/SOSP2017-NOVAFortis.pdf",
      "accessed": "2026-11-14"
    },
    {
      "id": "hesela-pmem",
      "title": "Hesela: mapped-memory integrity and checksum verification policy.",
      "url": "https://hesela.com/analyses/pmem-persistence-domains-dax/#pangolin",
      "accessed": "2026-11-14"
    }
  ],
  "provenance": [
    "Historical prototype and primary-source synthesis, not a current deployment recommendation or a benchmark reproduction.",
    "The paper's media-error injection uses mprotect and SIGSEGV; it is not physical fault injection. [pangolin-paper]"
  ]
}
