diff -r 6f41495e9336 Lib/pickle.py --- a/Lib/pickle.py Wed Dec 18 23:35:15 2013 -0700 +++ b/Lib/pickle.py Thu Jul 03 17:03:41 2014 +0200 @@ -280,7 +280,9 @@ module_name = getattr(obj, '__module__', None) if module_name is not None: return module_name - for module_name, module in sys.modules.items(): + # Protect the iteration by using a list copy of sys.modules against dynamic + # modules that trigger imports of other modules upon calls to getattr. + for module_name, module in list(sys.modules.items()): if module_name == '__main__' or module is None: continue try: