Skip to content

bpo-29684: Fix regression of PyEval_CallObjectWithKeywords#87

Merged
methane merged 2 commits intopython:masterfrom
methane:fix-evalcall
Mar 1, 2017
Merged

bpo-29684: Fix regression of PyEval_CallObjectWithKeywords#87
methane merged 2 commits intopython:masterfrom
methane:fix-evalcall

Conversation

@methane
Copy link
Copy Markdown
Member

@methane methane commented Feb 14, 2017

It should raise TypeError when kwargs is not a dict.

@methane methane requested a review from vstinner February 14, 2017 04:29
@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
It should raise TypeError when kwargs is not a dict.
@methane methane merged commit 3824cd8 into python:master Mar 1, 2017
@methane methane deleted the fix-evalcall branch March 1, 2017 11:41
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
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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants