◐ Shell
clean mode source ↗

bpo-29684: Fix regression of PyEval_CallObjectWithKeywords by methane · Pull Request #87 · python/cpython

@methane methane changed the base branch from 3.6 to master

March 1, 2017 09:23

@methane methane changed the title bpo-29548: Fix regression of PyEval_CallObjectWithKeywords bpo-29684: Fix regression of PyEval_CallObjectWithKeywords

Mar 1, 2017

vstinner

It should raise TypeError when kwargs is not a dict.

@methane

akruis pushed a commit to akruis/cpython that referenced this pull request

Sep 9, 2017
Never call inter-thread scheduler for a tasklet switch with prev==next.
This fixes the first part of issue python#87.
Fix an assert, that is no longer valid. Fixes part 2 of issue python#87.
Add a test case for two assertion failures during interpreter shutdown.

https://bitbucket.org/stackless-dev/stackless/issues/87
(grafted from a6e5950cb45fc1d2d101866c20aea7eb5f005db0, 73f4ac31aa6a and
9f4606055d9c)

colesbury referenced this pull request in colesbury/nogil

Oct 6, 2021
There was a period between detaching the PyThreadState on
thread exit and abandoning the heap where a GC thread might
see an inconsistent state of the heap.

See #87

jaraco pushed a commit that referenced this pull request

Dec 2, 2022

jaraco added a commit to jaraco/cpython that referenced this pull request

Feb 17, 2023

This was referenced

Feb 11, 2025

SonicField added a commit to SonicField/cpython that referenced this pull request

Apr 23, 2026
… gates

Per pythia python#87 (2026-04-23 02:39Z) + supervisor [chat L2626]:

§4 amendment (sufficient → necessary-not-sufficient):
- Bridge-inventory falsification PASS confirms inventory completeness ONLY
- PASS does NOT confirm semantic equivalence of new C body vs deleted C++
- Empirical proof: push 84 95c9f9b PASSED §4 mutation but W21 golden
  still detected register-allocation HIR regression in attr_probe;
  PhxCallKind dispatch fix at 1553c14 required
- §4 alone insufficient; semantic-equivalence requires separate gates

§4b NEW SECTION (semantic-equivalence gates, MANDATORY):
- W21 golden (catches register-alloc drift, opcode-dispatch shifts, HIR
  construction-order changes — push 84 case-in-point)
- Falsifier suite 6/6 (sole-path force_compile)
- Force_compile sole-path execution (per scripts/gate_phoenix.sh, 5
  mainline functions)
- Caveat: __static__-only paths have no sole-path coverage per W27e
  accepted-residual L2531+L2533

Cross-link added: feedback_dispatch_glue_categorization.md for PARTIAL
stub Cat-A/B falsifiable test.

General principle (future workstream specs): post-Step-B falsification
test as NECESSARY-but-NOT-SUFFICIENT. Inventory-PASS does not substitute
for semantic-equivalence verification.

Pythia python#87 redefining-on-landing meta-concern addressed structurally:
spec language now distinguishes the two gate classes.

SonicField added a commit to SonicField/cpython that referenced this pull request

Apr 23, 2026
Per supervisor [chat L2626] + L2742 + librarian L2737 (close pythia python#87
python#3 ephemera-gap durably).

Captures empirical W26 push 84 incident (95c9f9b1553c14 fix):
- Both cinder_opcode_ids.h + Include/opcode.h use Py_OPCODE_H guard
- Include order silently shadows whichever loads second
- W26 case: BINARY_OP_ADD_INT undefined → attr_probe HIR regression
  caught by W21 golden trip-wire

Three resolution options enumerated:
- (A) rename cinder_opcode_ids.h guard to CINDERX_OPCODE_IDS_H —
  recommended, eliminates collision class
- (B) static_assert in cinder_opcode.h to detect collision at compile
  — hardens detection without fixing
- (C) header-comment only — current state, NOT recommended (chat-
  ephemera proven insufficient)

Related W29 candidate noted: PHX_PRIM_OP_* / PHX_PRIM_UOP_* hard-coded
in builder_emit_c.c lines 3727-3746 with no static_assert binding to
classloader.h authoritative #defines (per pythia python#89 python#3 re-issue).

DEFERRED per supervisor — schedule post-Batch-2 burndown, before any
upstream sync touching Include/opcode.h or classloader.h.