Hi Sean,

There is one issue that I'm afraid that this checkin is not looking into.

There is a general problem with closing a handle that one might be waiting on:
Consider a single handle g_handle.

Thread A is calling waitforsingleobject(g_handle)

Thread B that wants to free thread A is calling closehandle on g_handle.
If Thread A was indeed able to wait on the handle than it will be freed. But it 
is also possibale that for some reason thread a was not scheduled and never 
reached the wait code. Further more, it is possibale that after thread b has 
closed the g_handle this handle will be reused. In that case thread A might 
wait for ever.

Are you sure that your checkin doesn't introduce this kind of bug?

Thanks
Tzachi
 

> -----Original Message-----
> From: [email protected] 
> [mailto:[email protected]] On Behalf Of Sean Hefty
> Sent: Friday, January 29, 2010 2:51 AM
> To: Hefty, Sean; 'ofw_list'; Smith, Stan
> Subject: [ofw] [PATCH v2] libibverbs/device: destroy 
> completion channel when closing device
> 
> ibv_close_device should destroy the completion channel when 
> closing the device and freeing the memory.
> 
> Changes from v1:
> moved the call to CompChannelCleanup above ibv_release.  
> ibv_release has the potential to free the completion manager 
> referenced by the channel.
> 
> Signed-off-by: Sean Hefty <[email protected]>
> ---
> This patch should replace the v1 patch with the same subject in 2.2.
> 
> 
>  trunk/ulp/libibverbs/src/device.cpp |    1 +
>  1 files changed, 1 insertions(+), 0 deletions(-)
> 
> diff --git a/trunk/ulp/libibverbs/src/device.cpp 
> b/trunk/ulp/libibverbs/src/device.cpp
> index a515a16..1b66d3c 100644
> --- a/trunk/ulp/libibverbs/src/device.cpp
> +++ b/trunk/ulp/libibverbs/src/device.cpp
> @@ -279,6 +279,7 @@ int ibv_close_device(struct ibv_context *context)
>       }
>  
>       context->cmd_if->Release();
> +     CompChannelCleanup(&vcontext->context.channel);
>       ibv_release();
>       delete vcontext->port;
>       delete vcontext;
> 
> 
> _______________________________________________
> ofw mailing list
> [email protected]
> http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ofw
> 
_______________________________________________
ofw mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ofw

Reply via email to