From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by c5ff346549e7 (Postfix) with ESMTPS id 83BD55D5 for ; Mon, 21 Dec 2020 21:03:44 +0000 (UTC) X-IronPort-AV: E=Sophos;i="5.78,437,1599516000"; d="asc'?scan'208";a="484113578" Received: from prod-listesu18.inria.fr (HELO sympa.inria.fr) ([128.93.162.160]) by mail2-relais-roc.national.inria.fr with ESMTP; 21 Dec 2020 22:03:42 +0100 Received: by sympa.inria.fr (Postfix, from userid 20132) id 4F714E02A3; Mon, 21 Dec 2020 22:03:42 +0100 (CET) Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by sympa.inria.fr (Postfix) with ESMTPS id B95AFE020B for ; Mon, 21 Dec 2020 22:03:39 +0100 (CET) Authentication-Results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=christophe@raffalli.eu; spf=Pass smtp.mailfrom=christophe@raffalli.eu; spf=None smtp.helo=postmaster@mail.raffalli.eu IronPort-PHdr: =?us-ascii?q?9a23=3A8xP/YxzPiFgzi7XXCy+O+j09IxM/srCxBDY+r6Qd?= =?us-ascii?q?2uMeIJqq85mqBkHD//Il1AaPAdyEragc0aGP6/qocFdDyK7JiGoFfp1IWk1Nou?= =?us-ascii?q?QttCtkPvS4D1bmJuXhdS0wEZcKflZk+3amLRodQ56mNBXdrXKo8DEdBAj0OxZr?= =?us-ascii?q?KeTpAI7SiNm82/yv95HJbAhEmTiwbalsIBmqswndudQajZd8Jq0s1hbHv3xEdv?= =?us-ascii?q?hMy2h1P1yThRH85smx/J5n7Stdvu8q+tBDX6vnYak2VKRUAzs6PW874s3rrgTD?= =?us-ascii?q?QhCU5nQASGUWkwFHDBbD4RrnQ5r+qCr6tu562CmHIc37SK0/VDq+46t3ThLjlT?= =?us-ascii?q?wKPCAl/m7JlsNwjbpboBO/qBx5347Ue5yeOP5ncq/AYd8WWW9NU8BMXCJDH4y8?= =?us-ascii?q?dZMCAeQBM+hGsofzpFUOohSiCgaxBuzi0TBIimPs0KAgz+gtDQPL0Qo9FNwOqn?= =?us-ascii?q?TUq9D1Ob8MXOC11qnIzC7Db+9R2Tfl6IjHbA0qr+2WUrJ+f8re000vFwfEjl6N?= =?us-ascii?q?roHqIzOV1v4Ms2iA8+pgUvqvi245pAxquDig3MksiofTiYIRzlDE9D91z5goJd?= =?us-ascii?q?ChTkNwfNGrHodKuS6AK4t2Xt0tQ3tuuCsizrAKpIK3cTUXxJkmxRPTdfyJfomU?= =?us-ascii?q?7h/gV+ucPSp0iG9rdr+imxq+71atx+LhWsWo1FtHoC5InNbMu30J1xHe9s6KQe?= =?us-ascii?q?Z+8Ee5wTuDyg/e5+5eLU0wiKbXMZoszqIqmpYNv0nOEDf6lFjogKKYbEkp+vSk?= =?us-ascii?q?5/7kb7jivJOQKot5hw/4P68zgMKwG/44PRILX2WD+eSzyrnj/UrhTbVPlPI2k6?= =?us-ascii?q?3ZvIrAJcsBqK65DRVa0oIn6xa+FTupzskYkWEGLFJDZh2Hk5DkN0zBLf33F/uy?= =?us-ascii?q?h0mgnC1vyvzaJLHtHJvAI3bbnLfkZ7l96kpcyAQpzdBY4pJZEq0OIPLpWk/wr9?= =?us-ascii?q?zYEhg5MxS0w+n5E9h9zJkRWWyBAqCDNKPStV6I6vgxLOmRfIMVoiryK+A55/7y?= =?us-ascii?q?in80gVAcfa230psNb3C5Hu9rIkSYYXrpmdgBC30FshA/TOzskl2CUCRca2y8X6?= =?us-ascii?q?Im/js7Ep6pDZ/fRoCxh7yMxDu0EYdTZmBCE1yMFXbod56YW/oXcyKTIsphkiQe?= =?us-ascii?q?WrS7So8h0wuutA7gxLZ9IOrU4H5QiZW25NFr5uDJ3TU/7ztlR5Ct2n+MQnsyum?= =?us-ascii?q?4SQC4e3aZloEU7xE3VleBzivlcXcFI6ulSGlMxPJvYiuh7EMzaWwTbf97PRkzw?= =?us-ascii?q?Efu8BjRkZdIrwsQSZF59Fp2Yhx7N1i6uAvdBnLyRBYco9brc0lDrLshzwnLC1e?= =?us-ascii?q?8skg91EYN0KWS6i/snpEDoDInTnhDczv7yLPhO7Gv27G6GiFG2kgRASgcpCvff?= =?us-ascii?q?VH4Rb0/SrJL0+xGaFu78OfEcKgJEjPW6BO5PY9ztg09BQa64as7XbWy4n2OxQx?= =?us-ascii?q?uVlOrVMdjaPl4F1SCYM3Aq1gAe+XHfZVo7Dyal5XjXAjJnEVbuJU7xo7Fz?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0D9AwABDeFf/+laW5BiHQEBAQEJARIBB?= =?us-ascii?q?QUBgg+Be4F9IBIuhEGJBIgeA4UailEWjDULAQMBCAUtAgQBAYRKAoF2HgcBBDQ?= =?us-ascii?q?TAhABAQUBAQECAQMDBAFwhWEMgjgpAYMSAQQBIwQZAQE4DwtCAgIQRwYBgm1Mg?= =?us-ascii?q?mYfAa5vfzODBAEBBoYhgTkJgTiBU4dkg3JBPoFCgRGDGT6EHAEBgzeCYIJBO3p?= =?us-ascii?q?bBGoMTpAJin2dQYJ+gRuOfItmgRChJ5QJnQ+ESIFtI4FXTSZNgmlQGQ2OIQwXh?= =?us-ascii?q?E+JWEAzNwIGAQkBAQMJViYTiXIBAQ?= X-IPAS-Result: =?us-ascii?q?A0D9AwABDeFf/+laW5BiHQEBAQEJARIBBQUBgg+Be4F9IBI?= =?us-ascii?q?uhEGJBIgeA4UailEWjDULAQMBCAUtAgQBAYRKAoF2HgcBBDQTAhABAQUBAQECA?= =?us-ascii?q?QMDBAFwhWEMgjgpAYMSAQQBIwQZAQE4DwtCAgIQRwYBgm1MgmYfAa5vfzODBAE?= =?us-ascii?q?BBoYhgTkJgTiBU4dkg3JBPoFCgRGDGT6EHAEBgzeCYIJBO3pbBGoMTpAJin2dQ?= =?us-ascii?q?YJ+gRuOfItmgRChJ5QJnQ+ESIFtI4FXTSZNgmlQGQ2OIQwXhE+JWEAzNwIGAQk?= =?us-ascii?q?BAQMJViYTiXIBAQ?= X-IronPort-AV: E=Sophos;i="5.78,437,1599516000"; d="asc'?scan'208";a="484113559" X-MGA-submission: =?us-ascii?q?MDHpzqhZF9pRkH4Jyutav9kJ6oDuQPyr4dldTf?= =?us-ascii?q?83QbS3YHrHJsK/lETg27HeuvfjLZ6GFRbPJVsIg0F5IFRf5BO6jSA7OO?= =?us-ascii?q?B2eZeJ+3TbWh1AXnfdR6cKal3Y1KaM9e0vDzsXnG5Lrz1vj90bFct4Mc?= =?us-ascii?q?FH58fSKfSTeYENC4KIgXShdg=3D=3D?= Received: from vmi311709.contaboserver.net (HELO mail.raffalli.eu) ([144.91.90.233]) by mail2-smtp-roc.national.inria.fr with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 21 Dec 2020 22:03:39 +0100 Received: from localhost (193.89.50.123.dsl.dyn.mana.pf [123.50.89.193]) by mail.raffalli.eu (Postfix) with ESMTPSA id 718A164063B; Mon, 21 Dec 2020 22:03:37 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=raffalli.eu; s=mail; t=1608584618; bh=iQU3c3vO70iW3muee7Wu+yzrSm45UwNfiGREFpX5yrY=; h=Date:From:To:Subject:References:In-Reply-To; b=vDFEswDcx4WhyT8MSF0Bm7ogseecoP7pTW52PjV0/MIRBE44eXH2TV+qrSjF/tRUn Uz1+hZ3WXOZFsNfVkCOumFNuOJCHm6smNWiDDdmxDuFqehvKWRoaiqbLMJVMC/hukz EDS6Wqp8LJjhzzl4cqXeaRyu34ZA25yz2VLlaTC89HLmIlvqT/7OdcNyexcX/3q3UX HRLC/1qA4HGQ/P4MnOFoE86HZ9eU4DSapXmzNM2Fk1mdlBNh6lPc8mtg2M4ApcvEtb fVpQZkmm5xShJPw05OX7OcxFVosO3NMbZAA2pTn+vMLrsGDRthbNyRFTUVnV3RjhgU OCtjOhsWoF7Sg== Date: Mon, 21 Dec 2020 22:03:32 +0100 From: Christophe Raffalli To: Xavier Leroy , caml users Message-ID: References: <9AB7B536-D8D5-4473-8692-110F0053F2EE@raffalli.eu> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="gdyWi0wqTJoxdiIJ" Content-Disposition: inline In-Reply-To: Subject: Re: [Caml-list] Global roots Reply-To: Christophe Raffalli X-Loop: caml-list@inria.fr X-Sequence: 18319 Errors-To: caml-list-owner@inria.fr Precedence: list Precedence: bulk Sender: caml-list-request@inria.fr X-no-archive: yes List-Id: List-Help: List-Subscribe: List-Unsubscribe: List-Post: List-Owner: List-Archive: Archived-At: --gdyWi0wqTJoxdiIJ Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable > > Thanks for the help. > > I took a stronger path and initialized to (fun _ -> assert false). > > It seems I have no more segfault (not sure yet as the segfault was no rep= roductible). In fact the segfault it still there, takes many run to observe it ... It is still in caml_callback_asm, meaning the global root pointing to the OCaml function has been corrupted. Note: I use caml_register_generational_root and caml_modify_generational_root to register and modify the pointer to the callback. I give my code doing the callback, following some example I found on the net, in case someone has a comment/hint. May be the order between Camlparam and acquire runtime is wrong ? This code reaquires the runtime lock, which is released only by the X event= loop that performs the callback; This means that the same C thread release and a= cquire the global runtime lock. I have only two threads. -------------------------------------------------------------------- static void protect_callback(char *name, value f, value v1) { caml_acquire_runtime_system(); { CAMLparam2(f,v1); CAMLlocal1(res); res =3D caml_callback_exn(f, v1); if(Is_exception_result(res)) fprintf(stderr, "Egl.main_loop: " "WARNING: %s raised an exception\n", name) ; CAMLdrop; } caml_release_runtime_system(); } static void protect_callback2(char *name, value f, value v1, value v2) { caml_acquire_runtime_system(); { CAMLparam3(f,v1,v2); CAMLlocal1(res); res =3D caml_callback2_exn(f, v1, v2); if(Is_exception_result(res)) fprintf(stderr, "Egl.main_loop: " "WARNING: %s raised an exception\n", name) ; CAMLdrop; } caml_release_runtime_system(); } static void protect_callback3(char *name, value f, value v1, value v2, value v3) { caml_acquire_runtime_system(); { CAMLparam4(f,v1,v2,v3); CAMLlocal1(res); res =3D caml_callback3_exn(f, v1, v2, v3); if(Is_exception_result(res)) fprintf(stderr, "Egl.main_loop: " "WARNING: %s raised an exception\n", name) ; CAMLdrop; } caml_release_runtime_system(); } static void protect_callback4(char *name, value f, value v1, value v2, value v3, value v4) { caml_acquire_runtime_system(); { CAMLparam5(f,v1,v2,v3,v4); CAMLlocal1(res); CAMLlocalN(tmp,4); tmp[0] =3D v1; tmp[1]=3Dv2; tmp[2]=3Dv3; tmp[3]=3Dv4 ; res =3D caml_callbackN_exn(f, 4, tmp); if(Is_exception_result(res)) fprintf(stderr, "Egl.main_loop: " "WARNING: %s raised an exception\n", name) ; CAMLdrop; } caml_release_runtime_system(); } > > Christophe > > > > > I have a multithreaded program, which segfault in callback_asm, whi= le I > > think I respect all rules of c interfaces... Except maybe the above= =2E.. > > > > > > There is an OPAM compiler switch "4.10.0+nnpcheck" that adds run-time c= hecks > > for ill-formed values according to the no-naked-pointers rules.=C2=A0 M= aybe you > > could use it to rule out this potential problem. > > > > Hope this helps, > > > > - Xavier Leroy > > > > > > > > Chevets, > > Christophe > > -- > > Envoy=C3=A9 de mon appareil Android avec Courriel K-9 Mail. Veuille= z excuser ma > > bri=C3=A8vet=C3=A9. > > --gdyWi0wqTJoxdiIJ Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQEzBAABCgAdFiEEJ369adg37nCCF0BCVXIaPfvmsfAFAl/hDaAACgkQVXIaPfvm sfAtzAf/R1jDc6sAASaTKLMj1BJdH/tk2m5dBUCBMkb8LkaFRjVipHAtK9fXFfUD SH0OQ7grrl0wdl2ifLBUZKxB3YLHw5c6l16X3a6Hcty6XOmra4JMS36wvGON6TIP CmSgkjgXipHb7kEyIPzE5tpolzln5uZYY0p7N7t4KwUE1Y45ytAONSd0Ie8o7DhU TvJ6SFpBMh7+zVy9k5hpIO5035scFbAiW7XpCaIAnIcudLGdcKbAwlHPIvI+M4Dx EBij8+pbPMTHyJSK2B60dnLlbUxqtESchzkRJ2LPQ36ZNIPIS1jbCuyrjd1EF+m5 W06vHMg9J8x3uijnOlX/Y+qq6BBSNA== =p31l -----END PGP SIGNATURE----- --gdyWi0wqTJoxdiIJ--