Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

exec_file crash on Debug mode (Win 10)

Open
#383 1 comment 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
35/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Stale
Tech stack
cpp, python
Domain
backend

Research direction

No repository files or tests are named. Reproduce the crash on the stated Windows 10, VS2019, VC142, Python 3.10 debug setup, then compare the failing exec_file path using PyRun_File with the working PyRun_SimpleFile and _Py_fopen_obj path. Done means executing embedding.py in debug mode without the reported crash.

Written by the indexing model from the issue text.

Description

I face a crash on build 1.78 of boost python, on Windows 10, VS2019, VC142, Python 3.10 only on debug mode. Here is the script

#ifdef _DEBUG

#undef _DEBUG

#endif
#define PY_SSIZE_T_CLEAN
#include <Python.h>
int main(int argc, char* argv[])
{
	Py_Initialize();
	char* f = const_cast<char*>("E:\\Projects\\TestBoostPython\\embedding.py");
	PyObject* fo = Py_BuildValue("s", f);
	PyObject* fb = Py_None;
	PyUnicode_FSConverter(fo, &fb);
	char* f_as_uft = PyBytes_AsString(fb);
	FILE* fs = fopen(f_as_uft, "r+");
	Py_DECREF(fo);
	Py_DECREF(fb);
	PyObject* result = PyRun_File(fs,
		f,
		Py_file_input,
		nullptr, nullptr);
	fclose(fs);
	Py_FinalizeEx();
	return 0;
}

which is exactly the exec_file of boost python.

The call stack is

	ucrtbase.dll!_invoke_watson()	Unknown
 	ucrtbase.dll!_invalid_parameter()	Unknown
 	ucrtbase.dll!_invalid_parameter_noinfo()	Unknown
 	ucrtbase.dll!_read()	Unknown
 	ucrtbase.dll!common_refill_and_read_nolock<char>()	Unknown
 	ucrtbase.dll!fgetc()	Unknown
	python310.dll!check_bom(int(*)(tok_state *) get_char, void(*)(int, tok_state *) unget_char, int(*)(tok_state *, const char *) tok, tok_state *) Line 267	C
 	python310.dll!tok_underflow_file(tok_state * tok) Line 944	C
 	[Inline Frame] python310.dll!tok_nextc(tok_state *) Line 1042	C
 	python310.dll!tok_get(tok_state * tok, const char * * p_start, const char * * p_end) Line 1366	C
 	[Inline Frame] python310.dll!PyTokenizer_Get(tok_state * tok, const char * *) Line 2053	C
 	python310.dll!_PyPegen_fill_token(Parser * p) Line 745	C
 	[Inline Frame] python310.dll!_PyPegen_expect_token(Parser *) Line 900	C
 	[Inline Frame] python310.dll!_tmp_15_rule(Parser *) Line 22816	C
 	[Inline Frame] python310.dll!_PyPegen_lookahead(int) Line 891	C
 	python310.dll!compound_stmt_rule(Parser * p) Line 2145	C
 	[Inline Frame] python310.dll!statement_rule(Parser *) Line 1490	C
 	[Inline Frame] python310.dll!_loop1_11_rule(Parser *) Line 22574	C
 	[Inline Frame] python310.dll!statements_rule(Parser *) Line 1446	C
 	python310.dll!file_rule(Parser * p) Line 957	C
 	python310.dll!_PyPegen_parse(Parser * p) Line 34511	C
 	python310.dll!_PyPegen_run_parser(Parser * p) Line 1325	C
 	[Inline Frame] python310.dll!_PyPegen_run_parser_from_file_pointer(_iobuf *) Line 1423	C
 	python310.dll!_PyParser_ASTFromFile(_iobuf * fp, _object * filename_ob, const char * enc, int mode, const char * ps1, const char * ps2, PyCompilerFlags * flags, int * errcode, _arena * arena) Line 26	C
 	python310.dll!pyrun_file(_iobuf * fp, _object * filename, int start, _object * globals, _object * locals, int closeit, PyCompilerFlags * flags) Line 1199	C
 	python310.dll!PyRun_FileExFlags(_iobuf * fp, const char * filename, int start, _object * globals, _object * locals, int closeit, PyCompilerFlags * flags) Line 1230	C

However the following code runs smoothly on the same environment

#ifdef _DEBUG
#undef _DEBUG
#endif

#define PY_SSIZE_T_CLEAN
#include <Python.h>

int main(int argc, char* argv[])
{
	Py_Initialize();
	char* f = const_cast<char*>("E:\\Projects\\TestBoostPython\\embedding.py");
	PyObject* obj = Py_BuildValue("s", f);
	FILE* file = _Py_fopen_obj(obj, "r+");
	if (file != NULL) {
		PyRun_SimpleFile(file, f);
	}
	Py_Finalize();
}
Dominant language
C++
Stars
537
Forks
223
Avg merge
11h 22m
Merged PRs (30d)
2

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from boostorg/python

All issues in boostorg/python

Similar issues

More C++ issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.