From: Tucker Taft <stt@averstar.com>
Subject: Re: Using ATC to abort code written in Fortran
Date: 2000/01/20
Date: 2000-01-20T18:52:08+00:00 [thread overview]
Message-ID: <38875957.C50EA735@averstar.com> (raw)
In-Reply-To: 3886CD8D.AFFEB635@topo.math.u-psud.fr
Duncan Sands wrote:
>
> I have a heavy calculation to do which may have to be aborted in the
> middle,
> using ATC. Thus
>
> select
> A.Trigger;
> then abort
> Huge_Calculation;
> end select;
>
> Most of the Huge_Calculation is performed by a numerical library written
>
> in Fortran. I am worried that ATC may not work correctly if the abort
> comes
> while in the Fortran code. Does anyone have any idea?
I suspect it will work, but you need to check with the compiler vendor.
> I can see two kinds of potential problems. The first comes from how the
> fortran
> code is written. For example, if it stores information in global
> variables then these
> may be left corrupted after ATC. I'm not so worried by this, because I
> can check
> the code and do some rewriting if necessary. I am more worried about
> the second
> kind of potential problem: will ATC trash memory etc because the code
> produced
> by the fortran compiler is not compatible with ATC? I've no idea how
> ATC is
> implemented, so I've no idea if there could really be code compatibility
> problems
> or not. Perhaps someone out there has some experience with this kind of
> thing...
>
> I am using g77 (egcs version) for compiling the fortran and GNAT 3.12p
> for the
> Ada.
I'm not sure how GNAT supports Abort and ATC. There are generally two
approaches, one which involves propagating a special exception, the
other involves doing the equivalent of a "longjmp." Longjmp should
work independently of what kind of code g77 generates. Using a special
exception may or may not work, depending on how exceptions are propagated
through non-Ada code. This sounds like a question for the ACT folks...
Note that ATC is not some nasty Ada "invention." It was inspired by
the ANSI C setjmp/longjmp and sigsetjmp/siglongjmp. There are some
dangers in using ATC, but essentially every interactive program that
catches "control-C" on Unix and then re-prompts uses setjmp/longjmp
or equivalent, so there is plenty of code out there that uses ATC-like
constructs.
> Thanks for your help,
>
> Duncan Sands.
>
> PS: Of course, I could wrap the Fortran code up in a protected object,
> and exploit the abort deferred property of protected objects to avoid
> having the abort come during execution of the Fortran code. But since
> it is the Fortran part that is likely to need to be aborted (because it
> can take a long time to complete), this is not very satisfactory.
--
-Tucker Taft stt@averstar.com http://www.averstar.com/~stt/
Technical Director, Distributed IT Solutions (www.averstar.com/tools)
AverStar (formerly Intermetrics, Inc.) Burlington, MA USA
prev parent reply other threads:[~2000-01-20 0:00 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2000-01-20 0:00 Using ATC to abort code written in Fortran Duncan Sands
2000-01-20 0:00 ` Tucker Taft [this message]
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox