From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 29 21:09:05 2025 Received: (at submit) by debbugs.gnu.org; 30 Mar 2025 01:09:05 +0000 Received: from localhost ([127.0.0.1]:33575 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tyhAf-000734-Ec for submit@debbugs.gnu.org; Sat, 29 Mar 2025 21:09:05 -0400 Received: from lists.gnu.org ([2001:470:142::17]:57592) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1tyhAb-00072I-SG for submit@debbugs.gnu.org; Sat, 29 Mar 2025 21:09:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tyhAV-0004Jz-6M for bug-guile@gnu.org; Sat, 29 Mar 2025 21:08:55 -0400 Received: from mail.nborghese.com ([2001:19f0:5:48e0:5400:4ff:fe08:e8a8]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tyhAT-0001cl-O0 for bug-guile@gnu.org; Sat, 29 Mar 2025 21:08:54 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; s=062122; bh=F080qInu7LLwH bIixIhNe027feTfeXg2feKpbCU4Hvg=; h=subject:from:to:date; d=nborghese.com; b=PAXJoAxpV8V8KLUOAm+QBstks9bK1s6u50uyMS9HAiN+SMZXW2C 4t9SkDkGWzo4Gkjr13mawX66pcl6kMBy1n1ghI/dBfPJAxHAb6xQZ9OySpYacmxiUM54Pe ZNPtbBv1x9VvTBeZQi8hYc11HfIw3QhiN2Cf8Y9s9a3Hr33bvM= Received: by nborghese.com (OpenSMTPD) with ESMTPSA id 0f996cf2 (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO) for ; Sun, 30 Mar 2025 01:08:41 +0000 (UTC) Message-ID: Date: Sun, 30 Mar 2025 01:08:51 +0000 MIME-Version: 1.0 User-Agent: Icedove Daily Content-Language: en-US To: bug-guile@gnu.org From: nathan Subject: eval causes temporary modules to leak memory Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Received-SPF: pass client-ip=2001:19f0:5:48e0:5400:4ff:fe08:e8a8; envelope-from=nathan_mail@nborghese.com; helo=mail.nborghese.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: 0.9 (/) X-Debbugs-Envelope-To: submit 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: -0.1 (/) You can call make-module (from boot-9.scm) as much as you want to create empty modules. Memory won't leak. As soon as you call eval with that module, it seems it can't be garbage collected anymore. This bug also appears as part of the (@ (rnrs eval) environment) procedure because it uses both of those. Try it out: (format #t "kb: ~a\n" (floor (/ (assoc-ref (gc-stats) 'heap-size) 1024))) (let lp ((x 0)) (unless (eqv? x 50000) (let ((m (make-module))) (eval '1 m) ;; comment this line to remove memory leak 2) (lp (1+ x)))) (gc) (format #t "kb: ~a\n" (floor (/ (assoc-ref (gc-stats) 'heap-size) 1024)))