Hi Damitha,

With HTTPD we are now creating the local pool (actually request pool)
with our own apr_allocator. See the following two function calls at the
beginning of the mod_axis2.c axis2_handler function.

apr_allocator_create(&local_allocator);
apr_pool_create_ex(&local_pool, NULL, NULL, local_allocator);

The two NULL values passing are the parent pool and the callback
function inorder to handle pool creation failure.

At the end of this axis2_handle function we free both apr_pool and the
apr_allocator using the following two calls.

apr_pool_destroy(local_pool);
apr_allocator_destroy(local_allocator);

What makes sandesha to crash is the call to apr_allocator_destroy. But
that call is necessary when handling large size of requests frequently.
(specially quite large attachments).

Because sandesha starts threads and since these threads remains after
the request the crashing happens. The solution for this is we need to
keep a pointer to this apr_allocator_t * (here local_allocator) and a
ref count to keep the number of references. Inside Sandesha sender
thread we can increment the ref count. This destroy function calls only
if the ref count is zero. we can keep the ref_count and the pointer to
the apr_allocator inside axutil_allocator. Then checking for the ref
count and calls to destroy functions are wrapped in a macro called
AXIS2_POOL_ALLOCATOR_DESTROY which is similar to AXIS2_FREE. Both
Sandesha and mod_axis2 calls this macro instead of calling destroy
functions straightway as we are doing now.

Thanks,
-Manjula.  



On Sat, 2008-04-19 at 08:19 +0530, Damitha Kumarage wrote:
> Manjula Peiris wrote:
> 
> >On Fri, 2008-04-18 at 11:40 +0530, Damitha Kumarage wrote:
> >  
> >
> >>Axis2C-1079 is still open. That means Sandesha2/C dual channel does not 
> >>work with Apache2.
> >>This problem started due to a change to Axis2/C code. We cannot release 
> >>without solving this.
> >>    
> >>
> >
> >This may fails because now we are freeing the apr local pool. I did fix
> >this locally in my machine but it needs more testing. Since it is now so
> >close to the release I will commit the stuff after the release.
> >  
> >
> +1 for doing this after 1.3.1 release. Could you please explain about 
> the changes involved so that I too can have a look at it.
> thanks
> Damitha
> 
> >Thanks,
> >-Manjula.
> >
> >  
> >
> >>thanks
> >>Damitha
> >>
> >>Dinesh Premalal wrote:
> >>
> >>    
> >>
> >>>Hi All,
> >>>
> >>>  I have packed and uploaded Apache Axis2/C 1.3.1 RC2 here
> >>>  [1]. Please test and send your feedback.
> >>>
> >>>thanks,
> >>>Dinesh
> >>>
> >>>1.http://people.apache.org/~dinesh/release/Axis2C-1.3.1-RC2/
> >>>
> >>> 
> >>>
> >>>      
> >>>
> >>---------------------------------------------------------------------
> >>To unsubscribe, e-mail: [EMAIL PROTECTED]
> >>For additional commands, e-mail: [EMAIL PROTECTED]
> >>
> >>    
> >>
> >
> >
> >---------------------------------------------------------------------
> >To unsubscribe, e-mail: [EMAIL PROTECTED]
> >For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
> >  
> >
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to