{"action":"created","issue":{"url":"https://api.github.com/repos/open-mpi/ompi/issues/517","labels_url":"https://api.github.com/repos/open-mpi/ompi/issues/517/labels{/name}","comments_url":"https://api.github.com/repos/open-mpi/ompi/issues/517/comments","events_url":"https://api.github.com/repos/open-mpi/ompi/issues/517/events","html_url":"https://github.com/open-mpi/ompi/pull/517","id":67390867,"number":517,"title":"opal/class: enable use of opal classes after opal_class_finalize","user":{"login":"hjelmn","id":1226817,"avatar_url":"https://avatars.githubusercontent.com/u/1226817?v=3","gravatar_id":"","url":"https://api.github.com/users/hjelmn","html_url":"https://github.com/hjelmn","followers_url":"https://api.github.com/users/hjelmn/followers","following_url":"https://api.github.com/users/hjelmn/following{/other_user}","gists_url":"https://api.github.com/users/hjelmn/gists{/gist_id}","starred_url":"https://api.github.com/users/hjelmn/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hjelmn/subscriptions","organizations_url":"https://api.github.com/users/hjelmn/orgs","repos_url":"https://api.github.com/users/hjelmn/repos","events_url":"https://api.github.com/users/hjelmn/events{/privacy}","received_events_url":"https://api.github.com/users/hjelmn/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":11,"created_at":"2015-04-09T15:49:20Z","updated_at":"2015-05-11T19:09:00Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/open-mpi/ompi/pulls/517","html_url":"https://github.com/open-mpi/ompi/pull/517","diff_url":"https://github.com/open-mpi/ompi/pull/517.diff","patch_url":"https://github.com/open-mpi/ompi/pull/517.patch"},"body":"This commit enables the use of opal classes after a call to\r\nopal_class_finalize. This is needed to support re-initializing opal\r\nafter calling opal_finalize_util (). This is needed to support the\r\nfollowing without leaking:\r\n\r\nMPI_T_init_thread ();\r\nMPI_T_finalize ();\r\n\r\nMPI_Init ();\r\nMPI_Finalize ();\r\n\r\nBefore this commit the above code would crash in MPI_Init because the\r\nconstructor array for some class was freed by opal_class_finalize ().\r\n\r\nThe fix is to turn the cls_initialized member of opal_class_t into an\r\ninit epoch identifier and compare it against opal_class_init_epoch\r\ninstead of 1. On each call to opal_class_finalize the\r\nopal_class_init_epoch counter is incremented forcing re-initialization\r\nof classes after finalize.\r\n\r\nSigned-off-by: Nathan Hjelm <hjelmn@lanl.gov>"},"comment":{"url":"https://api.github.com/repos/open-mpi/ompi/issues/comments/101019266","html_url":"https://github.com/open-mpi/ompi/pull/517#issuecomment-101019266","issue_url":"https://api.github.com/repos/open-mpi/ompi/issues/517","id":101019266,"user":{"login":"hjelmn","id":1226817,"avatar_url":"https://avatars.githubusercontent.com/u/1226817?v=3","gravatar_id":"","url":"https://api.github.com/users/hjelmn","html_url":"https://github.com/hjelmn","followers_url":"https://api.github.com/users/hjelmn/followers","following_url":"https://api.github.com/users/hjelmn/following{/other_user}","gists_url":"https://api.github.com/users/hjelmn/gists{/gist_id}","starred_url":"https://api.github.com/users/hjelmn/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hjelmn/subscriptions","organizations_url":"https://api.github.com/users/hjelmn/orgs","repos_url":"https://api.github.com/users/hjelmn/repos","events_url":"https://api.github.com/users/hjelmn/events{/privacy}","received_events_url":"https://api.github.com/users/hjelmn/received_events","type":"User","site_admin":false},"created_at":"2015-05-11T19:09:00Z","updated_at":"2015-05-11T19:09:00Z","body":"I would still like to see this make it into master but I would like to verify that there are no performance implications of this change. I doubt that there are but we do have a lot of OBJ_CONSTRUCT call in the critical path."}}