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)
|
int opal_class_finalize(void)
|
||||||
{
|
{
|
||||||
opal_class_t *cls;
|
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (NULL != classes) {
|
if (NULL != classes) {
|
||||||
for (i = 0; i < num_classes; ++i) {
|
for (i = 0; i < num_classes; ++i) {
|
||||||
if (NULL == (cls = classes[i])) continue;
|
if (NULL != classes[i]) {
|
||||||
|
free(classes[i]);
|
||||||
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 */
|
|
||||||
}
|
}
|
||||||
free(classes);
|
free(classes);
|
||||||
classes = NULL;
|
classes = NULL;
|
||||||
@ -196,7 +189,7 @@ static void save_class(opal_class_t *cls)
|
|||||||
expand_array();
|
expand_array();
|
||||||
}
|
}
|
||||||
|
|
||||||
classes[num_classes] = cls;
|
classes[num_classes] = cls->cls_construct_array;
|
||||||
++num_classes;
|
++num_classes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user