diff --git a/Lib/test/test_bytes.py b/Lib/test/test_bytes.py index ffc59dab9..2ae5ca33d 100644 --- a/Lib/test/test_bytes.py +++ b/Lib/test/test_bytes.py @@ -1393,7 +1393,6 @@ class ByteArrayTest(BaseBytesTest, unittest.TestCase): except OSError: pass - @unittest.skip("TODO: RUSTPYTHON; segfault") def test_mod_concurrent_mutation(self): # Prevent crash in __mod__ when formatting mutates the bytearray. # Regression test for https://github.com/python/cpython/issues/142557. diff --git a/crates/vm/src/builtins/bytearray.rs b/crates/vm/src/builtins/bytearray.rs index ac7e071f5..8ad76aefc 100644 --- a/crates/vm/src/builtins/bytearray.rs +++ b/crates/vm/src/builtins/bytearray.rs @@ -454,7 +454,9 @@ impl PyByteArray { fn __mod__(&self, values: PyObjectRef, vm: &VirtualMachine) -> PyResult { // Formatting calls the values' conversion methods, which can reach - // this bytearray, so the format is taken by value. + // this bytearray, so the format is taken by value. It also stays + // exported until formatting ends, so resizing it raises BufferError. + let _export = self.begin_export(); let format = self.inner().clone(); let formatted = format.cformat(values, vm)?; Ok(formatted.into())