comp.lang.ada
 help / color / mirror / Atom feed
From: Adam Beneschan <adam@irvine.com>
Subject: Re: Class with task destructor
Date: Wed, 23 Nov 2011 18:48:53 -0800 (PST)
Date: 2011-11-23T18:48:53-08:00	[thread overview]
Message-ID: <40710291-64ed-46b8-9106-40b7d481effd@b32g2000yqn.googlegroups.com> (raw)
In-Reply-To: jak2av$j9q$1@munin.nbi.dk

On Nov 23, 4:15 pm, "Randy Brukardt" <ra...@rrsoftware.com> wrote:
>
> >*Any* use of Unchecked_Deallocation can lead to a dangling reference,
> >which is why it's called Unchecked.  But also note that the language
> >explicitly says that if you use Unchecked_Deallocation on an object
> >that contains tasks, the object might not actually disappear
> >(13.11.2(9)).  I'm not sure if there are language rules that say that
> >the object *must* not be deallocated immediately in a case like this,
> >where the task has a discriminant that refers to the object being
> >freed.  I don't have time to look into it at the moment.  Maybe
> >someone else knows?
>
> The task continues to run (always) through a UC. The compiler has to ensure
> that works, and if that means not deallocating the object, that would work.
> Janus/Ada doesn't work this way, all of the task information is in the TCB
> and there is no connection to the enclosing object.

Except that in the OP's case, there *is* a connection: the task has an
access discriminant that will refer to the enclosing object, and if
the task keeps running, it could use that discriminant.  That's what I
wanted to know--in a case like that, are there language rules that say
the object can't be deallocated until the task has completed; or does
the access discriminant just become a dangling reference?  Or does
Janus/Ada (or any other compiler) treat cases like this specially so
that the access discriminant is still valid?  Since
Unchecked_Deallocation is always capable of creating dangling
references, maybe this case isn't so special; I was just wondering
whether this is a special case at all, since off the top of my head it
seems that objects that contain self-references through access
discriminants can't lead to dangling references (through those self-
references) when the objects are deallocated, *unless* they involve a
task that keeps running as in this case.

                        -- Adam



  reply	other threads:[~2011-11-24  2:50 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-11-23  1:50 Class with task destructor Rego, P.
2011-11-23  2:44 ` Adam Beneschan
2011-11-23  5:04   ` Yannick Duchêne (Hibou57)
2011-11-23  6:14     ` Adam Beneschan
2011-11-24  0:15       ` Randy Brukardt
2011-11-24  2:48         ` Adam Beneschan [this message]
2011-11-29  3:36           ` Randy Brukardt
2011-11-29  9:31             ` Simon Wright
2011-11-29 15:37             ` Adam Beneschan
2011-11-23  8:35 ` Dmitry A. Kazakov
2011-11-23  9:05   ` Simon Wright
2011-11-23 10:41     ` Dmitry A. Kazakov
2011-11-30  1:11     ` Rego, P.
2011-11-30  2:21       ` Adam Beneschan
2011-11-30  8:41         ` Dmitry A. Kazakov
2011-12-01  0:35           ` Randy Brukardt
2011-12-01  6:28             ` J-P. Rosen
2011-12-01 10:55               ` Simon Wright
2011-12-01 21:48               ` Robert A Duff
2011-12-01 22:44                 ` Adam Beneschan
2011-12-02  0:57                 ` Randy Brukardt
2011-12-02  5:57                 ` J-P. Rosen
2011-12-02 15:07                   ` Robert A Duff
2011-12-02 18:41                   ` Jeffrey Carter
2011-12-01  9:25             ` Dmitry A. Kazakov
2011-12-01  1:58         ` Rego, P.
2011-11-30  8:35       ` Simon Wright
2011-11-30 15:36         ` Adam Beneschan
2011-11-30 16:32           ` Robert A Duff
2011-12-01  0:40             ` Randy Brukardt
2011-12-01  8:50               ` Yannick Duchêne (Hibou57)
2011-12-02  0:50                 ` Randy Brukardt
2011-12-02  5:30                   ` Jeffrey Carter
2011-12-02 16:20                     ` Adam Beneschan
2011-12-02 18:01                       ` Dmitry A. Kazakov
2011-12-02 18:50                       ` Jeffrey Carter
2011-12-02 19:03                         ` Adam Beneschan
2011-12-01 10:51           ` Simon Wright
2011-12-01 22:59             ` Simon Wright
2011-12-01  1:59         ` Rego, P.
2011-11-30  1:47     ` Rego, P.
     [not found]     ` <15090042.1880.1322617401962.JavaMail.geo-discussion-forums@yqkn8>
2011-11-30  8:43       ` Dmitry A. Kazakov
2011-12-01  1:53         ` Rego, P.
2011-12-01  9:28           ` Dmitry A. Kazakov
2011-11-25  2:44   ` Rego, P.
     [not found]   ` <28489797.1088.1322188495508.JavaMail.geo-discussion-forums@yqf20>
2011-11-25  9:19     ` Dmitry A. Kazakov
2011-11-29  3:40       ` Randy Brukardt
2011-11-23 10:26 ` Brian Drummond
2011-11-25  1:37   ` Rego, P.
2011-11-25 13:40     ` Brian Drummond
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox