Re: [Libmesh-devel] here(), error(), & friends

2008-02-28 Thread Benjamin Kirk
> Seems like a paradox: we can't call MPI_Abort from within error(), > because error() can't be sure there isn't some enclosing code waiting > to catch its exception, but we do have to be able to call MPI_Abort > when error() is called if there is no catch waiting. I like what you propose. At ti

Re: [Libmesh-devel] here(), error(), & friends

2008-02-28 Thread Roy Stogner
On Thu, 28 Feb 2008, Roy Stogner wrote: > The only obvious problem is that this would break any old codes that > don't call libMesh::init() from main(); I'm hoping that's not many > users, but who knows. Actually, the second obvious problem is that macro identifiers can't have :: in the middle o

Re: [Libmesh-devel] here(), error(), & friends

2008-02-28 Thread Roy Stogner
MPI_Abort() really means ABORT. Specifically, when we call error() in parallel, we never make it to std::abort(), which I'd been hoping to replace with throw libMesh::LogicError(). This is fine if every process hits the error() and the exception can't be caught; then it doesn't matter whether or

Re: [Libmesh-devel] here(), error(), & friends

2008-02-28 Thread Roy Stogner
On Thu, 28 Feb 2008, Benjamin Kirk wrote: > Go for it!! > >>> How well do exceptions work with threads? >> >> They're thread-safe, and they don't propagate from thread to thread. >> So if one thread throws an exception and is able to recover from it, >> the other threads aren't supposed even get

Re: [Libmesh-devel] here(), error(), & friends

2008-02-28 Thread Benjamin Kirk
Go for it!! >> How well do exceptions work with threads? > > They're thread-safe, and they don't propagate from thread to thread. > So if one thread throws an exception and is able to recover from it, > the other threads aren't supposed even get bothered by the process. > > I'm not sure how well

Re: [Libmesh-devel] here(), error(), & friends

2008-02-28 Thread Roy Stogner
On Thu, 28 Feb 2008, John Peterson wrote: > How well do exceptions work with threads? They're thread-safe, and they don't propagate from thread to thread. So if one thread throws an exception and is able to recover from it, the other threads aren't supposed even get bothered by the process. I'm

Re: [Libmesh-devel] here(), error(), & friends

2008-02-28 Thread John Peterson
How well do exceptions work with threads? -J Stogner writes: > > On Thu, 28 Feb 2008, Roy Stogner wrote: > > > class LibMeshException : public std::exception > > > > class LibMeshInternalError : public std::exception > > That second class should drive from LibMeshException, not directl

Re: [Libmesh-devel] here(), error(), & friends

2008-02-28 Thread Roy Stogner
On Thu, 28 Feb 2008, Roy Stogner wrote: > class LibMeshException : public std::exception > > class LibMeshInternalError : public std::exception That second class should drive from LibMeshException, not directly from std::exception, of course. :-P --- Roy ---

Re: [Libmesh-devel] here(), error(), & friends

2008-02-28 Thread Roy Stogner
On Tue, 19 Feb 2008, Roy Stogner wrote: > In the long run we should never be calling error(), just throwing > exceptions. Even if the library has an error we can't recover from, > that's no reason not to let the application using the library try. I've recently become strongly motivated to make