From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,89cbee942992178a X-Google-Attributes: gid103376,public From: dewar@merv.cs.nyu.edu (Robert Dewar) Subject: Re: Deallocating Task objects Date: 1997/02/18 Message-ID: #1/1 X-Deja-AN: 219768110 References: <01bc1b53$fb0251c0$829d6482@joy.ericsson.se> <33086C65.F9F@elca-matrix.ch> <3309C668.7D8E@Sor.psu.edu> Organization: New York University Newsgroups: comp.lang.ada Date: 1997-02-18T00:00:00+00:00 List-Id: Bob Duff said <> The history is not quite right, and is interesting. The Ada 83 RM does indeed imply (but a not entirely obvious chain of reasoning), that a function can return a local task, and the caller can check if it is terminated. Jean Pierre Rosen noticed this and considered it an obvious bug in the design. Confident that the ARG would fix this, he submitted it as an issue. Amazingly, the ARG voted that this behavior was intended and must be required. The consequence is awful, the only reasonable implementation is to keep tasks around much longer than is needed. At the following meeting of WG9, Jean Ichbiah and I launched an energetic attempt to convince WG9 that this was NOT one of the ARG decisions that should be approved. We lost, largely because Ron Brender of Digital announced that this could be implemented without any negative impact. (An ironic claim, since in fact the way that Digital reacted to this ruling, like other vendors, was to delay freeing of locally allocated tasks in this situation. The ACVC suite, in the business of enforcing ARG decisions, then produced tests that required this to work (how any one could possibly think this was useful is beyond me). Implentors dutifully implemented it (at least in the case of Digital and Alsys, this was done simply by not freeing tasks completely in this situation, causing an annoying storage leak). Much later, the ARG visited this issue, and declared that this situation was pathological, which meant that no compiler was expected to implement it (I do not remember if it was formally declared erroneous or not, I don't have my AI's with me right now). This meant that the test was challengable, but in fact, to my memory it did not get challenged, since this was late in the Ada 83 cycle. Finally, it was fixed, in a rather nice and general way in Ada 95. Anyone want to add to or amend this bit of history (trying to remember things from this far back in detail is always a bit unreliable :-)