On Thu, 10 Mar 2011, Tim Kroeger wrote: > I was now able to pinpoint the problem. (You know that I don't give up...) > Consider the attached example problem and add the following compiler option: > > -fvisibility=hidden > > Then, it will crash in the way I described. (I am using g++ version 4.4.3.) > > Can anybody tell me why this happens?
Hmm... the gcc man page warns about the interaction of "visibility=hidden" and "C++ vague linkage entities" - the example it uses is type_info of exceptions being thrown, but that same type_info gets used for typeid() and dynamic_cast(), right? The catch then would be: why is the type_info for TransientLinearImplicitSystem being generated only in your test.cpp and not used from the library itself? That's a templated type, typedef'ed to TransientSystem<LinearImplicitSystem>, sure, but we do instantiate it explicitly in one of the library object files. Maybe since the compiler doesn't know that ahead of time it creates its own implicit instantiations, and then the visibility=hidden trickery prevents the linker from recognizing that the libmesh.so object code can and should be used instead? But I'm the wrong person to ask about this - my first real look at gcc visibility options was when my new officemate started using them for code optimization last year. I'll try asking him today. --- Roy ------------------------------------------------------------------------------ Colocation vs. Managed Hosting A question and answer guide to determining the best fit for your organization - today and in the future. http://p.sf.net/sfu/internap-sfd2d _______________________________________________ Libmesh-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/libmesh-users
