[New-bugs-announce] [issue30873] `SystemError: <built-in function create_builtin> returned NULL without setting an error` from imp.create_builtin
ppperry
report at bugs.python.org
Fri Jul 7 22:29:24 EDT 2017
New submission from ppperry:
The following rather long code, reduced from the same example as issue30626, produces a SystemError:
import builtins
from importlib.machinery import PathFinder
import importlib
import sys
import _imp
from functools import partial
def copy_module(module):
new = type(sys)(module.__name__)
new.__dict__.update(module.__dict__)
return new
_absent = object()
def new_exec(code, globals=_absent, locals=_absent, *, new_builtins):
if globals == _absent:
frame = sys._getframe(2)
globals = frame.f_globals
locals = frame.f_locals
elif locals == _absent:
locals = globals
globals.setdefault("__builtins__", new_builtins);
return exec(code, globals, locals)
dct={}
dct["__builtins__"] = b = copy_module(builtins)
b.exec = partial(new_exec, new_builtins=b)
spec = PathFinder.find_spec("_bootstrap",importlib.__path__)
source_bootstrap = type(sys)("_bootstrap");
spec.loader.exec_module(source_bootstrap);
external_spec = PathFinder.find_spec("_bootstrap_external",importlib.__path__)
source_bootstrap_external = type(sys)("_bootstrap_external");
external_spec.loader.exec_module(source_bootstrap_external);
source_bootstrap.__name__ = "importlib._bootstrap";
source_bootstrap_external.__name__ = "importlib._bootstrap_external";
new_sys = copy_module(sys)
new_sys.path_importer_cache = {}
new_sys.path_hooks = []
new_sys.meta_path = []
new_sys.modules = {
"importlib._bootstrap":source_bootstrap,
"importlib._bootstrap_external":source_bootstrap_external,
}
for mod in new_sys.modules.values():
mod.__builtins__ = b
b.__import__ = source_bootstrap.__import__
source_bootstrap._install(new_sys,_imp)
exec("import _pickle", dct)
----------
components: Interpreter Core, Library (Lib)
messages: 297924
nosy: brett.cannon, eric.snow, ncoghlan, ppperry
priority: normal
severity: normal
status: open
title: `SystemError: <built-in function create_builtin> returned NULL without setting an error` from imp.create_builtin
type: behavior
versions: Python 3.6
_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue30873>
_______________________________________
More information about the New-bugs-announce
mailing list