On Wed, 16 Sep 2015, Michael Povolotskyi wrote:

> after some break I got again to the code debugging.
> The only solution to avoid calling libmesh handler

If you're debugging, wouldn't it be easy to set a breakpoint at the
libmesh handler?

> was to use
> std::set_terminate(NULL) after libmesh initialization.
>
> With this the MPI_Abort is not called anymore, which is good,

Assuming you want non-terminated ranks to churn CPU indefinitely, then
I suppose so...

> but the standard handler of Intel C++ compiler is not called either, which is 
> not good.

Could you be more specific?  The standard std::terminate() is a shim
around std::abort(), and I still don't understand under what
circumstances MPI_Abort is a catastrophe but std::abort is just super.

> I do not know how to reset the standard handler, and, I'm afraid, this can be 
> a compiler dependent instruction.

No, it's C++98 standard.  Resetting the standard handler should be as
simple as
std::set_terminate(std::terminate);

> So, the only solution I see now is to hack your code in my local repository - 
> otherwise we cannot work as we were working before.
>
> Can you add a possibility to configure libmesh such that the handler is not 
> changed at all?

do_anything_you_want();
std::terminate_handler old_handler = std::set_terminate(std::terminate);
LibMeshInit init (argc, argv);
std::set_terminate(old_handler);
do_anything_else_you_want();
---
Roy

------------------------------------------------------------------------------
Monitor Your Dynamic Infrastructure at Any Scale With Datadog!
Get real-time metrics from all of your servers, apps and tools
in one place.
SourceForge users - Click here to start your Free Trial of Datadog now!
http://pubads.g.doubleclick.net/gampad/clk?id=241902991&iu=/4140
_______________________________________________
Libmesh-users mailing list
Libmesh-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libmesh-users

Reply via email to