[Python-checkins] GH-91173: disable frozen modules in debug builds (#92023)
gvanrossum
webhook-mailer at python.org
Tue May 3 18:20:21 EDT 2022
https://github.com/python/cpython/commit/e8d7661ff25fb698062ab07e37362c2c20471984
commit: e8d7661ff25fb698062ab07e37362c2c20471984
branch: main
author: Kumar Aditya <59607654+kumaraditya303 at users.noreply.github.com>
committer: gvanrossum <gvanrossum at gmail.com>
date: 2022-05-03T15:20:13-07:00
summary:
GH-91173: disable frozen modules in debug builds (#92023)
files:
A Misc/NEWS.d/next/Core and Builtins/2022-05-02-12-40-18.gh-issue-91173.k_Dr6z.rst
M Lib/test/test_embed.py
M Python/initconfig.c
diff --git a/Lib/test/test_embed.py b/Lib/test/test_embed.py
index 9bb4bd7e8feb7..e25541820748b 100644
--- a/Lib/test/test_embed.py
+++ b/Lib/test/test_embed.py
@@ -22,7 +22,7 @@
MS_WINDOWS = (os.name == 'nt')
MACOS = (sys.platform == 'darwin')
-
+Py_DEBUG = hasattr(sys, 'gettotalrefcount')
PYMEM_ALLOCATOR_NOT_SET = 0
PYMEM_ALLOCATOR_DEBUG = 2
PYMEM_ALLOCATOR_MALLOC = 3
@@ -478,7 +478,7 @@ class InitConfigTests(EmbeddingTestsMixin, unittest.TestCase):
'pathconfig_warnings': 1,
'_init_main': 1,
'_isolated_interpreter': 0,
- 'use_frozen_modules': 1,
+ 'use_frozen_modules': not Py_DEBUG,
'_is_python_build': IGNORE_CONFIG,
}
if MS_WINDOWS:
@@ -1177,7 +1177,7 @@ def test_init_setpath_config(self):
# The current getpath.c doesn't determine the stdlib dir
# in this case.
'stdlib_dir': '',
- 'use_frozen_modules': 1,
+ 'use_frozen_modules': not Py_DEBUG,
# overridden by PyConfig
'program_name': 'conf_program_name',
'base_executable': 'conf_executable',
@@ -1416,12 +1416,12 @@ def test_init_pyvenv_cfg(self):
config['base_prefix'] = pyvenv_home
config['prefix'] = pyvenv_home
config['stdlib_dir'] = os.path.join(pyvenv_home, 'Lib')
- config['use_frozen_modules'] = 1
+ config['use_frozen_modules'] = not Py_DEBUG
else:
# cannot reliably assume stdlib_dir here because it
# depends too much on our build. But it ought to be found
config['stdlib_dir'] = self.IGNORE_CONFIG
- config['use_frozen_modules'] = 1
+ config['use_frozen_modules'] = not Py_DEBUG
env = self.copy_paths_by_env(config)
self.check_all_configs("test_init_compat_config", config,
diff --git a/Misc/NEWS.d/next/Core and Builtins/2022-05-02-12-40-18.gh-issue-91173.k_Dr6z.rst b/Misc/NEWS.d/next/Core and Builtins/2022-05-02-12-40-18.gh-issue-91173.k_Dr6z.rst
new file mode 100644
index 0000000000000..fa7761381b314
--- /dev/null
+++ b/Misc/NEWS.d/next/Core and Builtins/2022-05-02-12-40-18.gh-issue-91173.k_Dr6z.rst
@@ -0,0 +1 @@
+Disable frozen modules in debug builds. Patch by Kumar Aditya.
diff --git a/Python/initconfig.c b/Python/initconfig.c
index 729f7f393a39b..d928ebe88553a 100644
--- a/Python/initconfig.c
+++ b/Python/initconfig.c
@@ -732,7 +732,11 @@ _PyConfig_InitCompatConfig(PyConfig *config)
#ifdef MS_WINDOWS
config->legacy_windows_stdio = -1;
#endif
- config->use_frozen_modules = -1;
+#ifdef Py_DEBUG
+ config->use_frozen_modules = 0;
+#else
+ config->use_frozen_modules = 1;
+#endif
config->_is_python_build = 0;
config->code_debug_ranges = 1;
}
@@ -1978,25 +1982,22 @@ config_init_import(PyConfig *config, int compute_path_config)
}
/* -X frozen_modules=[on|off] */
- if (config->use_frozen_modules < 0) {
- const wchar_t *value = config_get_xoption_value(config, L"frozen_modules");
- if (value == NULL) {
- config->use_frozen_modules = !config->_is_python_build;
- }
- else if (wcscmp(value, L"on") == 0) {
- config->use_frozen_modules = 1;
- }
- else if (wcscmp(value, L"off") == 0) {
- config->use_frozen_modules = 0;
- }
- else if (wcslen(value) == 0) {
- // "-X frozen_modules" and "-X frozen_modules=" both imply "on".
- config->use_frozen_modules = 1;
- }
- else {
- return PyStatus_Error("bad value for option -X frozen_modules "
- "(expected \"on\" or \"off\")");
- }
+ const wchar_t *value = config_get_xoption_value(config, L"frozen_modules");
+ if (value == NULL) {
+ }
+ else if (wcscmp(value, L"on") == 0) {
+ config->use_frozen_modules = 1;
+ }
+ else if (wcscmp(value, L"off") == 0) {
+ config->use_frozen_modules = 0;
+ }
+ else if (wcslen(value) == 0) {
+ // "-X frozen_modules" and "-X frozen_modules=" both imply "on".
+ config->use_frozen_modules = 1;
+ }
+ else {
+ return PyStatus_Error("bad value for option -X frozen_modules "
+ "(expected \"on\" or \"off\")");
}
return _PyStatus_OK();
More information about the Python-checkins
mailing list