comp.lang.ada
 help / color / mirror / Atom feed
From: Simon Wright <simon@pushface.org>
Subject: Re: Ada.Containers and concurrent modification exception.
Date: Wed, 19 Sep 2018 16:53:28 +0100
Date: 2018-09-19T16:53:28+01:00	[thread overview]
Message-ID: <ly1s9pjxfr.fsf@pushface.org> (raw)
In-Reply-To: c50e849d-d14c-425d-99f6-75dce5fc3927@googlegroups.com

rakusu_klein@fastmail.jp writes:

> Why Ada's Cursors does not provide the
> ConcurrentModificationException, as Java Collections do, or some
> variant of it? Consider the following:
>
> with Ada.Containers.Indefinite_Ordered_Maps;
> ...
>    The_Map : Map;
> ...
> declare
>    I : Cursor := First (The_Map);
>    J : Cursor := First (The_Map);
> begin
>    --  Now Cursors are synchronized with each other and with a container.
>    Delete (The_Map, I);
>    --  It's O'k. But now J lost a sync and points to a dead Node.
>    Next (J);
>    --  What should I expected here,
>    --  any well defined exception or
>    --  raising a zombie?
> end;

What actually happens in this case (GNAT CE 2018) is that the program
enters an endless loop looking at (what it thinks is) a node with both
left and right pointers designating itself.

The ARM goes to a lot of trouble to prevent "tampering with cursors",
but that's mainly to do with detecting altering the structure of a
container while iterating over it, and the code you show isn't really
covered by that. So I'm not sure if it isn't 'just' erroneous[1].

It would be a good thing if the error was detected. Perhaps submit a bug
report to AdaCore?

[1] http://www.adaic.org/resources/add_content/docs/95style/html/sec_5/5-9.html

  parent reply	other threads:[~2018-09-19 15:53 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-09-19 13:12 Ada.Containers and concurrent modification exception rakusu_klein
2018-09-19 15:22 ` Jacob Sparre Andersen
2018-09-19 16:05   ` Simon Wright
2018-09-19 16:08     ` Jacob Sparre Andersen
2018-09-19 16:47       ` Simon Wright
2018-09-19 16:31     ` Anh Vo
2018-09-19 17:23       ` Anh Vo
2018-09-19 17:37   ` rakusu_klein
2018-09-19 18:05     ` Simon Wright
2018-09-19 15:53 ` Simon Wright [this message]
2018-09-19 18:24   ` rakusu_klein
2018-09-21 23:27     ` Randy Brukardt
2018-09-22  1:09       ` rakusu_klein
2018-09-22  8:05         ` Dmitry A. Kazakov
2018-09-22 17:49           ` rakusu_klein
2018-09-22 19:50             ` Dmitry A. Kazakov
2018-09-24 21:47         ` Randy Brukardt
2018-09-25  6:04           ` Petter Fryklund
2018-09-25 22:32             ` Randy Brukardt
2018-09-26  5:01               ` Petter Fryklund
2018-09-19 20:16 ` Jeffrey R. Carter
2018-09-19 20:56   ` rakusu_klein
2018-09-21 23:21     ` Randy Brukardt
replies disabled

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