Index: glibc-2.11.3/elf/dl-close.c =================================================================== --- glibc-2.11.3.orig/elf/dl-close.c 2011-05-27 15:08:23.000000000 +0200 +++ glibc-2.11.3/elf/dl-close.c 2011-07-13 19:28:52.000000000 +0200 @@ -127,7 +127,13 @@ _dl_close_worker (struct link_map *map) { struct link_map **oldp = map->l_initfini; map->l_initfini = map->l_orig_initfini; - _dl_scope_free (oldp); + /* We can't remove the l_initfini memory because + it's shared with l_searchlist.r_list. We don't clear + the latter so when we dlopen this object again that + entry would point to stale memory. And we don't want + to recompute it as it would involve a new call to + map_object_deps. + _dl_scope_free (oldp); */ } }