PyInstaller is a tool for freezing Python applications into stand-alone packages, much like py2exe. py2app, and bbfreeze. PyInstaller is providing *one* bootloader for all versions of Python supported (2.7, 3.4-3.6).
In PyInstaller the startup sequence is implemented in
pyi_pylib_start_python() in bootloader/src/pyi_pythonlib.c. The workflow roughly is:
- SetProgramName
- SetPythonHome
- Py_SetPath
- Setting runtime options
- some flags using the global variables
- PySys_AddWarnOption -> crash
- Py_Initialize
- PySys_SetPath
The crash occurs due to tstate (thread state) not being initialized when
calling PySys_AddWarnOption.