Commit Graph

22 Commits

Author SHA1 Message Date
Victor Stinner dd382ef8ec Issue #20354: Fix alignment issue in the tracemalloc module on 64-bit
platforms. Bug seen on 64-bit Linux when using "make profile-opt".

Only align the "frame_t" structure on 32-bit when Visual Studio is used. Before
the alignment to 32-bit was applied to the whole file any compiler supporting
"#pragma pack(4)" which includes GCC.
2014-02-01 03:43:58 +01:00
Victor Stinner 711e27cd50 tracemalloc: fix usage of strtol(), value can be LONG_MIN or LONG_MAX on ERANGE 2013-12-16 23:06:19 +01:00
Victor Stinner 4d8c29cd57 tracemalloc: only use unsigned types to compute hash
Commit to simplify the backport to python 2.7 and to make the code more
consistent.
2013-12-16 23:05:13 +01:00
Victor Stinner 590cebe391 Issue #19787: PyThread_set_key_value() now always set the value
In Python 3.3, PyThread_set_key_value() did nothing if the key already exists
(if the current value is a non-NULL pointer).

When _PyGILState_NoteThreadState() is called twice on the same thread with a
different Python thread state, it still keeps the old Python thread state to
keep the old behaviour. Replacing the Python thread state with the new state
introduces new bugs: see issues #10915 and #15751.
2013-12-13 11:08:56 +01:00
Victor Stinner 441adb8c57 Backout changeset 46393019b650
test_capi is failing and the fix is not trivial, I prefer to revert
2013-12-13 04:14:41 +01:00
Victor Stinner cd0cb8ccd3 Close #19787: PyThread_set_key_value() now always set the value. In Python 3.3,
the function did nothing if the key already exists (if the current value is a
non-NULL pointer).

_testcapi.run_in_subinterp() now correctly sets the new Python thread state of
the current thread when a subinterpreter is created.
2013-12-13 03:22:00 +01:00
Victor Stinner 88c29877c7 Close #19741: tracemalloc_realloc() does not release the table lock anymore
between tracemalloc_remove_trace() and tracemalloc_add_trace() to reduce the
risk of race condition.

tracemalloc_add_trace() cannot fail anymore in tracemalloc_realloc() when
tracemalloc_realloc() resizes a memory block.
2013-12-04 01:47:46 +01:00
Victor Stinner 1511680b79 Close #19757: Cleanup tracemalloc, move
PyGILState_Ensure()/PyGILState_Release() calls to the raw wrappers to simplify
the code.

Rename also tracemalloc_log_alloc/log_free() to
tracemalloc_add_trace/remove_trace().
2013-12-04 01:29:35 +01:00
Victor Stinner be0708f066 Closes #19831: Stop tracemalloc later at Python shutdown to be able to use
tracemalloc in objects destructor

Replace atexit handler with an harcoded C function _PyTraceMalloc_Fini().
2013-12-01 10:03:26 +01:00
Victor Stinner f28ce60441 Closes #19786: tracemalloc, remove the arbitrary limit of 100 frames
The limit is now 178,956,969 on 64 bit (it is greater on 32 bit because
structures are smaller).

Use int instead of Py_ssize_t to store the number of frames to have smaller
traceback_t objects.
2013-11-27 22:27:13 +01:00
Victor Stinner 3c0481d426 Close #19798: replace "maximum" term with "peak" in get_traced_memory()
documentation. Use also the term "current" for the current size.
2013-11-27 21:39:49 +01:00
Victor Stinner 59463d8340 tracemalloc: fix get_traced_memory() docstring for result type 2013-11-26 10:46:06 +01:00
Victor Stinner 4dc74204c1 Issue #18874: Fix typo 2013-11-26 01:18:52 +01:00
Victor Stinner 2ead3d2448 Issue #18874: make it more explicit than set_reentrant() only accept 0 or 1 2013-11-26 01:08:53 +01:00
Victor Stinner 7a5be14dd8 Issue #18874: tracemalloc: Comment the trace_t structure 2013-11-26 01:06:02 +01:00
Victor Stinner de2f132a5e Issue #18874: tracemalloc: explain the purpose of get_traces.tracebacks in a comment 2013-11-26 00:26:23 +01:00
Victor Stinner 4fbefdb217 Close #19762: Fix name of _get_traces() and _get_object_traceback() function
name in their docstring. Patch written by Vajrasky Kok.
2013-11-25 09:33:18 +01:00
Victor Stinner 08facd2009 Issue #19741: cleanup tracemalloc_realloc()
Explain that unhandled error case is very unlikely
2013-11-24 12:27:59 +01:00
Victor Stinner 52968676f1 Issue #19741: tracemalloc: report tracemalloc_log_alloc() failure to the caller
for new allocations, but not when a memory block was already resized
2013-11-24 11:37:15 +01:00
Victor Stinner d606ba7f55 Issue #19741: fix tracemalloc_log_alloc(), handle _Py_HASHTABLE_SET() failure 2013-11-24 11:28:20 +01:00
Victor Stinner 3728d6ced0 Issue #18874: Remove tracemalloc.set_traceback_limit()
tracemalloc.start() now has an option nframe parameter
2013-11-23 12:37:20 +01:00
Victor Stinner ed3b0bca3e Issue #18874: Implement the PEP 454 (tracemalloc) 2013-11-23 12:27:24 +01:00