Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Py_EnterRecursiveCall()/_Py_EnterRecursiveCall() return value misused in a number of places #101965

Closed
OTheDev opened this issue Feb 16, 2023 · 3 comments · Fixed by #101966
Closed
Labels
type-bug An unexpected behavior, bug, or error

Comments

@OTheDev
Copy link
Contributor

OTheDev commented Feb 16, 2023

Using grep, I identified 3 instances in main where code checks if Py_EnterRecursiveCall(...) < 0 (which just returns _Py_EnterRecursiveCall(...)) or _Py_EnterRecursiveCall(...) < 0.

  1. Py_EnterRecursiveCall() documentation only guarantees that a nonzero value is returned in the event of an error.
  2. The actual implementation can't return a negative value:

static inline int _Py_EnterRecursiveCallTstate(PyThreadState *tstate,
const char *where) {
return (_Py_MakeRecCheck(tstate) && _Py_CheckRecursiveCall(tstate, where));
}
static inline int _Py_EnterRecursiveCall(const char *where) {
PyThreadState *tstate = _PyThreadState_GET();
return _Py_EnterRecursiveCallTstate(tstate, where);
}

Linked PRs

@OTheDev OTheDev added the type-bug An unexpected behavior, bug, or error label Feb 16, 2023
@OTheDev OTheDev changed the title Py_EnterRecursiveCall()/_Py_EnterRecursiveCall() return value misused in a number of places in main Py_EnterRecursiveCall()/_Py_EnterRecursiveCall() return value misused in a number of places Feb 16, 2023
@erlend-aasland
Copy link
Contributor

Thanks for the report, Owain! In this case, I think we can close it as obsolete bco. Irit's patch #102078. Thanks for your interest in improving CPython :)

@erlend-aasland erlend-aasland closed this as not planned Won't fix, can't repro, duplicate, stale Feb 20, 2023
@OTheDev
Copy link
Contributor Author

OTheDev commented Feb 20, 2023

@erlend-aasland Thanks! However, Irit's patch does not fix the instances in the bisect module. Will it be addressed there?

@erlend-aasland
Copy link
Contributor

@erlend-aasland Thanks! However, Irit's patch does not fix the instances in the bisect module. Will it be addressed there?

Well observed! Check with Irit on her PR. I'm guessing it is out of scope for her PR. In that case we'll reopen this and you can update your PR to target the remaining issues.

miss-islington pushed a commit that referenced this issue Feb 21, 2023
…module.c (GH-101966)

Closes #101965

Automerge-Triggered-By: GH:erlend-aasland
carljm added a commit to carljm/cpython that referenced this issue Feb 23, 2023
* main: (76 commits)
  Fix syntax error in struct doc example (python#102160)
  pythongh-99108: Import MD5 and SHA1 from HACL* (python#102089)
  pythonGH-101777: `queue.rst`: use 2 spaces after a period to be consistent. (python#102143)
  Few coverage nitpicks for the cmath module (python#102067)
  pythonGH-100982: Restrict `FOR_ITER_RANGE` to a single instruction to allow instrumentation. (pythonGH-101985)
  pythongh-102135: Update turtle docs to rename wikipedia demo to rosette (python#102137)
  pythongh-99942: python.pc on android/cygwin should link to libpython per configure.ac (pythonGH-100356)
  pythongh-95672 fix typo SkitTest to SkipTest (pythongh-102119)
  pythongh-101936: Update the default value of fp from io.StringIO to io.BytesIO (pythongh-102100)
  pythongh-102008: simplify test_except_star by using sys.exception() instead of sys.exc_info() (python#102009)
  pythongh-101903: Remove obsolete undefs for previously removed macros Py_EnterRecursiveCall and Py_LeaveRecursiveCall (python#101923)
  pythongh-100556: Improve clarity of `or` docs (python#100589)
  pythongh-101777: Make `PriorityQueue` docs slightly clearer (python#102026)
  pythongh-101965: Fix usage of Py_EnterRecursiveCall return value in _bisectmodule.c (pythonGH-101966)
  pythongh-101578: Amend exception docs (python#102057)
  pythongh-101961 fileinput.hookcompressed should not set the encoding value for the binary mode (pythongh-102068)
  pythongh-102056: Fix a few bugs in error handling of exception printing code (python#102078)
  pythongh-102011: use sys.exception() instead of sys.exc_info() in docs where possible (python#102012)
  pythongh-101566: Sync with zipp 3.14. (pythonGH-102018)
  pythonGH-99818: improve the documentation for zipfile.Path and Traversable (pythonGH-101589)
  ...
python-sidebar pushed a commit to python-sidebar/Python-Documentation-Fork-With-TOC that referenced this issue Sep 1, 2024
…bisectmodule.c (pythonGH-101966)

Closes python#101965

Automerge-Triggered-By: GH:erlend-aasland
python-sidebar pushed a commit to python-sidebar/Python-Documentation-Fork-With-TOC that referenced this issue Sep 1, 2024
…bisectmodule.c (pythonGH-101966)

Closes python#101965

Automerge-Triggered-By: GH:erlend-aasland
JelleZijlstra pushed a commit to JelleZijlstra/cpython that referenced this issue Sep 10, 2024
…bisectmodule.c (pythonGH-101966)

Closes python#101965

Automerge-Triggered-By: GH:erlend-aasland
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type-bug An unexpected behavior, bug, or error
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants