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
next prev 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