Skip to content

PEP 688: Crash if __release_buffer__ is called while an exception is active #104371

Closed
@JelleZijlstra

Description

@JelleZijlstra
class A:
    def __buffer__(self, flags):
            return memoryview(bytes(8))
    def __release_buffer__(self, view):
            pass # do not need to do anything here, just needs to exist

b = bytearray(8)
m = memoryview(b) # now b.extend will raise an exception due to exports
b.extend(A())

In a debug build this crashes with Assertion failed: (!PyErr_Occurred()), function _PyType_Lookup, file typeobject.c, line 4707.

Reported by @chilaxan. I'll work on a fix later today.

Most likely, the fix will be to call PyErr_Fetch/PyErr_Restore around calls to Python __release_buffer__ methods.

Linked PRs

Metadata

Metadata

Assignees

Labels

Projects

Status

Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions