You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@subversion.apache.org by Sander Striker <st...@apache.org> on 2002/05/30 01:28:40 UTC

Pools problems, fixed.

Hi,

A bunch of pools commits to APR later...

Seriously, I think I have it fixed now.  For both with APR_POOL_DEBUG
and without.  Please update your APR when compiling the HEAD of
Subversion.

Thanks,

Sander

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: Pools problems, fixed.

Posted by Branko Čibej <br...@xbc.nu>.
Sander Striker wrote:

>>From: Branko Cibej [mailto:brane@xbc.nu]
>>Sent: 30 May 2002 21:51
>>    
>>
>
>  
>
>>Sander Striker wrote:
>>
>>    
>>
>>>Hi,
>>>
>>>A bunch of pools commits to APR later...
>>>
>>>Seriously, I think I have it fixed now.  For both with APR_POOL_DEBUG
>>>and without.  Please update your APR when compiling the HEAD of
>>>Subversion.
>>>
>>>Thanks,
>>>
>>>Sander
>>> 
>>>
>>>      
>>>
>>Well, the Windows build compiles without APR changes now, but the tests 
>>still crash, albeit in a different place now (in apr_allocator_free). 
>>This happens in both the release and debug builds, so it can't be 
>>related to the pools debugging code.
>>
>>Unfortunately I don't have time to track this down. If somebody cares to 
>>try, I'll cheer you on (a good place to start would be stringtest 13). 
>>Otherwise I'll have a go on Monday.
>>    
>>
>
>Ah, I know what it is.
>We need to register a simple cleanup:
>
>static apr_status_t svn_allocator_reset_mutex(void *allocator)
>{
>   apr_allocator_mutex_set(allocator, NULL);
>   return APR_SUCCESS;
>}
>
>This needs to be registered in svn_pool_create() in the block
>where there is no parent, and in svn_pool_clear() in the _p_p
>block.
>
>That will fix things (destroy currently kills the mutex, but apr_allocator_free
>still uses it after that... NULL'ing the mutex will help).
>
>I'll see if I can squeeze that in tomorrow.  Others are ofcourse
>free to incorporate it.
>
>Sander
>
>  
>

Like this (tests running, seems to work)?

Index: ./svn_error.c
===================================================================
--- ./svn_error.c
+++ ./svn_error.c	2002-05-30 22:19:35.000000000 +0200
@@ -400,6 +400,17 @@
 
 
 /*-----------------------------------------------------------------*/
+
+/* Cleanup function for pools.. */
+
+static apr_status_t
+allocator_reset_mutex (void *allocator)
+{
+  apr_allocator_mutex_set(allocator, NULL);
+  return APR_SUCCESS;
+}
+
+
 /*
    Macros to make the preprocessor logic less confusing.
    We need to always have svn_pool_xxx aswell as
@@ -459,6 +470,8 @@
           abort_on_pool_failure (apr_err);
 
         apr_allocator_mutex_set (allocator, mutex);
+        apr_pool_cleanup_register (ret_pool, allocator,
+                                   allocator_reset_mutex, NULL);
       }
 #endif /* APR_HAS_THREADS */
 
@@ -517,6 +530,8 @@
       apr_allocator_mutex_set (allocator, NULL);
       (void) apr_thread_mutex_create (&mutex, APR_THREAD_MUTEX_DEFAULT, pool);
       apr_allocator_mutex_set (allocator, mutex);
+      apr_pool_cleanup_register (pool, allocator,
+                                 allocator_reset_mutex, NULL);
 #endif /* APR_HAS_THREADS */
 	
       /* Here we have a problematic situation.  We cleared the pool P,



-- 
Brane Čibej   <br...@xbc.nu>   http://www.xbc.nu/brane/



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

RE: Pools problems, fixed.

Posted by Sander Striker <st...@apache.org>.
> From: Branko Cibej [mailto:brane@xbc.nu]
> Sent: 30 May 2002 21:51

> Sander Striker wrote:
> 
> >Hi,
> >
> >A bunch of pools commits to APR later...
> >
> >Seriously, I think I have it fixed now.  For both with APR_POOL_DEBUG
> >and without.  Please update your APR when compiling the HEAD of
> >Subversion.
> >
> >Thanks,
> >
> >Sander
> >  
> >
> Well, the Windows build compiles without APR changes now, but the tests 
> still crash, albeit in a different place now (in apr_allocator_free). 
> This happens in both the release and debug builds, so it can't be 
> related to the pools debugging code.
> 
> Unfortunately I don't have time to track this down. If somebody cares to 
> try, I'll cheer you on (a good place to start would be stringtest 13). 
> Otherwise I'll have a go on Monday.

Ah, I know what it is.
We need to register a simple cleanup:

static apr_status_t svn_allocator_reset_mutex(void *allocator)
{
   apr_allocator_mutex_set(allocator, NULL);
   return APR_SUCCESS;
}

This needs to be registered in svn_pool_create() in the block
where there is no parent, and in svn_pool_clear() in the _p_p
block.

That will fix things (destroy currently kills the mutex, but apr_allocator_free
still uses it after that... NULL'ing the mutex will help).

I'll see if I can squeeze that in tomorrow.  Others are ofcourse
free to incorporate it.

Sander


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: Pools problems, fixed.

Posted by Branko Čibej <br...@xbc.nu>.
Sander Striker wrote:

>Hi,
>
>A bunch of pools commits to APR later...
>
>Seriously, I think I have it fixed now.  For both with APR_POOL_DEBUG
>and without.  Please update your APR when compiling the HEAD of
>Subversion.
>
>Thanks,
>
>Sander
>  
>
Well, the Windows build compiles without APR changes now, but the tests 
still crash, albeit in a different place now (in apr_allocator_free). 
This happens in both the release and debug builds, so it can't be 
related to the pools debugging code.

Unfortunately I don't have time to track this down. If somebody cares to 
try, I'll cheer you on (a good place to start would be stringtest 13). 
Otherwise I'll have a go on Monday.


-- 
Brane Čibej   <br...@xbc.nu>   http://www.xbc.nu/brane/



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org