From unknown Sat Jun 14 00:08:36 2025 X-Loop: help-debbugs@gnu.org Subject: bug#19236: load-compiled procedure leaks memory Resent-From: Chris Vine Original-Sender: "Debbugs-submit" Resent-CC: bug-guile@gnu.org Resent-Date: Sun, 30 Nov 2014 23:31:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 19236 X-GNU-PR-Package: guile X-GNU-PR-Keywords: To: 19236@debbugs.gnu.org X-Debbugs-Original-To: bug-guile@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.14173902418532 (code B ref -1); Sun, 30 Nov 2014 23:31:02 +0000 Received: (at submit) by debbugs.gnu.org; 30 Nov 2014 23:30:41 +0000 Received: from localhost ([127.0.0.1]:50217 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XvDwu-0002DX-EY for submit@debbugs.gnu.org; Sun, 30 Nov 2014 18:30:40 -0500 Received: from eggs.gnu.org ([208.118.235.92]:49303) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XvDws-0002DM-Sy for submit@debbugs.gnu.org; Sun, 30 Nov 2014 18:30:39 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XvDwj-0005zt-14 for submit@debbugs.gnu.org; Sun, 30 Nov 2014 18:30:38 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50 autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([208.118.235.17]:50713) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XvDwi-0005zi-Tl for submit@debbugs.gnu.org; Sun, 30 Nov 2014 18:30:28 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50885) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XvDwb-00006M-7P for bug-guile@gnu.org; Sun, 30 Nov 2014 18:30:28 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XvDwR-0005j1-Ti for bug-guile@gnu.org; Sun, 30 Nov 2014 18:30:21 -0500 Received: from smtpout3.wanadoo.co.uk ([80.12.242.59]:32128 helo=smtpout.wanadoo.co.uk) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XvDwR-0005im-NG for bug-guile@gnu.org; Sun, 30 Nov 2014 18:30:11 -0500 Received: from laptop.homenet ([95.146.110.225]) by mwinf5d37 with ME id MzWA1p0084rpotr03zWAd0; Mon, 01 Dec 2014 00:30:11 +0100 X-ME-Helo: laptop.homenet X-ME-Date: Mon, 01 Dec 2014 00:30:11 +0100 X-ME-IP: 95.146.110.225 Received: from bother.homenet (localhost [127.0.0.1]) by laptop.homenet (Postfix) with ESMTP id 0AAFF8B70A for ; Sun, 30 Nov 2014 23:30:10 +0000 (GMT) Date: Sun, 30 Nov 2014 23:30:09 +0000 From: Chris Vine Message-ID: <20141130233009.0e596015@bother.homenet> X-Mailer: Claws Mail 3.11.1 (GTK+ 2.24.25; i686-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 208.118.235.17 X-Spam-Score: -5.0 (-----) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.0 (-----) The load-compiled procedure leaks memory in guile-2.0.11 as demonstrated by the attached test case. It should be used in conjunction with a file 'test-file.scm' which contains only a single #f expression. This test case should be invoked either with the "pload" or "load" option. If invoked with the pload option, it will invoke primitive-load, which accumulates no additional memory while executing, and will execute normally to the end of its iterations. If invoked with the load option, on my 32-bit machine it will steadily accumulate a memory leak before running out of memory on consuming approximately 300M memory, after about 65,000 iterations. The memory leak seems to arise in guile's load-compiled procedure. The question which might be asked is "Would any sane person ever want to invoke the load (or load-compiled) procedures more than a few times in a practical program?". The answer to this question is "Yes", if guile is being used as an extension framework for a C or C++ program, and it executes guile extensions as individual tasks. Test case: ----------------------------- snip ----------------------------- /* compile with 'gcc -O2 -Wall `pkg-config --cflags --libs guile-2.0` -o test-guile' */ #include #include #include int load; void* func (void* data) { switch (load) { case 0: scm_c_eval_string("(primitive-load \"test-file.scm\")"); break; default: scm_c_eval_string("(load \"./test-file.scm\")"); } return NULL; } int main (int argc, char *argv[]) { int count; if (argc != 2 || (strcmp (argv[1], "pload") && strcmp (argv[1], "load"))) { puts ("Usage: test-guile load | pload"); exit (1); } if (!strcmp (argv[1], "load")) { puts("Using load"); load = 1; } else puts("Using primitive-load"); for (count = 0; count < 256000; ++count) { scm_with_guile(func, NULL); if (!(count % 100)) { printf("%d ", count); fflush(stdout); } } puts(""); return 0; } From unknown Sat Jun 14 00:08:36 2025 X-Loop: help-debbugs@gnu.org Subject: bug#19236: load-compiled procedure leaks memory References: <20141130233009.0e596015@bother.homenet> In-Reply-To: <20141130233009.0e596015@bother.homenet> Resent-From: Taylan Kammer Original-Sender: "Debbugs-submit" Resent-CC: bug-guile@gnu.org Resent-Date: Mon, 17 May 2021 22:26:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 19236 X-GNU-PR-Package: guile X-GNU-PR-Keywords: To: 19236@debbugs.gnu.org Received: via spool by 19236-submit@debbugs.gnu.org id=B19236.162129035114019 (code B ref 19236); Mon, 17 May 2021 22:26:02 +0000 Received: (at 19236) by debbugs.gnu.org; 17 May 2021 22:25:51 +0000 Received: from localhost ([127.0.0.1]:53971 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lilgM-0003e3-Tu for submit@debbugs.gnu.org; Mon, 17 May 2021 18:25:51 -0400 Received: from mail-ej1-f47.google.com ([209.85.218.47]:38678) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lilgJ-0003do-Ul for 19236@debbugs.gnu.org; Mon, 17 May 2021 18:25:49 -0400 Received: by mail-ej1-f47.google.com with SMTP id b25so11493143eju.5 for <19236@debbugs.gnu.org>; Mon, 17 May 2021 15:25:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=to:from:subject:message-id:date:user-agent:mime-version :content-language:content-transfer-encoding; bh=KpXHF6viSJ3aViR9eQ24bY1ONK0BFeEVmy9cy5Zw3XI=; b=Scw941IL/gvE5pzjhWq4/GuUvmifc5kJmSROBPPXaNDerTTWgWVECPypxp4BhnPLu7 E88RB5xNVC9aLDnwMVU56ZX5ryQ8+91b/hJz4SzmaG4Bj8LKIn9VzzP0wGOTsmTTIYcd Ko0U+1luUHPLlHzNAe5TTFLhUDpFbolgcI1UvO1iSnyDBw1CC8ke0nsxFa8jtMPzWeuC DW4LGlTQbZ50vwEUdVclinj9AMl5gFe1T+VdH/w59Ni20vP09OLUyiohBJFCzhK8Qy3l +p8YYb+B1j+Wwz1H2A/BvF02cQjCciwdl5k89WUWmcifHhSO3FgPFoA1C1ViyNcAOV73 kbJw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:to:from:subject:message-id:date:user-agent :mime-version:content-language:content-transfer-encoding; bh=KpXHF6viSJ3aViR9eQ24bY1ONK0BFeEVmy9cy5Zw3XI=; b=oXgUGdvSkbUeHHuYmFWfsAncBN4A2ZtyP/ih7PVCwAQcHOLMSVLFDrcLM7T93Ykegp 1eC5Kxs/GdXtPkzm5XhWyfldZjs4PTTb/wMw29OoByl5GboDYUR0bDjGaImZ0eXsuQAK C/Q9Og5YxK8DrOZLlKj9n8EI8ER7zh9WETYOCtH35hXAquEqfgzVHyxx9Ux3UvDvOlKZ HHV/RqFdyDbyN4ZFkprON3qoEfpp++AAorQgDVfaIpTah9sMrVECkr4pe5qlWReaCxLW gQc3buD+VBhcB7ACIGc1Q8zc7UWie3bdOsGuPsaYEa6ouYV+PuCGKPS++rqPRCMARpm8 f5cw== X-Gm-Message-State: AOAM532zCePPODnocmRGnuRv8tXowa1uEGDRlaSXNN0ICKIdkE8+LiwG 12ewdrvNskFiJEcxzY0POE6bVSFy+Rcovw== X-Google-Smtp-Source: ABdhPJz50rkvWfxOgkCETGQGzeaYKvVpYWnqMgLgJp/vb3BaUzQt6PRFAnsxrrYB7ByyXCkHtEmZEw== X-Received: by 2002:a17:907:2071:: with SMTP id qp17mr2244225ejb.15.1621290342011; Mon, 17 May 2021 15:25:42 -0700 (PDT) Received: from [192.168.178.20] (b2b-109-90-125-150.unitymedia.biz. [109.90.125.150]) by smtp.gmail.com with ESMTPSA id n11sm9628626ejg.43.2021.05.17.15.25.41 for <19236@debbugs.gnu.org> (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 17 May 2021 15:25:41 -0700 (PDT) From: Taylan Kammer Message-ID: <19c79f87-1f1c-6b5c-7874-ec2c0ebc6dda@gmail.com> Date: Tue, 18 May 2021 00:25:40 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.10.1 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) I don't know if it still leaks but Guile's behavior on loading thousands of files seems to have regressed further. I get "Too many root sets" after only about 1900 iterations, after which it aborts. Primitive-load still works fine. -- Taylan