[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

[PATCH] Remove debug output code from svn pools (2)

From: Sander Striker <striker_at_apache.org>
Date: 2002-01-26 03:54:45 CET

[Here's an updated patch.]

Since we now have a similar pool debug mode in APR, we
can remove this code from Subversion. To turn
debug mode on, simple pass: --enable-pool-debug=verbose
to configure.

Note: configure doesn't send --enable-pool-debug nicely
to apr/configure. Need to figure out why not. If someone
would look into that, that would be great.

Sander

Log:
* subversion/include/svn_pools.h

  Remove the comments about how to turn on debugging and
  what the output format looks like.

  (svn_pool_create_debug, svn_pool_clear_debug,
   svn_pool_destroy_debug): change arguments from seperate
    file, line, to a single string. Pass APR_POOL__FILE_LINE__
    which is a single string containing __FILE__:__LINE__.

* subversion/libsvn_subr/svn_error.c

  (svn_pool_create_debug, svn_pool_clear_debug,
   svn_pool_destroy_debug): change arguments from seperate
    file, line, to a single string. Call on the
    apr_pool_xxx_debug counterpart to get the debug
    functionality with the correct file:line in the output.

  (find_oldest_pool_ancestor): deleted.

Index: ./subversion/include/svn_pools.h
===================================================================
--- ./subversion/include/svn_pools.h
+++ ./subversion/include/svn_pools.h Fri Jan 25 13:53:36 2002
@@ -39,31 +39,6 @@
 
 /*** Wrappers around APR pools, so we get error pools. ***/

-/* If you want pool usage debug info dumped to stderr (in environments
- * that support that kind of thing), #define SVN_POOL_DEBUG here.
- *
- * Output looks like one of these three:
- *
- * PDEBUG: + 0xHHHHHHHH (FILE:LINE) parent=0xPPPPPPPP
- * PDEBUG: 0 SSSSSSSSSS TTTTTTTTTT 0xHHHHHHHH (FILE:LINE)
- * PDEBUG: - SSSSSSSSSS TTTTTTTTTT 0xHHHHHHHH (FILE:LINE)
- *
- * where:
- *
- * '+' signifies the creation of a pool
- * '0' signifies the clearing of a pool
- * '-' signifies the destruction of a pool
- * SSSSSSSSSS is the decimal size in bytes of the pool
- * TTTTTTTTTT is the total allocation of that pool tree at the time
- * 0xHHHHHHHH is the address of the pool
- * 0xPPPPPPPP is the address of the pool's parent pool
- * FILE and LINE are the source code path/line number
- */
-/*
-#define SVN_POOL_DEBUG
-*/
-
-

 /* THE ERROR POOL
  *
@@ -164,7 +139,6 @@
 #endif /* SWIG */

-#ifndef SVN_POOL_DEBUG
 /* Return a new pool. If PARENT_POOL is non-null, then the new
  * pool will be a subpool of it, and will inherit the containing
  * pool's dedicated error subpool and feedback stream.
@@ -179,16 +153,14 @@
  * terminating the program. */
 apr_pool_t *svn_pool_create (apr_pool_t *parent_pool);

-#else /* SVN_POOL_DEBUG */
 apr_pool_t *svn_pool_create_debug (apr_pool_t *parent_pool,
- const char *file,
- int line);
-#define svn_pool_create(p) svn_pool_create_debug(p, __FILE__, __LINE__)
-#endif /* SVN_POOL_DEBUG */
+ const char *file_line);

+#if APR_POOL_DEBUG
+#define svn_pool_create(p) svn_pool_create_debug(p, APR_POOL__FILE_LINE__)
+#endif /* APR_POOL_DEBUG */

-#ifndef SVN_POOL_DEBUG
 /* Clear the passed in pool.
  *
  * The reason we need this wrapper to apr_pool_clear, is because
@@ -199,30 +171,21 @@
  * If anything goes wrong, an abort function will be called. */
 void svn_pool_clear (apr_pool_t *p);

-#else /* SVN_POOL_DEBUG */
 void svn_pool_clear_debug (apr_pool_t *p,
- const char *file,
- int line);
-#define svn_pool_clear(p) svn_pool_clear_debug(p, __FILE__, __LINE__)
-#endif /* SVN_POOL_DEBUG */
+ const char *file_line);

+#if APR_POOL_DEBUG
+#define svn_pool_clear(p) svn_pool_clear_debug(p, APR_POOL__FILE_LINE__)
+#endif /* APR_POOL_DEBUG */

-#ifndef SVN_POOL_DEBUG

 /* Destroy a POOL and all of its children.
  *
- * This wrapper to apr_pool_destroy exists for symmatry (the
+ * This define for svn_pool_destroy exists for symmatry (the
  * not-so-grand reason) and for the existence of a great memory usage
  * debugging hook (the grand reason).
  */
-void svn_pool_destroy (apr_pool_t *p);
-
-#else /* SVN_POOL_DEBUG */
-void svn_pool_destroy_debug (apr_pool_t *p,
- const char *file,
- int line);
-#define svn_pool_destroy(p) svn_pool_destroy_debug(p, __FILE__, __LINE__)
-#endif /* SVN_POOL_DEBUG */
+#define svn_pool_destroy apr_pool_destroy

 #ifdef __cplusplus
Index: ./subversion/libsvn_subr/svn_error.c
===================================================================
--- ./subversion/libsvn_subr/svn_error.c
+++ ./subversion/libsvn_subr/svn_error.c Fri Jan 25 15:12:39 2002
@@ -286,41 +286,36 @@
   return APR_SUCCESS;
 }

+#if APR_POOL_DEBUG
+#undef svn_pool_create

-#ifdef SVN_POOL_DEBUG
-/* Find the oldest living ancestor of pool P (which could very well be
- P itself) */
-static apr_pool_t *
-find_oldest_pool_ancestor (apr_pool_t *p)
-{
- while (1)
- {
- apr_pool_t *parent = apr_pool_get_parent (p);
-
- if (parent == NULL) /* too far? */
- return p;
- p = parent;
- }
- /* NOTREACHED */
-}
-#endif /* SVN_POOL_DEBUG */
+apr_pool_t *
+svn_pool_create (apr_pool_t *parent_pool);

+#undef svn_pool_clear
+void
+svn_pool_clear (apr_pool_t *p);
+#endif

-#ifndef SVN_POOL_DEBUG
+#if !APR_POOL_DEBUG
 apr_pool_t *
 svn_pool_create (apr_pool_t *parent_pool)
-#else /* SVN_POOL_DEBUG */
-apr_pool_t *
-svn_pool_create_debug (apr_pool_t *parent_pool,
- const char *file,
- int line)
-#endif /* SVN_POOL_DEBUG */
 {
   apr_pool_t *ret_pool;

   apr_pool_create_ex (&ret_pool, parent_pool, abort_on_pool_failure,
                       APR_POOL_FDEFAULT);
+#else /* APR_POOL_DEBUG */
+apr_pool_t *
+svn_pool_create_debug (apr_pool_t *parent_pool,
+ const char *file_line)
+{
+ apr_pool_t *ret_pool;
+
+ apr_pool_create_ex_debug (&ret_pool, parent_pool, abort_on_pool_failure,
+ APR_POOL_FDEFAULT, file_line);
+#endif /* APR_POOL_DEBUG */

   /* If there is no parent, then initialize ret_pool as the "top". */
   if (parent_pool == NULL)
@@ -350,46 +345,23 @@
       abort_on_pool_failure (SVN_ERR_BAD_CONTAINING_POOL);
   }

-#ifdef SVN_POOL_DEBUG
- {
- fprintf (stderr,
- "PDEBUG: + "
- " " /* 10/10 here */
- " 0x%08X (%s:%d) parent=0x%08X\n",
- (unsigned int)ret_pool, file, line, (unsigned int)parent_pool);
- }
-#endif /* SVN_POOL_DEBUG */
-
   return ret_pool;
 }

-#ifndef SVN_POOL_DEBUG
+#if !APR_POOL_DEBUG
 void
 svn_pool_clear (apr_pool_t *p)
-#else /* SVN_POOL_DEBUG */
+#else /* APR_POOL_DEBUG */
 void
 svn_pool_clear_debug (apr_pool_t *p,
- const char *file,
- int line)
-#endif /* SVN_POOL_DEBUG */
+ const char *file_line)
+#endif /* APR_POOL_DEBUG */
 {
   apr_pool_t *error_pool;
   svn_pool_feedback_t *vtable, vtable_tmp;
   svn_boolean_t subpool_of_p_p; /* That's "predicate" to you, bud. */

-#ifdef SVN_POOL_DEBUG
- {
- apr_size_t num_bytes = apr_pool_num_bytes (p, 1);
- apr_size_t global_num_bytes =
- apr_pool_num_bytes (find_oldest_pool_ancestor (p), 1);
-
- fprintf (stderr, "PDEBUG: 0 %10lu %10lu 0x%08X (%s:%d)\n",
- (unsigned long)num_bytes, (unsigned long)global_num_bytes,
- (unsigned int)p, file, line);
- }
-#endif /* SVN_POOL_DEBUG */
-
   /* Get the error_pool from this pool. If it's rooted in this pool, we'll
      need to re-create it after we clear the pool. */
   svn_error__get_error_pool (p, &error_pool, &subpool_of_p_p);
@@ -419,7 +391,11 @@
     }

   /* Clear the pool. All userdata of this pool is now invalid. */
+#if !APR_POOL_DEBUG
   apr_pool_clear (p);
+#else /* APR_POOL_DEBUG */
+ apr_pool_clear_debug (p, file_line);
+#endif /* APR_POOL_DEBUG */

   if (subpool_of_p_p)
     {
@@ -439,30 +415,35 @@
 }

-#ifndef SVN_POOL_DEBUG
-void
-svn_pool_destroy (apr_pool_t *p)
-#else /* SVN_POOL_DEBUG */
-void
-svn_pool_destroy_debug (apr_pool_t *p,
- const char *file,
- int line)
-#endif /* SVN_POOL_DEBUG */
+#if !APR_POOL_DEBUG
+apr_pool_t *
+svn_pool_create_debug (apr_pool_t *parent_pool,
+ const char *file_line)
 {
-#ifdef SVN_POOL_DEBUG
- {
- apr_size_t num_bytes = apr_pool_num_bytes (p, 1);
- apr_size_t global_num_bytes =
- apr_pool_num_bytes (find_oldest_pool_ancestor (p), 1);
-
- fprintf (stderr, "PDEBUG: - %10lu %10lu 0x%08X (%s:%d)\n",
- (unsigned long)num_bytes, (unsigned long)global_num_bytes,
- (unsigned int)p, file, line);
- }
-#endif /* SVN_POOL_DEBUG */
+ return svn_pool_create (parent_pool);
+}
+
+
+void
+svn_pool_clear_debug (apr_pool_t *p,
+ const char *file_line)
+{
+ svn_pool_clear (p);
+}
+#else /* APR_POOL_DEBUG */
+apr_pool_t *
+svn_pool_create (apr_pool_t *parent_pool)
+{
+ return svn_pool_create_debug (parent_pool, "<undefined>");
+}
+

- apr_pool_destroy (p);
+void
+svn_pool_clear (apr_pool_t *p)
+{
+ return svn_pool_clear_debug (p, "<undefined>");
 }
+#endif /* APR_POOL_DEBUG */

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Sat Oct 21 14:37:00 2006

This is an archived mail posted to the Subversion Dev mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.