[ofw] RE: Assert in checked ibbus driver?

Hal Rosenstock hrosenstock at xsigo.com
Thu Jun 19 12:14:32 PDT 2008


On Thu, 2008-06-19 at 22:06 +0300, Tzachi Dar wrote:
> From a fast reading of the file CL_qlist.h it seems that all "remove
> functions" clear the p_list_item->p_list  field.

Is that only with _DEBUG_ defined ? That's the way this is in Linux and
I thought complib is identical in Windows.

-- Hal

> So I guess that most chances that this is a real bug. Can you try and
> add a printing to each time you add or remove an object from the
> gp_mem_tracker list?
>  
> Thanks
> Tzachi
>          
>         
>          
>         
>         I can see item’s p_list pointer being cleared when it’s
>         removed from the list. My guess is p_list is left over there
>         when items are allocated from free memory. I’m not familiar
>         with the code enough to find all these items and clear them
>         during initialization. It’s odd to see p_list value was there
>         but not p_prev and p_next.
>         
>          
>         
>         If I ignore the assertion, it will be OK. However the assert
>         will come once again, especially during startup and shutdown.
>         
>          
>         
>         Thanks,
>         
>         James
>         
>          
>         
>                                        
>         ______________________________________________________________
>         
>         From: Fab Tillier [mailto:ftillier at windows.microsoft.com] 
>         Sent: Thursday, June 19, 2008 9:11 AM
>         To: James Yang; ofw at lists.openfabrics.org
>         Subject: RE: Assert in checked ibbus driver?
>         
>         
>          
>         
>         Hi James,
>         
>          
>         
>         If you clear the p_list pointer does the assert go away?
>         
>          
>         
>         -Fab
>         
>          
>         
>         From: ofw-bounces at lists.openfabrics.org [mailto:ofw-
>         bounces at lists.openfabrics.org] On Behalf Of James Yang
>         Sent: Wednesday, June 18, 2008 6:05 PM
>         To: ofw at lists.openfabrics.org
>         Subject: [ofw] Assert in checked ibbus driver?
>         
>         
>          
>         
>         Can someone shed some light on the following assert I saw in
>         checked build driver?
>         
>          
>         
>         It happened in the function cl_qlist_insert_head() when a new
>         item is added to the list. And the assertion happens because
>         it thinks the item is already in the list. However when
>         checking the list item, I don’t see it is linked because its
>         previous and next pointers are both NULL. The item is also is
>         not in the list by manually checking the list.
>         
>          
>         
>         Is this because the item is not initialized properly as it’s
>         said in the comments, or it’s a true bug? 
>         
>          
>         
>         Thanks,
>         
>         James
>         
>          
>         
>         ----------------------
>         
>         CL_INLINE void CL_API
>         
>         cl_qlist_insert_head(
>         
>               IN    cl_qlist_t* const       p_list,
>         
>               IN    cl_list_item_t* const   p_list_item )
>         
>         {
>         
>               /* CL_ASSERT that a non-null pointer is provided. */
>         
>               CL_ASSERT( p_list );
>         
>               /* CL_ASSERT that a non-null pointer is provided. */
>         
>               CL_ASSERT( p_list_item );
>         
>               /* CL_ASSERT that the list was initialized. */
>         
>               CL_ASSERT( p_list->state == CL_INITIALIZED );
>         
>          
>         
>               /*
>         
>                * The list item must not already be part of the list.
>         Note that this
>         
>                * assertion may fail if an uninitialized list item
>         happens to have its
>         
>                * list pointer equal to the specified list.  The
>         chances of this
>         
>                * happening are acceptable in light of the value of
>         this check.
>         
>                */
>         
>               CL_ASSERT( p_list_item->p_list != p_list );
>         
>          
>         
>         #if defined( _DEBUG_ )
>         
>               p_list_item->p_list = p_list;
>         
>         #endif
>         
>          
>         
>               /* Insert before the head. */
>         
>               __cl_primitive_insert( cl_qlist_head( p_list ),
>         p_list_item );
>         
>          
>         
>               p_list->count++;
>         
>         }
>         
>          
>         
>          
>         
>         1: kd> k
>         
>         ChildEBP RetAddr  
>         
>         f795e9fc 80873922 nt!DbgBreakPoint
>         
>         f795ece4 f71588c4 nt!RtlAssert+0xba
>         
>         f795ed0c f715a5df ibbus!cl_qlist_insert_head+0xb4 [k:\windows-
>         openib\inc\complib\cl_qlist.h @ 782]
>         
>         f795ed24 f71b08da ibbus!__cl_free_trk+0x6f [k:\windows-openib\
>         \core\complib\cl_memory.c @ 342]
>         
>         f795ed38 f7218e8d ibbus!__pnp_reg_free+0xfa [k:\windows-openib
>         \\core\al\kernel\al_pnp.c @ 386]
>         
>         f795ed70 f715c0e4 ibbus!async_destroy_cb+0x72d [k:\windows-
>         openib\\core\al\al_common.c @ 685]
>         
>         f795ed8c f7162534 ibbus!__cl_async_proc_worker+0x94 [k:
>         \windows-openib\core\complib\cl_async_proc.c @ 153]
>         
>         f795eda0 f71645ec ibbus!__cl_thread_pool_routine+0x54 [k:
>         \windows-openib\core\complib\cl_threadpool.c @ 67]
>         
>         f795edac 80949b7c ibbus!__thread_callback+0x2c [k:\windows-
>         openib\core\complib\kernel\cl_thread.c @ 49]
>         
>         f795eddc 8088e062 nt!PspSystemThreadStartup+0x2e
>         
>         00000000 00000000 nt!KiThreadStartup+0x16
>         
>          
>         
>         1: kd> dt 0x863416a0 _cl_qlist 
>         
>            +0x000 end              : _cl_list_item
>         
>            +0x00c count            : 0x29
>         
>            +0x010 state            : 2 ( CL_INITIALIZED )
>         
>         1: kd> dt 0x85485268 _cl_list_item 
>         
>            +0x000 p_next           : (null) 
>         
>            +0x004 p_prev           : (null) 
>         
>            +0x008 p_list           : 0x863416a0 _cl_qlist
>         
>          
>         
>         
> 
>  P  Please consider the environment before printing this e-mail or its
> attachment(s) 
> 
> 
> 
> Disclaimer added by CodeTwo Exchange Rules
> www.codetwo.com
> 
> _______________________________________________
> ofw mailing list
> ofw at lists.openfabrics.org
> http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ofw




More information about the ofw mailing list