@@ -932,6 +932,29 @@ def test_writer_total_samples_after_finalize_matches_reader(self):
932932 self .assertEqual (writer_collector .total_samples , len (samples ))
933933 self .assertEqual (writer_collector .total_samples , replayed )
934934
935+ def test_rle_buffer_flushes_before_finalize (self ):
936+ """RLE buffer flushes before the writer is destroyed during finalize()."""
937+ with tempfile .NamedTemporaryFile (suffix = ".bin" , delete = False ) as f :
938+ filename = f .name
939+ self .temp_files .append (filename )
940+
941+ frame = make_frame ("rle_boundary.py" , 1 , "hot" )
942+ sample = [make_interpreter (0 , [make_thread (1 , [frame ])])]
943+
944+ writer = _remote_debugging .BinaryWriter (filename , 1000 , 0 , compression = 0 )
945+ for i in range (10_000 ):
946+ writer .write_sample (sample , i * 1000 )
947+ self .assertGreater (writer .get_stats ()["repeat_records" ], 0 )
948+
949+ writer .finalize ()
950+
951+ reader_collector = RawCollector ()
952+ with BinaryReader (filename ) as reader :
953+ replayed = reader .replay_samples (reader_collector )
954+
955+ self .assertEqual (replayed , 10_000 )
956+ self .assertEqual (writer .total_samples , 10_000 )
957+
935958 def test_writer_total_samples_after_context_manager_matches_reader (self ):
936959 """total_samples after `with BinaryWriter(...)` matches the reader's count.
937960
0 commit comments