> The instantiation is in your shared library. > > The address of that instantiation is assigned to fun._M_manager Ah, that's what I missed the first time. The rest makes sense. Thanks for the help, by the way. Just to get this through my skull, the reason the program segfaults is because the _M_manager code for the instantiated internal function template is found in the shared object, which is not accessible once unloaded, right? Sadly, I can't realistically null the function pointers in my applicationwhen unloading the shared libraries (plugins). The function objects are actually made by an object in the main application when the plugin calls a function to register a callback. I'll just make sure the plugins for my application remain loaded until the object handling the callbacks destructs. Thanks for the help.