comp.lang.ada
 help / color / mirror / Atom feed
From: Maciej Sobczak <see.my.homepage@gmail.com>
Subject: Re: How many Ada compiler bugs are here?
Date: Sat, 14 Jan 2012 02:20:19 -0800 (PST)
Date: 2012-01-14T02:20:19-08:00	[thread overview]
Message-ID: <491fa855-f420-4701-a51a-39ac5a0cb63c@p42g2000vbt.googlegroups.com> (raw)
In-Reply-To: jentdh$4sd$1@munin.nbi.dk

On Jan 13, 1:21 am, "Randy Brukardt" <ra...@rrsoftware.com> wrote:

> > 3. Logically, Tmp is never created, because Make_T raises an
> > exception. Somehow some object is finalized. Apparently it is Tmp,
> > which should not exist.
> > 4. Somehow Tmp.initialized = True, even though its default value is
> > defined to be False.
>
> I'm not sure if these are actually bugs or not; the fact that Adjust is
> being called for a limited object means to me that nothing that happens
> afterwards makes any sense

Adjust is not called, but I have defined it to check if that's the
case.
Still, Adjust is not the biggest issue here, neither is the
requirement for the return statement.
The biggest issue is that the compiler fails to initialize some object
(even ignoring the statically provided field initializers) and yet
considers it to be worthy finalization - and the Finalize operation
has absolutely no line of defense against this. This is a *very*
serious problem.
I have found it, because my program was crashing.
And since this relates to the very fundamentals of the object model,
this bug is not to be ignored. I can live with the rest, but this one
is really serious.

The workaround is this:

   type T is limited private;

(note the lack of indefinite constraint - that is, we allow default
objects)
and then:

   procedure Init (Val : in out T; whateverelsehere);

This works, but introduces the notion of uninitialized (default)
object. The original version was stronger as it only allowed full
proper objects.

--
Maciej Sobczak * http://www.msobczak.com * http://www.inspirel.com



  parent reply	other threads:[~2012-01-14 10:20 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-01-12 23:20 How many Ada compiler bugs are here? Maciej Sobczak
2012-01-13  0:21 ` Randy Brukardt
2012-01-13  1:26   ` Adam Beneschan
2012-01-13  8:23     ` Dmitry A. Kazakov
2012-01-13  8:47       ` AdaMagica
2012-01-13  9:07         ` Dmitry A. Kazakov
2012-01-13  9:35           ` AdaMagica
2012-01-13 10:00             ` Dmitry A. Kazakov
2012-01-13 10:38               ` georg bauhaus
2012-01-13 11:39                 ` Dmitry A. Kazakov
2012-01-13 12:43                   ` Georg Bauhaus
2012-01-13 13:06                     ` AdaMagica
2012-01-13 13:16                       ` AdaMagica
2012-01-13 13:22                       ` Georg Bauhaus
2012-01-13 13:29                         ` Dmitry A. Kazakov
2012-01-13 10:52               ` AdaMagica
2012-01-13 11:35                 ` Dmitry A. Kazakov
2012-01-13 12:58                   ` AdaMagica
2012-01-13 13:43                     ` Dmitry A. Kazakov
2012-01-13 15:06                       ` Robert A Duff
2012-01-13 15:46                         ` Dmitry A. Kazakov
2012-01-13 17:42                           ` georg bauhaus
2012-01-13 18:52                             ` Dmitry A. Kazakov
2012-01-14  0:26                           ` Randy Brukardt
2012-01-14  9:49                             ` Dmitry A. Kazakov
2012-01-19  1:35                               ` Randy Brukardt
2012-01-19 10:33                                 ` Dmitry A. Kazakov
2012-01-14  2:41                           ` Robert A Duff
2012-01-13 17:23               ` Adam Beneschan
2012-01-14  2:41                 ` Robert A Duff
2012-01-13 17:15       ` Adam Beneschan
2012-01-13 20:06   ` Blady
2012-01-13 23:30     ` Adam Beneschan
2012-01-14 13:29       ` Brian Drummond
2012-01-19  1:47         ` Randy Brukardt
2012-01-19  4:24           ` Adam Beneschan
2012-01-20  0:04             ` Randy Brukardt
2012-01-14 10:20   ` Maciej Sobczak [this message]
2012-01-14 14:03     ` Brian Drummond
2012-01-16 16:35     ` Adam Beneschan
2012-01-20 10:43       ` 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