summary refs log tree commit diff
diff options
context:
space:
mode:
authorAlexandre Oliva <aoliva@redhat.com>2013-09-20 11:10:56 -0300
committerAlexandre Oliva <aoliva@redhat.com>2013-09-20 11:50:51 -0300
commit655673f312318a9d95b71ef9f95a59ff36b0a487 (patch)
tree3ed596f23e733083b72887c20ef60852a04a767a
parent35fed6f15d3d29c02203a3fe2e446e205d45b0ff (diff)
downloadglibc-655673f312318a9d95b71ef9f95a59ff36b0a487.tar.gz
glibc-655673f312318a9d95b71ef9f95a59ff36b0a487.tar.xz
glibc-655673f312318a9d95b71ef9f95a59ff36b0a487.zip
Add catch-all alloc retry probe.
for ChangeLog

	* malloc/arena.c (arena_get_retry): Add memory_arena_retry probe.
	* manual/probes.texi: Document it.
-rw-r--r--ChangeLog3
-rw-r--r--malloc/arena.c1
-rw-r--r--manual/probes.texi12
3 files changed, 16 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 5745991ca6..9d3d27a7ee 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2013-09-20  Alexandre Oliva <aoliva@redhat.com>
 
+	* malloc/arena.c (arena_get_retry): Add memory_arena_retry probe.
+	* manual/probes.texi: Document it.
+
 	* malloc/malloc.c (__libc_malloc): Add memory_malloc_retry probe.
 	(__libc_realloc): Add memory_realloc_retry probe.
 	(__libc_memalign): Add memory_memalign_retry probe.
diff --git a/malloc/arena.c b/malloc/arena.c
index 89e8b926ae..9ace186f5a 100644
--- a/malloc/arena.c
+++ b/malloc/arena.c
@@ -932,6 +932,7 @@ arena_get2(mstate a_tsd, size_t size, mstate avoid_arena)
 static mstate
 arena_get_retry (mstate ar_ptr, size_t bytes)
 {
+  LIBC_PROBE (memory_arena_retry, 2, bytes, ar_ptr);
   if(ar_ptr != &main_arena) {
     (void)mutex_unlock(&ar_ptr->mutex);
     ar_ptr = &main_arena;
diff --git a/manual/probes.texi b/manual/probes.texi
index 50e0fc24f6..696525da48 100644
--- a/manual/probes.texi
+++ b/manual/probes.texi
@@ -48,6 +48,18 @@ corresponding two-argument functions, so that in all of these probes the
 user-requested allocation size is in @var{$arg1}.
 @end deftp
 
+@deftp Probe memory_arena_retry (size_t @var{$arg1}, void *@var{$arg2})
+This probe is triggered within @code{arena_get_retry} (the function
+called to select the alternate arena in which to retry an allocation
+that failed on the first attempt), before the selection of an alternate
+arena.  This probe is redundant, but much easier to use when it's not
+important to determine which of the various memory allocation functions
+is failing to allocate on the first try.  Argument @var{$arg1} is the
+same as in the function-specific probes, except for extra room for
+padding introduced by functions that have to ensure stricter alignment.
+Argument @var{$arg2} is the arena in which allocation failed.
+@end deftp
+
 @deftp Probe memory_arena_new (void *@var{$arg1}, size_t @var{$arg2})
 This probe is triggered when @code{malloc} allocates and initializes an
 additional arena (not the main arena), but before the arena is assigned