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!reader02.eternal-september.org!news.eternal-september.org!news.eternal-september.org!feeder.eternal-september.org!aioe.org!.POSTED!not-for-mail From: "Dmitry A. Kazakov" Newsgroups: comp.lang.ada Subject: Re: GNAT, portability between computers (win32) Date: Thu, 11 Aug 2016 22:53:27 +0200 Organization: Aioe.org NNTP Server Message-ID: References: <90233803-e8cb-4461-a093-f705409dc83f@googlegroups.com> <70efd651-f3ef-4578-b0e5-33ccfea0a901@googlegroups.com> <1470910315.15815.15.camel@obry.net> <2dfac232-a683-40f4-aff4-6d15b57b525c@googlegroups.com> <1470922817.15815.23.camel@obry.net> <137435ce-6358-498a-ba83-a015a9a76b78@googlegroups.com> NNTP-Posting-Host: xelDFTENDI+dlkJFd2Ot2w.user.gioia.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Complaints-To: abuse@aioe.org User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.2.0 X-Notice: Filtered by postfilter v. 0.8.2 Xref: news.eternal-september.org comp.lang.ada:31404 Date: 2016-08-11T22:53:27+02:00 List-Id: On 2016-08-11 20:12, Aurele wrote: > Actually Dmitry, I'm using the auto init (true) feature and > everything works great with no external GNAT dependencies. Yes, the problem is that if your DLL has library-level tasks or timed entry calls automatic initialization will deadlock. The offending call is Lock_RTS. If you look at the b__libraryname.adb file generated by gprbuild you will find there calls to the system procedures doing library initialization. If any of them calls Lock_RTS in its body, the DLL will freeze your program. It hit me hard recently. Luckily I could go with manual initialization. It is quite frustrating that GNAT does not support DLLs with full Ada. P.S. There is no need to lock RTS under Windows because threading is already locked when DLL is being loaded. -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de