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

gh-101965: Fix usage of Py_EnterRecursiveCall return value in _bisectmodule.c #101966

Merged

Conversation

OTheDev
Copy link
Contributor

@OTheDev OTheDev commented Feb 16, 2023

@OTheDev OTheDev requested a review from rhettinger as a code owner February 16, 2023 22:56
@OTheDev OTheDev changed the title gh-101965: fix incorrect usage of the return value of Py_EnterRecursiveCall() in main gh-101965: fix incorrect usage of the return value of Py_EnterRecursiveCall() Feb 16, 2023
@rhettinger rhettinger removed their request for review February 17, 2023 02:40
@arhadthedev arhadthedev added extension-modules C modules in the Modules dir topic-C-API labels Feb 17, 2023
@erlend-aasland erlend-aasland changed the title gh-101965: fix incorrect usage of the return value of Py_EnterRecursiveCall() gh-101965: Fix usage of Py_EnterRecursiveCall return value in _bisectmodule.c Feb 21, 2023
@arhadthedev
Copy link
Member

A news entry of gh-102078 covers this PR too so skip-news.

@miss-islington
Copy link
Contributor

@OTheDev: Status check is done, and it's a failure or timed out ❌.

@arhadthedev
Copy link
Member

ASAN worker reports use-after-free in drop_gil() previously allocated by alloc_interpreter() and freed by _PyInterpreterState_IDDecref():

==17185==ERROR: AddressSanitizer: heap-use-after-free on address 0x6340005a0860 at pc 0x55e932d96946 bp 0x7f3d1f161e10 sp 0x7f3d1f161e00
READ of size 4 at 0x6340005a0860 thread T8
    #0 0x55e932d96945 in drop_gil Python/ceval_gil.c:299
    #1 0x55e932dfb311 in _PyThreadState_DeleteCurrent Python/pystate.c:1462
    #2 0x55e932e3694f in pythread_wrapper Python/thread_pthread.h:233
    #3 0x7f3d2458b608 in start_thread /build/glibc-SzIz7B/glibc-2.31/nptl/pthread_create.c:477
    #4 0x7f3d244b0132 in __clone (/lib/x86_64-linux-gnu/libc.so.6+0x11f132)

0x6340005a0860 is located 96 bytes inside of 113016-byte region [0x6340005a0800,0x6340005bc178)
freed by thread T0 here:
    #0 0x7f3d2480d40f in __interceptor_free ../../../../src/libsanitizer/asan/asan_malloc_linux.cc:122
    #1 0x55e932dfc69d in _PyInterpreterState_IDDecref Python/pystate.c:1017
    #2 0x55e932ab54ab in interpid_dealloc Objects/interpreteridobject.c:94
    #3 0x55e932d830ba in Py_DECREF Include/object.h:561
    #4 0x55e932d830ba in Py_XDECREF Include/object.h:654
    #5 0x55e932d830ba in _PyFrame_Clear Python/frame.c:142
    #6 0x55e9329027ab in clear_thread_frame Python/ceval.c:1652
    #7 0x55e9329027ab in _PyEvalFrameClearAndPop Python/ceval.c:1677
    #8 0x55e9329027ab in _PyEval_EvalFrameDefault Python/generated_cases.c.h:771
    #9 0x55e932a4b608 in _PyObject_VectorcallTstate Include/internal/pycore_call.h:92
    #10 0x55e932a4b608 in method_vectorcall Objects/classobject.c:89
    #11 0x55e932a4399e in PyObject_Call (/home/runner/work/cpython/cpython/python+0x3f899e)
    #12 0x55e932909a5e in do_call_core Python/ceval.c:2626
    #13 0x55e932909a5e in _PyEval_EvalFrameDefault Python/generated_cases.c.h:3707
    #14 0x55e932a451e4 in _PyObject_FastCallDictTstate Objects/call.c:143
    #15 0x55e932a451e4 in _PyObject_Call_Prepend Objects/call.c:486
    #16 0x55e932b9506c in slot_tp_call Objects/typeobject.c:8170
    #17 0x55e932a401cf in _PyObject_MakeTpCall Objects/call.c:216
    #18 0x55e9328faef1 in _PyEval_EvalFrameDefault Python/generated_cases.c.h:3086
    #19 0x55e932a4b608 in _PyObject_VectorcallTstate Include/internal/pycore_call.h:92
    #20 0x55e932a4b608 in method_vectorcall Objects/classobject.c:89
    #21 0x55e932a4399e in PyObject_Call (/home/runner/work/cpython/cpython/python+0x3f899e)
    #22 0x55e932909a5e in do_call_core Python/ceval.c:2626
    #23 0x55e932909a5e in _PyEval_EvalFrameDefault Python/generated_cases.c.h:3707
    #24 0x55e932a451e4 in _PyObject_FastCallDictTstate Objects/call.c:143
    #25 0x55e932a451e4 in _PyObject_Call_Prepend Objects/call.c:486
    #26 0x55e932b9506c in slot_tp_call Objects/typeobject.c:8170
    #27 0x55e932a401cf in _PyObject_MakeTpCall Objects/call.c:216
    #28 0x55e9328faef1 in _PyEval_EvalFrameDefault Python/generated_cases.c.h:3086
    #29 0x55e932a4b608 in _PyObject_VectorcallTstate Include/internal/pycore_call.h:92
    #30 0x55e932a4b608 in method_vectorcall Objects/classobject.c:89
    #31 0x55e932a4399e in PyObject_Call (/home/runner/work/cpython/cpython/python+0x3f899e)
    #32 0x55e932909a5e in do_call_core Python/ceval.c:2626
    #33 0x55e932909a5e in _PyEval_EvalFrameDefault Python/generated_cases.c.h:3707
    #34 0x55e932a451e4 in _PyObject_FastCallDictTstate Objects/call.c:143
    #35 0x55e932a451e4 in _PyObject_Call_Prepend Objects/call.c:486
    #36 0x55e932b9506c in slot_tp_call Objects/typeobject.c:8170
    #37 0x55e932a401cf in _PyObject_MakeTpCall Objects/call.c:216
    #38 0x55e9328faef1 in _PyEval_EvalFrameDefault Python/generated_cases.c.h:3086
    #39 0x55e932a4b608 in _PyObject_VectorcallTstate Include/internal/pycore_call.h:92
    #40 0x55e932a4b608 in method_vectorcall Objects/classobject.c:89
    #41 0x55e932a4399e in PyObject_Call (/home/runner/work/cpython/cpython/python+0x3f899e)
    #42 0x55e932909a5e in do_call_core Python/ceval.c:2626
    #43 0x55e932909a5e in _PyEval_EvalFrameDefault Python/generated_cases.c.h:3707
    #44 0x55e932a451e4 in _PyObject_FastCallDictTstate Objects/call.c:143
    #45 0x55e932a451e4 in _PyObject_Call_Prepend Objects/call.c:486

previously allocated by thread T0 here:
    #0 0x7f3d2480da06 in __interceptor_calloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cc:153
    #1 0x55e932df80bd in alloc_interpreter Python/pystate.c:602
    #2 0x55e932df80bd in PyInterpreterState_New Python/pystate.c:701
    #3 0x55e932df4686 in new_interpreter Python/pylifecycle.c:2001
    #4 0x55e932df4686 in _Py_NewInterpreterFromConfig Python/pylifecycle.c:2071
    #5 0x7f3d1f4a6f3c in interp_create Modules/_xxsubinterpretersmodule.c:560
    #6 0x55e932b32db4 in cfunction_call Objects/methodobject.c:537
    #7 0x55e932a401cf in _PyObject_MakeTpCall Objects/call.c:216
    #8 0x55e9328faef1 in _PyEval_EvalFrameDefault Python/generated_cases.c.h:3086
    #9 0x55e932a4b608 in _PyObject_VectorcallTstate Include/internal/pycore_call.h:92
    #10 0x55e932a4b608 in method_vectorcall Objects/classobject.c:89
    #11 0x55e932a4399e in PyObject_Call (/home/runner/work/cpython/cpython/python+0x3f899e)
    #12 0x55e932909a5e in do_call_core Python/ceval.c:2626
    #13 0x55e932909a5e in _PyEval_EvalFrameDefault Python/generated_cases.c.h:3707
    #14 0x55e932a451e4 in _PyObject_FastCallDictTstate Objects/call.c:143
    #15 0x55e932a451e4 in _PyObject_Call_Prepend Objects/call.c:486
    #16 0x55e932b9506c in slot_tp_call Objects/typeobject.c:8170
    #17 0x55e932a401cf in _PyObject_MakeTpCall Objects/call.c:216
    #18 0x55e9328faef1 in _PyEval_EvalFrameDefault Python/generated_cases.c.h:3086
    #19 0x55e932a4b608 in _PyObject_VectorcallTstate Include/internal/pycore_call.h:92
    #20 0x55e932a4b608 in method_vectorcall Objects/classobject.c:89
    #21 0x55e932a4399e in PyObject_Call (/home/runner/work/cpython/cpython/python+0x3f899e)
    #22 0x55e932909a5e in do_call_core Python/ceval.c:2626
    #23 0x55e932909a5e in _PyEval_EvalFrameDefault Python/generated_cases.c.h:3707
    #24 0x55e932a451e4 in _PyObject_FastCallDictTstate Objects/call.c:143
    #25 0x55e932a451e4 in _PyObject_Call_Prepend Objects/call.c:486
    #26 0x55e932b9506c in slot_tp_call Objects/typeobject.c:8170
    #27 0x55e932a401cf in _PyObject_MakeTpCall Objects/call.c:216
    #28 0x55e9328faef1 in _PyEval_EvalFrameDefault Python/generated_cases.c.h:3086
    #29 0x55e932a4b608 in _PyObject_VectorcallTstate Include/internal/pycore_call.h:92
    #30 0x55e932a4b608 in method_vectorcall Objects/classobject.c:89
    #31 0x55e932a4399e in PyObject_Call (/home/runner/work/cpython/cpython/python+0x3f899e)
    #32 0x55e932909a5e in do_call_core Python/ceval.c:2626
    #33 0x55e932909a5e in _PyEval_EvalFrameDefault Python/generated_cases.c.h:3707
    #34 0x55e932a451e4 in _PyObject_FastCallDictTstate Objects/call.c:143
    #35 0x55e932a451e4 in _PyObject_Call_Prepend Objects/call.c:486
    #36 0x55e932b9506c in slot_tp_call Objects/typeobject.c:8170
    #37 0x55e932a401cf in _PyObject_MakeTpCall Objects/call.c:216
    #38 0x55e9328faef1 in _PyEval_EvalFrameDefault Python/generated_cases.c.h:3086
    #39 0x55e932a4b608 in _PyObject_VectorcallTstate Include/internal/pycore_call.h:92
    #40 0x55e932a4b608 in method_vectorcall Objects/classobject.c:89
    #41 0x55e932a4399e in PyObject_Call (/home/runner/work/cpython/cpython/python+0x3f899e)

Thread T8 created by T0 here:
    #0 0x7f3d2473a815 in __interceptor_pthread_create ../../../../src/libsanitizer/asan/asan_interceptors.cc:208
    #1 0x55e932e36cc2 in PyThread_start_new_thread Python/thread_pthread.h:280
    #2 0x55e932f7276b in thread_PyThread_start_new_thread Modules/_threadmodule.c:1177
    #3 0x55e932b32d94 in cfunction_call Objects/methodobject.c:548
    #4 0x55e932a401cf in _PyObject_MakeTpCall Objects/call.c:216
    #5 0x55e9328faef1 in _PyEval_EvalFrameDefault Python/generated_cases.c.h:3086
    #6 0x55e932d13ce4 in _PyEval_EvalFrame Include/internal/pycore_ceval.h:88
    #7 0x55e932d13ce4 in _PyEval_Vector Python/ceval.c:1710
    #8 0x55e932d13ce4 in PyEval_EvalCode Python/ceval.c:576
    #9 0x55e932e004d2 in run_eval_code_obj Python/pythonrun.c:1702
    #10 0x55e932e006e1 in run_mod Python/pythonrun.c:1723
    #11 0x55e932e0841d in PyRun_StringFlags Python/pythonrun.c:1592
    #12 0x7f3d1f4a878f in _run_script Modules/_xxsubinterpretersmodule.c:459
    #13 0x7f3d1f4a878f in _run_script_in_interpreter Modules/_xxsubinterpretersmodule.c:515
    #14 0x7f3d1f4a878f in interp_run_string Modules/_xxsubinterpretersmodule.c:741
    #15 0x55e932b32db4 in cfunction_call Objects/methodobject.c:537
    #16 0x55e932a401cf in _PyObject_MakeTpCall Objects/call.c:216
    #17 0x55e9328faef1 in _PyEval_EvalFrameDefault Python/generated_cases.c.h:3086
    #18 0x55e932a4b608 in _PyObject_VectorcallTstate Include/internal/pycore_call.h:92
    #19 0x55e932a4b608 in method_vectorcall Objects/classobject.c:89
    #20 0x55e932a4399e in PyObject_Call (/home/runner/work/cpython/cpython/python+0x3f899e)
    #21 0x55e932909a5e in do_call_core Python/ceval.c:2626
    #22 0x55e932909a5e in _PyEval_EvalFrameDefault Python/generated_cases.c.h:3707
    #23 0x55e932a451e4 in _PyObject_FastCallDictTstate Objects/call.c:143
    #24 0x55e932a451e4 in _PyObject_Call_Prepend Objects/call.c:486
    #25 0x55e932b9506c in slot_tp_call Objects/typeobject.c:8170
    #26 0x55e932a401cf in _PyObject_MakeTpCall Objects/call.c:216
    #27 0x55e9328faef1 in _PyEval_EvalFrameDefault Python/generated_cases.c.h:3086
    #28 0x55e932a4b608 in _PyObject_VectorcallTstate Include/internal/pycore_call.h:92
    #29 0x55e932a4b608 in method_vectorcall Objects/classobject.c:89
    #30 0x55e932a4399e in PyObject_Call (/home/runner/work/cpython/cpython/python+0x3f899e)
    #31 0x55e932909a5e in do_call_core Python/ceval.c:2626
    #32 0x55e932909a5e in _PyEval_EvalFrameDefault Python/generated_cases.c.h:3707
    #33 0x55e932a451e4 in _PyObject_FastCallDictTstate Objects/call.c:143
    #34 0x55e932a451e4 in _PyObject_Call_Prepend Objects/call.c:486
    #35 0x55e932b9506c in slot_tp_call Objects/typeobject.c:8170
    #36 0x55e932a401cf in _PyObject_MakeTpCall Objects/call.c:216
    #37 0x55e9328faef1 in _PyEval_EvalFrameDefault Python/generated_cases.c.h:3086
    #38 0x55e932a4b608 in _PyObject_VectorcallTstate Include/internal/pycore_call.h:92
    #39 0x55e932a4b608 in method_vectorcall Objects/classobject.c:89
    #40 0x55e932a4399e in PyObject_Call (/home/runner/work/cpython/cpython/python+0x3f899e)
    #41 0x55e932909a5e in do_call_core Python/ceval.c:2626
    #42 0x55e932909a5e in _PyEval_EvalFrameDefault Python/generated_cases.c.h:3707
    #43 0x55e932a451e4 in _PyObject_FastCallDictTstate Objects/call.c:143
    #44 0x55e932a451e4 in _PyObject_Call_Prepend Objects/call.c:486
    #45 0x55e932b9506c in slot_tp_call Objects/typeobject.c:8170
    #46 0x55e932a401cf in _PyObject_MakeTpCall Objects/call.c:216
    #47 0x55e9328faef1 in _PyEval_EvalFrameDefault Python/generated_cases.c.h:3086
    #48 0x55e932a4b608 in _PyObject_VectorcallTstate Include/internal/pycore_call.h:92
    #49 0x55e932a4b608 in method_vectorcall Objects/classobject.c:89
    #50 0x55e932a4399e in PyObject_Call (/home/runner/work/cpython/cpython/python+0x3f899e)
    #51 0x55e932909a5e in do_call_core Python/ceval.c:2626
    #52 0x55e932909a5e in _PyEval_EvalFrameDefault Python/generated_cases.c.h:3707
    #53 0x55e932a451e4 in _PyObject_FastCallDictTstate Objects/call.c:143
    #54 0x55e932a451e4 in _PyObject_Call_Prepend Objects/call.c:486
    #55 0x55e932b9506c in slot_tp_call Objects/typeobject.c:8170
    #56 0x55e932a401cf in _PyObject_MakeTpCall Objects/call.c:216
    #57 0x55e9328faef1 in _PyEval_EvalFrameDefault Python/generated_cases.c.h:3086
    #58 0x55e932f87ef5 in _PyObject_VectorcallTstate Include/internal/pycore_call.h:92
    #59 0x55e932f87ef5 in partial_vectorcall Modules/_functoolsmodule.c:[230](https://github.com/python/cpython/actions/runs/4230678718/jobs/7348285060#step:13:231)
    #60 0x55e932a42bf7 in _PyObject_VectorcallTstate Include/internal/pycore_call.h:92
    #61 0x55e932a42bf7 in PyObject_Vectorcall Objects/call.c:301
    #62 0x55e9328faef1 in _PyEval_EvalFrameDefault Python/generated_cases.c.h:3086
    #63 0x55e932a4b789 in _PyObject_VectorcallTstate Include/internal/pycore_call.h:92
    #64 0x55e932a4b789 in method_vectorcall Objects/classobject.c:59
    #65 0x55e932a43a8d in PyObject_Call (/home/runner/work/cpython/cpython/python+0x3f8a8d)
    #66 0x55e932909a5e in do_call_core Python/ceval.c:2626
    #67 0x55e932909a5e in _PyEval_EvalFrameDefault Python/generated_cases.c.h:3707
    #68 0x55e932d13ce4 in _PyEval_EvalFrame Include/internal/pycore_ceval.h:88
    #69 0x55e932d13ce4 in _PyEval_Vector Python/ceval.c:1710
    #70 0x55e932d13ce4 in PyEval_EvalCode Python/ceval.c:576
    #71 0x55e932d0c2c1 in builtin_exec_impl Python/bltinmodule.c:1076
    #72 0x55e932d0c2c1 in builtin_exec Python/clinic/bltinmodule.c.h:586
    #73 0x55e932b33e7b in cfunction_vectorcall_FASTCALL_KEYWORDS Objects/methodobject.c:438
    #74 0x55e932a42bf7 in _PyObject_VectorcallTstate Include/internal/pycore_call.h:92
    #75 0x55e932a42bf7 in PyObject_Vectorcall Objects/call.c:301
    #76 0x55e9328faef1 in _PyEval_EvalFrameDefault Python/generated_cases.c.h:3086
    #77 0x55e932a4399e in PyObject_Call (/home/runner/work/cpython/cpython/python+0x3f899e)
    #78 0x55e932e648db in pymain_run_module Modules/main.c:300
    #79 0x55e932e65e59 in pymain_run_python Modules/main.c:604
    #80 0x55e932e67b28 in Py_RunMain Modules/main.c:689
    #81 0x55e932e67b28 in pymain_main Modules/main.c:719
    #82 0x55e932e67b28 in Py_BytesMain Modules/main.c:743
    #83 0x7f3d[243](https://github.com/python/cpython/actions/runs/4230678718/jobs/7348285060#step:13:244)b5082 in __libc_start_main ../csu/libc-start.c:308

SUMMARY: AddressSanitizer: heap-use-after-free Python/ceval_gil.c:[299](https://github.com/python/cpython/actions/runs/4230678718/jobs/7348285060#step:13:300) in drop_gil
Shadow bytes around the buggy address:
  0x0c68800ac0b0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c68800ac0c0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c68800ac0d0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c68800ac0e0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c68800ac0f0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
=>0x0c68800ac100: fd fd fd fd fd fd fd fd fd fd fd fd[fd]fd fd fd
  0x0c68800ac110: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c68800ac120: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c68800ac130: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c68800ac140: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c68800ac150: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
Shadow byte legend (one shadow byte represents 8 application bytes):
  Addressable:           00
  Partially addressable: 01 02 03 04 05 06 07 
  Heap left redzone:       fa
  Freed heap region:       fd
  Stack left redzone:      f1
  Stack mid redzone:       f2
  Stack right redzone:     f3
  Stack after return:      f5
  Stack use after scope:   f8
  Global redzone:          f9
  Global init order:       f6
  Poisoned by user:        f7
  Container overflow:      fc
  Array cookie:            ac
  Intra object redzone:    bb
  ASan internal:           fe
  Left alloca redzone:     ca
  Right alloca redzone:    cb
  Shadow gap:              cc
==17185==ABORTING

@miss-islington
Copy link
Contributor

Status check is done, and it's a success ✅.

@miss-islington miss-islington merged commit 0f7a972 into python:main Feb 21, 2023
@OTheDev
Copy link
Contributor Author

OTheDev commented Feb 21, 2023

Thanks @erlend-aasland and @arhadthedev for the help here! Appreciate it!

@erlend-aasland
Copy link
Contributor

Thanks for the PR!

Oleg: I re-ran and ASAN succeeded, so it's probably a flaky test :(

@erlend-aasland
Copy link
Contributor

@iritkatriel, I say we backport this to 3.11 and 3.10.

@iritkatriel
Copy link
Member

Agreed.

@erlend-aasland erlend-aasland added needs backport to 3.10 only security fixes needs backport to 3.11 only security fixes labels Feb 21, 2023
@miss-islington
Copy link
Contributor

Thanks @OTheDev for the PR 🌮🎉.. I'm working now to backport this PR to: 3.10.
🐍🍒⛏🤖

@miss-islington
Copy link
Contributor

Thanks @OTheDev for the PR 🌮🎉.. I'm working now to backport this PR to: 3.11.
🐍🍒⛏🤖

@miss-islington
Copy link
Contributor

Sorry, @OTheDev, I could not cleanly backport this to 3.11 due to a conflict.
Please backport using cherry_picker on command line.
cherry_picker 0f7a9725300e750947159409abbf5722a4a79f8b 3.11

@miss-islington miss-islington self-assigned this Feb 21, 2023
@miss-islington
Copy link
Contributor

Sorry @OTheDev, I had trouble checking out the 3.10 backport branch.
Please retry by removing and re-adding the "needs backport to 3.10" label.
Alternatively, you can backport using cherry_picker on the command line.
cherry_picker 0f7a9725300e750947159409abbf5722a4a79f8b 3.10

@erlend-aasland
Copy link
Contributor

@OTheDev, can you fix the backports? See the devguide if you don't know how to do it.

@OTheDev
Copy link
Contributor Author

OTheDev commented Feb 21, 2023

@erlend-aasland Sure, I can work on this in a couple of hours!

@OTheDev
Copy link
Contributor Author

OTheDev commented Feb 21, 2023

@erlend-aasland It looks like Py_EnterRecursiveCall() is not in _bisectmodule.c in 3.11 and 3.10, so I think a backport isn't needed?

@erlend-aasland erlend-aasland removed needs backport to 3.10 only security fixes needs backport to 3.11 only security fixes labels Feb 21, 2023
@erlend-aasland
Copy link
Contributor

Yeah, looks like Dennis added them recently. No backport, then! :)

carljm added a commit to carljm/cpython that referenced this pull request 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 pull request 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 pull request 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 pull request 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
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Py_EnterRecursiveCall()/_Py_EnterRecursiveCall() return value misused in a number of places
7 participants