From b93cf51c0fa9b99bbbbc6203a255ca71c2b45cee Mon Sep 17 00:00:00 2001 From: "James R. Barlow" Date: Wed, 16 Sep 2020 23:48:55 -0700 Subject: [PATCH] Disable pikepdf mmap Infrequently we can reproduce this error: terminating with uncaught exception of type std::runtime_error: pybind11_object_dealloc(): Tried to deallocate unregistered instance! The error is probably related to pybind11 issue #2252 and a bunch of other related issues. Until that is resolved in pybind11 and pikepdf we will disable the pikepdf mmap interface. --- src/ocrmypdf/helpers.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/ocrmypdf/helpers.py b/src/ocrmypdf/helpers.py index 76347440..42d5e725 100644 --- a/src/ocrmypdf/helpers.py +++ b/src/ocrmypdf/helpers.py @@ -213,11 +213,15 @@ def clamp(n: T, smallest: T, largest: T) -> T: def pikepdf_enable_mmap(): - try: - if pikepdf._qpdf.set_access_default_mmap(True): - log.debug("pikepdf mmap enabled") - except AttributeError: - log.debug("pikepdf mmap not available") + # try: + # if pikepdf._qpdf.set_access_default_mmap(True): + # log.debug("pikepdf mmap enabled") + # except AttributeError: + # log.debug("pikepdf mmap not available") + # We found a race condition probably related to pybind issue #2252 that can + # cause a crash. For now, disable pikepdf mmap to be on the safe side. + log.debug("pikepdf mmap disabled") + return def deprecated(func):