@@ -173,9 +173,11 @@ def test_set_traceback_limit(self):
173173 self .assertEqual (len (traceback ), 1 )
174174 self .assertEqual (traceback , obj_traceback )
175175
176- def find_trace (self , traces , traceback ):
176+ def find_trace (self , traces , traceback , size ):
177+ # filter also by size to ignore the memory allocated by
178+ # _PyRefchain_Trace() if Python is built with Py_TRACE_REFS.
177179 for trace in traces :
178- if trace [2 ] == traceback ._frames :
180+ if trace [2 ] == traceback ._frames and trace [ 1 ] == size :
179181 return trace
180182
181183 self .fail ("trace not found" )
@@ -186,11 +188,10 @@ def test_get_traces(self):
186188 obj , obj_traceback = allocate_bytes (obj_size )
187189
188190 traces = tracemalloc ._get_traces ()
189- trace = self .find_trace (traces , obj_traceback )
191+ trace = self .find_trace (traces , obj_traceback , obj_size )
190192
191193 self .assertIsInstance (trace , tuple )
192194 domain , size , traceback , length = trace
193- self .assertEqual (size , obj_size )
194195 self .assertEqual (traceback , obj_traceback ._frames )
195196
196197 tracemalloc .stop ()
@@ -208,17 +209,18 @@ def allocate_bytes4(size):
208209 # Ensure that two identical tracebacks are not duplicated
209210 tracemalloc .stop ()
210211 tracemalloc .start (4 )
211- obj_size = 123
212- obj1 , obj1_traceback = allocate_bytes4 (obj_size )
213- obj2 , obj2_traceback = allocate_bytes4 (obj_size )
212+ obj1_size = 123
213+ obj2_size = 125
214+ obj1 , obj1_traceback = allocate_bytes4 (obj1_size )
215+ obj2 , obj2_traceback = allocate_bytes4 (obj2_size )
214216
215217 traces = tracemalloc ._get_traces ()
216218
217219 obj1_traceback ._frames = tuple (reversed (obj1_traceback ._frames ))
218220 obj2_traceback ._frames = tuple (reversed (obj2_traceback ._frames ))
219221
220- trace1 = self .find_trace (traces , obj1_traceback )
221- trace2 = self .find_trace (traces , obj2_traceback )
222+ trace1 = self .find_trace (traces , obj1_traceback , obj1_size )
223+ trace2 = self .find_trace (traces , obj2_traceback , obj2_size )
222224 domain1 , size1 , traceback1 , length1 = trace1
223225 domain2 , size2 , traceback2 , length2 = trace2
224226 self .assertIs (traceback2 , traceback1 )
0 commit comments