--- openmpi-1.2.5/opal/class/opal_free_list.c 2008-08-23 18:35:03.000000000 +0100 +++ openmpi-1.2.5-modified/opal/class/opal_free_list.c 2008-08-23 18:31:47.000000000 +0100 @@ -90,9 +90,12 @@ if (flist->fl_max_to_alloc > 0 && flist->fl_num_allocated + num_elements > flist->fl_max_to_alloc) return OPAL_ERR_TEMP_OUT_OF_RESOURCE; + fprintf(stderr, "mpidebug: allocating %d\n", (num_elements * flist->fl_elem_size) + sizeof(opal_list_item_t) + CACHE_LINE_SIZE); alloc_ptr = (unsigned char *)malloc((num_elements * flist->fl_elem_size) + sizeof(opal_list_item_t) + CACHE_LINE_SIZE); + fprintf(stderr, "mpidebug: allocated at memory address %p\n", alloc_ptr); + if(NULL == alloc_ptr) return OPAL_ERR_TEMP_OUT_OF_RESOURCE; @@ -110,7 +113,16 @@ for(i=0; ifl_elem_class) { - OBJ_CONSTRUCT_INTERNAL(item, flist->fl_elem_class); + do { + if (0 == (flist->fl_elem_class)->cls_initialized) { + opal_class_initialize((flist->fl_elem_class)); + } + fprintf(stderr, "mpidebug: accessing address %p\n", &((opal_object_t *) (item))->obj_class); + ((opal_object_t *) (item))->obj_class = (flist->fl_elem_class); + fprintf(stderr, "mpidebug: accessing address %p\n", &((opal_object_t *) (item))->obj_reference_count); + ((opal_object_t *) (item))->obj_reference_count = 1; + opal_obj_run_constructors((opal_object_t *) (item)); + } while (0); } opal_list_append(&(flist->super), &(item->super)); ptr += flist->fl_elem_size; @@ -119,5 +131,3 @@ return OPAL_SUCCESS; } - -