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 79C6E7FE44 for ; Mon, 4 Jul 2016 18:21:07 +0200 (CEST) IronPort-PHdr: 9a23:6grtNB/RL0C2Kv9uRHKM819IXTAuvvDOBiVQ1KB91u0cTK2v8tzYMVDF4r011RmSDN2dsagP2rWempujcFRI2YyGvnEGfc4EfD4+ouJSoTYdBtWYA1bwNv/gYn9yNs1DUFh44yPzahANS47AblHf6ke/8SQVUk2mc1EkfqKvQMWD0Iye7KObw9XreQJGhT6wM/tZDS6dikHvjPQQmpZoMa0ryxHE8TNicuVSwn50dxrIx06vrpT4wJk22CRKuuk98NZAZoVkcKkiBehTDC4nKHwy/M2ttR7OQgaVzmcBF28biB5JBU7J4UepcI32t37Yu/Bw3TjSDMTySbcsEWCz5qNvTwfAhyIONjp/+2bS3J8jxJlHqQ6s8kQsi7XfZ5uYYaJz Authentication-Results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=yallop@gmail.com; spf=Pass smtp.mailfrom=yallop@gmail.com; spf=None smtp.helo=postmaster@mail-qt0-f172.google.com Received-SPF: None (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of yallop@gmail.com) identity=pra; client-ip=209.85.216.172; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="yallop@gmail.com"; x-sender="yallop@gmail.com"; x-conformance=sidf_compatible Received-SPF: Pass (mail3-smtp-sop.national.inria.fr: domain of yallop@gmail.com designates 209.85.216.172 as permitted sender) identity=mailfrom; client-ip=209.85.216.172; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="yallop@gmail.com"; x-sender="yallop@gmail.com"; 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@mail-qt0-f172.google.com) identity=helo; client-ip=209.85.216.172; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="yallop@gmail.com"; x-sender="postmaster@mail-qt0-f172.google.com"; x-conformance=sidf_compatible X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A0AHAQALjHpXhqzYVdFbhRAGpjCHTosygXmGGAKBMgc6EgEBAQEBAQEBEQEBAQgLCwkhL4IyghsBBRIRHQEbHQEDDAYFCw0CAiYCAiIBEQEFARwGEyKHcwEDF5wbgTE+MYs7gWqCWgWGEwoZJw1SgzwBAQEBBgEBAQEbAgYQcYl0hECDAYJaBY4Eiw+OR48qjksSHoEPJQWCMhELgU07MokMAQEB X-IPAS-Result: A0AHAQALjHpXhqzYVdFbhRAGpjCHTosygXmGGAKBMgc6EgEBAQEBAQEBEQEBAQgLCwkhL4IyghsBBRIRHQEbHQEDDAYFCw0CAiYCAiIBEQEFARwGEyKHcwEDF5wbgTE+MYs7gWqCWgWGEwoZJw1SgzwBAQEBBgEBAQEbAgYQcYl0hECDAYJaBY4Eiw+OR48qjksSHoEPJQWCMhELgU07MokMAQEB X-IronPort-AV: E=Sophos;i="5.26,575,1459807200"; d="scan'208";a="183751284" Received: from mail-qt0-f172.google.com ([209.85.216.172]) by mail3-smtp-sop.national.inria.fr with ESMTP/TLS/AES128-GCM-SHA256; 04 Jul 2016 18:21:06 +0200 Received: by mail-qt0-f172.google.com with SMTP id w59so89785081qtd.3 for ; Mon, 04 Jul 2016 09:21:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=t9a75sRIoCewAcaYEn334b49fbWKY9RA7e3OmlpdY3w=; b=UlL/OXZGsas4xDhRk7fy4+WbehK+a58VXs4VmG0XK+l7BE5FOcUbF1UyQof4oU0xpj LzWuUeGGUMgl4/7TFGDpsLn6ZHzaFgl6OnN5Lr2KqVzbrztVPPQaINq7WRgdkCJD0T9X Vc5Lr6z6rMCJETwPPrzS7mw/5y/fV353r9XGNpf1x+buMBJVozyF1u2L+k73iBTtaX+R pxlfyHrgHrlrOl/89h+FFjqXHbOjluW7VN/8EOAPWChWrmq2OV3CXfsqPk98MTAkyhvH TxVnx15rb3oKn+lB/Ik2PJHwoXcVF+yG3JLcmVLyGKVsurZWgPTwPPX2+PJzql5rhINm Mf0Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=t9a75sRIoCewAcaYEn334b49fbWKY9RA7e3OmlpdY3w=; b=T4keZFyWMpEVlEfSGMKr1Aq7VSQXKCPk8lIC+3XZm0/GWvjRCIiA0S2/ClAfD6dRcN gdllRppywETkF+avAimRWXSd/iiUMv7pxFixxqKxrtXk1PnZVx+zSv3K0JEFqVpJVmd5 vOmHuqsWLWp5Lu3z0YN+yp1vqftoJwxT5ZMXCs+Bj/C/ltcPzOzNChSCnraiUsqeNEzX sUj1K6LT5EGTHuH0zgAGXnb2DwInviJ0kdCvC/qLkH9O2z0RrL7WIpRI7yPtpnOy2+NB jMZmlnth1K7dCGLDqffxXiYmt1aA5sL6BlTcUFtgB+eKafIXHXkmuRTIb14BrNc8+mh0 8zVw== X-Gm-Message-State: ALyK8tKyFqNLBtPIOSbdE7XAg+W7myDN0q8ivv169aoA0cAkcFG2YUNNukbB5GmbaEBLnQblMvX2Ae7BoXLK3Q== X-Received: by 10.200.44.78 with SMTP id e14mr19465082qta.77.1467649265364; Mon, 04 Jul 2016 09:21:05 -0700 (PDT) MIME-Version: 1.0 Received: by 10.55.182.6 with HTTP; Mon, 4 Jul 2016 09:21:04 -0700 (PDT) In-Reply-To: <03f0318e-3268-da14-d6e9-6efdcfcab567@tu-berlin.de> References: <03f0318e-3268-da14-d6e9-6efdcfcab567@tu-berlin.de> From: Jeremy Yallop Date: Mon, 4 Jul 2016 17:21:04 +0100 Message-ID: To: =?UTF-8?Q?Christoph_H=C3=B6ger?= Cc: caml users Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Subject: Re: [Caml-list] Garbage collector woes On 4 July 2016 at 17:04, Christoph H=C3=B6ger wrote: > I have a program using OCaml callbacks, one of these callbacks looks is > the following: > > /* Callbacks */ > CAMLprim iconv(void* user_data, double t, double const *x, double *cond) { > CAMLparam0(); > CAMLlocal3(ml_t, ml_x, ml_cond); > const value desc =3D *((value*)user_data); I'm guessing that 'desc' points to a block and N, MFIT and ICONV are field accessors. If so, you need to register 'desc' as a root here, since caml_copy_double or caml_ba_alloc_dims could trigger a gc, moving desc before it's next used. It's probably also better not to call your exported function 'iconv', since there's a POSIX function of that name. > /* Wrap the values in fresh big arrays */ > ml_t =3D caml_copy_double(t); > ml_x =3D caml_ba_alloc_dims(CAML_BA_FLOAT64 | CAML_BA_C_LAYOUT, 1, > (double*)x, Int_val(N(desc))); > ml_cond =3D caml_ba_alloc_dims(CAML_BA_FLOAT64 | CAML_BA_C_LAYOUT, 1, > cond, Int_val(MFIT(desc))); > > /* call the OCaml callback */ > caml_callback3(ICONV(desc), ml_t, ml_x, ml_cond); > CAMLreturn0; > }