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

Reply via email to