From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Original-To: caml-list@sympa.inria.fr Delivered-To: caml-list@sympa.inria.fr Received: from mail3-relais-sop.national.inria.fr (mail3-relais-sop.national.inria.fr [192.134.164.104]) by sympa.inria.fr (Postfix) with ESMTPS id 22BA67F0AF for ; Mon, 14 Mar 2016 11:32:51 +0100 (CET) IronPort-PHdr: 9a23:TPKvPBB3u4fVnL0QzrOZUyQJP3N1i/DPJgcQr6AfoPdwSP7zo8bcNUDSrc9gkEXOFd2CrakU1KyH7eu5BSQp2tWojjMrSNR0TRgLiMEbzUQLIfWuLgnFFsPsdDEwB89YVVVorDmROElRH9viNRWJ+iXhpQAbFhi3DwdpPOO9QteU1JTokbHssMSPKyxzxxODIppKZC2sqgvQssREyaBDEY0WjiXzn31TZu5NznlpL1/A1zz158O34YIxu38I46Fp34d6XK77Z6U1S6BDRHRjajhtpZ6jiR6WYxGG4PQbU35euB1CBBSNuB/gV5H6tSrh8OB60i6GFcb7RPY6Q2Lxwb1sTUrHjzwYNjhx7mbRwuZqga5WuhamuFQrzInPf4CTceQ7dIvCcNlcSWcXDZUZbDBIHo7pN9hHNOEGJ+sN6tCl/1Y= Authentication-Results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=goswin-v-b@web.de; spf=Pass smtp.mailfrom=goswin-v-b@web.de; spf=None smtp.helo=postmaster@mout.web.de Received-SPF: None (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of goswin-v-b@web.de) identity=pra; client-ip=212.227.15.14; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="goswin-v-b@web.de"; x-sender="goswin-v-b@web.de"; x-conformance=sidf_compatible Received-SPF: Pass (mail3-smtp-sop.national.inria.fr: domain of goswin-v-b@web.de designates 212.227.15.14 as permitted sender) identity=mailfrom; client-ip=212.227.15.14; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="goswin-v-b@web.de"; x-sender="goswin-v-b@web.de"; x-conformance=sidf_compatible; x-record-type="v=spf1" Received-SPF: None (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of postmaster@mout.web.de) identity=helo; client-ip=212.227.15.14; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="goswin-v-b@web.de"; x-sender="postmaster@mout.web.de"; x-conformance=sidf_compatible X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A0B8AAAGkuZWkw4P49RDGoQYbQGoKIomh2UBDYFtIYVsAoEmOBQBAQEBAQEBARABAQEBBw0JCSEvgi2CFQEBBDIBRhALGAklDwUoIYghARUECiy1Cx+EfAEBAQEBBQEBAQEciVx+hCgQgy2BDwWXS4VuiAiBb0uGcwonhTGHPYdAHgEBgkURCIFJaQGKYgEBAQ X-IPAS-Result: A0B8AAAGkuZWkw4P49RDGoQYbQGoKIomh2UBDYFtIYVsAoEmOBQBAQEBAQEBARABAQEBBw0JCSEvgi2CFQEBBDIBRhALGAklDwUoIYghARUECiy1Cx+EfAEBAQEBBQEBAQEciVx+hCgQgy2BDwWXS4VuiAiBb0uGcwonhTGHPYdAHgEBgkURCIFJaQGKYgEBAQ X-IronPort-AV: E=Sophos;i="5.24,335,1454972400"; d="scan'208";a="168532339" Received: from mout.web.de ([212.227.15.14]) by mail3-smtp-sop.national.inria.fr with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 14 Mar 2016 11:32:50 +0100 Received: from frosties.localnet ([134.3.242.84]) by smtp.web.de (mrweb001) with ESMTPSA (Nemesis) id 0M2dxF-1ZnjDd00FZ-00sOZN; Mon, 14 Mar 2016 11:32:44 +0100 Received: from mrvn by frosties.localnet with local (Exim 4.84) (envelope-from ) id 1afPnm-0005od-KK; Mon, 14 Mar 2016 11:32:42 +0100 Date: Mon, 14 Mar 2016 11:32:42 +0100 From: Goswin von Brederlow To: =?iso-8859-1?Q?Fran=E7ois?= Bobot Cc: caml-list@inria.fr Message-ID: <20160314103240.GA21595@frosties> References: <20160308154948.GA5919@frosties> <20160308190415.GA10232@frosties> <56E2DEB5.8020304@cea.fr> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <56E2DEB5.8020304@cea.fr> User-Agent: Mutt/1.5.23 (2014-03-12) X-Provags-ID: V03:K0:uSIioEGO18vVxU/ksANeOK2z6UoAZtbXwXfStrU3AIWT46+PSU3 qdIoNN0zU4rCvLgWuGqsGSLpyvOu0J+tTBR1IMYMp6n/v6yxYWWnWRjw1oZq89T/1ZHyRvt gu7TsICLSZ5UAgUFIPYK5AwPyuDsxZ6OzhFPVRdUKV7hNGWbAQbUIKMTz5r+AqQsT+Bd8FJ 19URyPJEuOgZnhcnbASUg== X-UI-Out-Filterresults: notjunk:1;V01:K0:ozFfeD4u7qE=:fquF3sxysqOWvm+hmdTNle RZsKz9JyuRvuAc7DcgkKT6n2Tnz1vnH8uxD4vOsFjV+RtS/zAxcdvu2hD4QmnFwR4H8IVuAhX RVnW0t1gbVD7zHRaT3L1QYEtRM4QvvKAo4FMXnPyGyT2NKopVxxlNB8kCrkdJPE0zowC6NjjE Y2e5kRtN+CEFcuta23qs7LlNq8l82ngm39zgB+cDiHWDWNPNKVMQZdzOuXr0Bdzn9s7NF2Fet SFzpxdhTRDzd5DV4oGYjVSrv/24aRW8h4+PT9UNJTqzPGHtATpvV0VaWd3d59Mfq3exC9qfDP yyki0en2F18//ctrpSSbOMKvHKNoHZEO4m/YCb0vKv6u0FwYe8VyfVAowZMtxzvEx7RxGFlni ZGCMubQ3at7JARBNi5aJmMM0obEHOlWFAIbfr9xWc1z03yDHygciENCDtIOJstK0WQ7y7yfVn ZaeX+xsXVvLgvi1kPl55Hn4zOeK57/uBPJvRzpKQ8cL/5GUAQb4NQIl5PzLABw8/7kUcpK14C ZrxDfIJokXLfCODXZuSMEmQmFaRuHOG1r8oLHcSqwyHb4d7p9DnzubScC5cNt/MB4LNTpCXfB Xmsx5geGvR2uKhLx86PbJwQl74/moFoDwFvHcUUc60cKs6wPy94gklfdx0/Ptfj2187tLg4sf /Qr7YMucoQmeza+4uFoi8c5BQ+nDJYxlw4NWTrLTDYuUq+cbjZWg9ktOHSPiXTAiZe5kLVwFi cnJDYLd7dJ4fDAIknio+fB2JFVOIQeKVi3sBKUB2HofN8UvQ8bEDEAtBspA= Subject: Re: [Caml-list] memory corruption with Weak.t in Gc.finalise BOn Fri, Mar 11, 2016 at 04:05:25PM +0100, François Bobot wrote: > On 08/03/2016 20:04, Goswin von Brederlow wrote: > >On Tue, Mar 08, 2016 at 11:00:33AM -0500, Gabriel Scherer wrote: > >>It's great that you have a minimal reproduction example. Could you > >>create an issue on the issue tracker? > >> http://caml.inria.fr/mantis/ > >> > >>Issues on the bugtracker are easier to keep track of than mails on the > >>caml-list. > > > >If it is a bug in the compiler and not just my code then sure. > > > > Perhaps a bug in your code, I haven't ran your code; just read it. > > >>> > >>>class obj = object(self) > >>> val weak = Weak.create 1 > >>> initializer Weak.set weak 0 (Some self) > >>> initializer setup weak > >>> initializer Gc.finalise cleanup self > >>>end > >>> > >>>let () = > >>> Printf.printf "Creating object\n%!"; > >>> ignore (new obj); > >>> test () > >>> > > >>>void test(void) { > >>> CAMLparam0(); > >>> CAMLlocal1(obj); > >>> printf("%s\n", __PRETTY_FUNCTION__); > >>> printf(" weak = 0x%lx\n", weak); > >>> if (weak != 0) { > >>> obj = Field(weak, 1); > >>> printf(" obj = 0x%lx\n", obj); > >>> if (obj != 0) { > >>> printf(" tag = %d\n", Tag_val(obj)); > >>> } > > If the weak pointer is unset, obj is not equal to 0 but to caml_weak_none > (in 4.03/trunk caml_ephe_none). And I think you are in this case since `(new > obj)` can be immediately garbage collected. caml_ephe_none should not be > dereferenced: > ``` > static value ephe_dummy = 0; > value caml_ephe_none = (value) &ephe_dummy; > ``` > > Thank you for your mantis ticket > http://caml.inria.fr/mantis/view.php?id=7173 that asks for a C API for weak > pointers/ephemerons. > > Best, Still using 4.02. This is a new thing. Still Weak.t needs to interact cleanly with the Gc. Guessing at the internal state of Weak.t is bad. Let's fix this for 4.03. MfG Goswin