pytorch
fca8a0ac - Prevent import race condition that leaves torch.package.PackagePickler with unwanted dispatch table entries. (#71025)

Commit
3 years ago
Prevent import race condition that leaves torch.package.PackagePickler with unwanted dispatch table entries. (#71025) Summary: Pull Request resolved: https://github.com/pytorch/pytorch/pull/71025 TL;DR In come cases: 1) user imports `dill`, which mutates `_Pickler.dispatch`, 2) user imports lib that imports `torch.package` 3) `PackagePickler.dispatch = _Pickler.dispatch.copy()` makes a copy of the mutated table 4) user calls `dill.extend(use_dill=False)` to reset `_Pickler.dispatch`, expecting everything to be okay 5) `PackagePickler` is used to pickle something like `ModuleDict`. `PackagePickler.dispatch` has stale entries to dill pickle functions like `save_module_dict`, which sometimes hard-code calls to `StockPickler.save_global`, which is unaware of torch.package module prefixes. 6) Exception is raised, e.g. `Got unhandled exception Can't pickle <class '<torch_package_2>.caffe2.mylib'>: it's not found as <class '<torch_package_2>.caffe2.mylib'>` Differential Revision: D33483672 fbshipit-source-id: d7cd2a925bedf27c02524a6a4c3132a262f5c984
Author
Parents
Loading