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.9 required=5.0 tests=BAYES_00 autolearn=unavailable autolearn_force=no version=3.4.4 Path: eternal-september.org!reader01.eternal-september.org!.POSTED!not-for-mail From: Simon Wright Newsgroups: comp.lang.ada Subject: Re: Private extension of a synchronized interface Date: Tue, 19 Feb 2019 11:29:20 +0000 Organization: A noiseless patient Spider Message-ID: References: <7c20337f-7936-401b-bbf2-a4a7c261825b@googlegroups.com> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: reader02.eternal-september.org; posting-host="6a450813943cf1ef2e8c998e7a2c852b"; logging-data="1109"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/mDRpjTKx+9r88oNhG9tKmnmbme7BC4fE=" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (darwin) Cancel-Lock: sha1:MbSJ0nteE6/A6jA/QO3HJiD5ebI= sha1:U1NFWWD55vzGYSDR2VleBYLnKlI= Xref: reader01.eternal-september.org comp.lang.ada:55581 Date: 2019-02-19T11:29:20+00:00 List-Id: Egil H H writes: > On Monday, February 18, 2019 at 11:35:15 PM UTC+1, Randy Brukardt wrote: >> >> This appears to be a GNAT bug, although I'm not 100% certain. > > There's definitely at least one GNAT bug here. > Forcing a dispatching call on the interface (as suggested by Simon) works, > Example.An_Interface'Class(v).p1; > > but forcing a dispatching call on the private extension, does not > Example.Instance'Class(v).p1; > > It compiles and runs, but seems to call a null body... Worse than that: it leaves the PO mangled! GCC 9.0.0 (which is built with internal checks enabled: released versions aren't) raises an ICE (internal compiler error), +===========================GNAT BUG DETECTED==============================+ | 9.0.0 20190115 (experimental) (x86_64-apple-darwin15) Assert_Failure sem_disp.adb:491| so the released version (CE, 8) rambles past this error, resulting in the next call saying raised PROGRAM_ERROR : System.Tasking.Protected_Objects.Entries.Lock_Entries_With_Status: protected object is finalized Will report.