Just to follow up my earlier post, checking out master and building that gives me the same lock
up in ompi_info
> ompi_info.exe!opal_atomic_lifo_push(opal_atomic_lifo_t * lifo, opal_list_item_t * item) Line 73 C
ompi_info.exe!ompi_free_list_grow(ompi_free_list_t * flist, unsigned __int64 num_elements) Line 257 C
ompi_info.exe!ompi_rb_tree_init(ompi_rb_tree_t * tree, int (void *, void *) * comp) Line 77 C
ompi_info.exe!mca_mpool_base_tree_init() Line 88 C
ompi_info.exe!mca_mpool_base_open() Line 86 C
ompi_info.exe!ompi_info_register_components(opal_pointer_array_t * mca_types, opal_pointer_array_t * component_map)
Line 264 C
ompi_info.exe!main(int argc, char * * argv) Line 158 C
ompi_info.exe!__tmainCRTStartup() Line 536 C
ompi_info.exe!mainCRTStartup() Line 377 C
kernel32.dll!000007feac87167e() Unknown
ntdll.dll!000007feae4cc3f1() Unknown
at the line below with the * at the start. Well actually I guess it’s sitting in a spin lock.
Should I continue playing or is master unstable?
Thanks
JB
/* Add one element to the LIFO. We will return the last head of the list
* to allow the upper level to detect if this element is the first one in the
* list (if the list was empty before this operation).
*/
static
inline
opal_list_item_t*
opal_atomic_lifo_push( opal_atomic_lifo_t*
lifo,
opal_list_item_t*
item
)
{
#if
OPAL_ENABLE_MULTI_THREADS
do
{
*
item->opal_list_next
= lifo->opal_lifo_head;
opal_atomic_wmb();
if(
opal_atomic_cmpset_ptr( &(lifo->opal_lifo_head),
(void*)item->opal_list_next,
item
) ) {
opal_atomic_cmpset_32((volatile
int32_t*)&item->item_free,
1, 0);
return
(opal_list_item_t*)item->opal_list_next;
}
/* DO some kind of pause to release the bus */
}
while(
1 );
#else
item->opal_list_next = lifo->opal_lifo_head;
lifo->opal_lifo_head = item;
return
(opal_list_item_t*)item->opal_list_next;
#endif
/* OPAL_ENABLE_MULTI_THREADS */
}