This is basically a revert of r32236. What looked as a good patch
turned out to be a nightmare, as the pointers to the classes are located in shared libraries memory areas, and are not accesible after the shared library is unloaded. Thus, OPAL cannot cleanup the left-over classes from the other shared libraries. This commit was SVN r32248. The following SVN revision numbers were found above: r32236 --> open-mpi/ompi@59017433e1
Этот коммит содержится в:
родитель
08d2a1a48d
Коммит
0b72cdabfd
@ -165,20 +165,13 @@ void opal_class_initialize(opal_class_t *cls)
|
||||
*/
|
||||
int opal_class_finalize(void)
|
||||
{
|
||||
opal_class_t *cls;
|
||||
int i;
|
||||
|
||||
if (NULL != classes) {
|
||||
for (i = 0; i < num_classes; ++i) {
|
||||
if (NULL == (cls = classes[i])) continue;
|
||||
|
||||
free(cls->cls_construct_array);
|
||||
cls->cls_construct_array = NULL;
|
||||
cls->cls_destruct_array = NULL;
|
||||
cls->cls_depth = 0;
|
||||
if( cls != &opal_object_t_class )
|
||||
cls->cls_initialized = 0; /* all but the predefined */
|
||||
classes[i] = NULL; /* security */
|
||||
if (NULL != classes[i]) {
|
||||
free(classes[i]);
|
||||
}
|
||||
}
|
||||
free(classes);
|
||||
classes = NULL;
|
||||
@ -196,7 +189,7 @@ static void save_class(opal_class_t *cls)
|
||||
expand_array();
|
||||
}
|
||||
|
||||
classes[num_classes] = cls;
|
||||
classes[num_classes] = cls->cls_construct_array;
|
||||
++num_classes;
|
||||
}
|
||||
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user