From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Mike Gran Newsgroups: gmane.lisp.guile.bugs Subject: bug#20907: [PATCH] Manual bug for scm_gc_protect_object Date: Wed, 2 Sep 2015 15:36:13 +0000 (UTC) Message-ID: <1975455902.407587.1441208174259.JavaMail.yahoo@mail.yahoo.com> References: <87a8t5c9bf.fsf@gnu.org> Reply-To: Mike Gran NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_407586_649051924.1441208174259" X-Trace: ger.gmane.org 1441208257 26042 80.91.229.3 (2 Sep 2015 15:37:37 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Wed, 2 Sep 2015 15:37:37 +0000 (UTC) Cc: "20907@debbugs.gnu.org" <20907@debbugs.gnu.org> To: Ludovic =?UTF-8?Q?Court=C3=A8s?= , Mark H Weaver Original-X-From: bug-guile-bounces+guile-bugs=m.gmane.org@gnu.org Wed Sep 02 17:37:18 2015 Return-path: Envelope-to: guile-bugs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1ZXA68-0002Ne-6s for guile-bugs@m.gmane.org; Wed, 02 Sep 2015 17:37:16 +0200 Original-Received: from localhost ([::1]:38798 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZXA68-0006fr-C4 for guile-bugs@m.gmane.org; Wed, 02 Sep 2015 11:37:16 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:38354) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZXA5y-0006Wi-94 for bug-guile@gnu.org; Wed, 02 Sep 2015 11:37:11 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZXA5u-0007XH-W2 for bug-guile@gnu.org; Wed, 02 Sep 2015 11:37:06 -0400 Original-Received: from debbugs.gnu.org ([208.118.235.43]:54412) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZXA5u-0007WX-TV for bug-guile@gnu.org; Wed, 02 Sep 2015 11:37:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.80) (envelope-from ) id 1ZXA5u-0004EF-JC for bug-guile@gnu.org; Wed, 02 Sep 2015 11:37:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Mike Gran Original-Sender: "Debbugs-submit" Resent-CC: bug-guile@gnu.org Resent-Date: Wed, 02 Sep 2015 15:37:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 20907 X-GNU-PR-Package: guile X-GNU-PR-Keywords: patch Original-Received: via spool by 20907-submit@debbugs.gnu.org id=B20907.144120817916205 (code B ref 20907); Wed, 02 Sep 2015 15:37:02 +0000 Original-Received: (at 20907) by debbugs.gnu.org; 2 Sep 2015 15:36:19 +0000 Original-Received: from localhost ([127.0.0.1]:46622 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1ZXA5C-0004DI-8f for submit@debbugs.gnu.org; Wed, 02 Sep 2015 11:36:18 -0400 Original-Received: from nm15-vm3.bullet.mail.ne1.yahoo.com ([98.138.91.145]:37859) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1ZXA5A-0004D9-0o for 20907@debbugs.gnu.org; Wed, 02 Sep 2015 11:36:16 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1441210131; bh=AGgTgIesyBnY3IETSyWTfcGp7ouW0e6JUvfoylHAtSs=; h=Date:From:Reply-To:To:Cc:In-Reply-To:References:Subject:From:Subject; b=a5y7V+s4TLidnp7JDB2HXsJxkJoR/4fweu0UOZnh1qq/f79Qg95PWQQIG62EEoZOOeaC7RMJsCMZsq9sj4qmsvNhshDQV8lsFctMiDvBiDqZUyx0BwO4CthA1jXMChdy1DiImgIZ5Qmz3cppZW7GlKnvQrN3lLJA8a3ww0/PSrUV/oxvcJ6pBLwn810lBFX9yK00MQ/8QAgly6KtCIkpTwUj/00eigaB4APTP9LO1Nrb9/GPkTymYAuhT1+H8ZaQ4bMJ/+IR2JpJm9xU4XMRNwhJHeWJLUIlk3XIWefMBwSzo8CT2V5cyv85K1yaaTfkU5NJ48RKhQC101aMHx1tFw== Original-Received: from [98.138.101.130] by nm15.bullet.mail.ne1.yahoo.com with NNFMP; 02 Sep 2015 16:08:51 -0000 Original-Received: from [98.138.89.249] by tm18.bullet.mail.ne1.yahoo.com with NNFMP; 02 Sep 2015 15:36:15 -0000 Original-Received: from [127.0.0.1] by omp1041.mail.ne1.yahoo.com with NNFMP; 02 Sep 2015 15:36:15 -0000 X-Yahoo-Newman-Property: ymail-3 X-Yahoo-Newman-Id: 217962.74224.bm@omp1041.mail.ne1.yahoo.com X-YMail-OSG: REX0Us8VM1lbI2b2irQnsgeRwbvgcs1MlomhZb2xMYl3Ab47zPn4cc5vkd0hOgv jAHHRv7UcewSKkq19xVXMafNY53rO0M3skLzSpJM0RtJBMksUd8PQZD6zMI9wXUlh2wP0oJvt3_Z 7kMHHx2jSOqOzhfLzzAK4w5uL1NT5ifJGBfhJovbNflSOnCYCb5pTv6PBbhqrppMZc96rIJ36bvg KhZN2OsSPiKFBAMiR.oBGEgfji9ZNNkFxOzbt85o_E7maBV0jZW4ROTuQjW_KZVpkaNVz7vQdHxH L9HJCzZrsHwltkxXJD3wSJGQNrCcrC3ajuWUzlumgxSpYZrA73MvAvT27NiOV5rXrf3ROOZtffea 12MS.61xAhWKHJq9lPdhpBQ7TpESfDOQGkZB6KLEfgW88vQvLxcS_wHhAf1I4Nki.iCnlUJCmnRe J_eeAVFvKUuSRa.eBLWcLb7StLfihE1xUE3Wt3WlG1Sao4meR4cGo4rSNOFy7D2K1weEyZLd5Iuy DdkOgmOYfJA-- Original-Received: by 98.138.105.245; Wed, 02 Sep 2015 15:36:14 +0000 In-Reply-To: <87a8t5c9bf.fsf@gnu.org> X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 208.118.235.43 X-BeenThere: bug-guile@gnu.org List-Id: "Bug reports for GUILE, GNU's Ubiquitous Extension Language" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-guile-bounces+guile-bugs=m.gmane.org@gnu.org Original-Sender: bug-guile-bounces+guile-bugs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.lisp.guile.bugs:7839 Archived-At: ------=_Part_407586_649051924.1441208174259 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable > On Wednesday, September 2, 2015 5:09 AM, Ludovic Court=C3=A8s wrote: > I think the manual is correct: global C variables were *not* scanned by > the GC. As an example, see =E2=80=98scm_sys_protects=E2=80=99 in 1.8: It= =E2=80=99s a global > array that was explicitly scanned by the GC, because that=E2=80=99s basic= ally > the only mechanism to add new GC root: >=20 > j =3D SCM_NUM_PROTECTS; > while (j--) > scm_gc_mark (scm_sys_protects[j]); >=20 > The 1.8 manual reads: >=20 > Other references to 'SCM' objects, such as global variables of type > 'SCM' or other random data structures in the heap that contain fields= =20 > of > type 'SCM', can be made visible to the garbage collector by calling=20 > the > functions 'scm_gc_protect' or 'scm_permanent_object'. You=20 > normally use > these funtions for long lived objects such as a hash table that is > stored in a global variable. For temporary references in local > variables or function arguments, using these functions would be too > expensive. For what it is worth, the effect that I was seeing that made me question the documentation can be demonstrated by the attached program, where two 100MB Guile strings are stored in a C globals: one protected and one not.=20 In 1.8, a GC operation reduces memory from 200MB to 100MB, which I assume is freeing the memory from the unprotected string. In 2.0, the heap size always stays at 200MB. The output of the program for Guile 1.8.8 and Guile 2.0.9 is attached. Thanks, Mike ------=_Part_407586_649051924.1441208174259 Content-Type: text/x-csrc Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=main.c Content-ID: I2luY2x1ZGUgPGxpYmd1aWxlLmg+CgoKI2RlZmluZSBPTkVfSFVORFJFRF9NSUxMSU9OICgxMDAq MTAwMCoxMDAwKQoKU0NNIHByb3RlY3RlZF9zdHJpbmc7ClNDTSB1bnByb3RlY3RlZF9zdHJpbmc7 Cgp2b2lkIGlubmVyX21haW4gKHZvaWQgKmRhdGEsIGludCBhcmdjLCBjaGFyICoqYXJndikKewog IHByb3RlY3RlZF9zdHJpbmcgPSBzY21fY19tYWtlX3N0cmluZyhPTkVfSFVORFJFRF9NSUxMSU9O LCBTQ01fTUFLRV9DSEFSKCcxJykpOwogIHNjbV9nY19wcm90ZWN0X29iamVjdCAocHJvdGVjdGVk X3N0cmluZyk7CgogIHVucHJvdGVjdGVkX3N0cmluZyA9IHNjbV9jX21ha2Vfc3RyaW5nKE9ORV9I VU5EUkVEX01JTExJT04sIFNDTV9NQUtFX0NIQVIoJzInKSk7CgogIHNjbV9kaXNwbGF5KHNjbV9j X2V2YWxfc3RyaW5nKCIoZ2Mtc3RhdHMpIiksIHNjbV9jdXJyZW50X291dHB1dF9wb3J0KCkpOwog IHNjbV9uZXdsaW5lKHNjbV9jdXJyZW50X291dHB1dF9wb3J0KCkpOwoKICBzY21fZ2MoKTsKCiAg c2NtX2Rpc3BsYXkoc2NtX2NfZXZhbF9zdHJpbmcoIihnYy1zdGF0cykiKSwgc2NtX2N1cnJlbnRf b3V0cHV0X3BvcnQoKSk7CiAgc2NtX25ld2xpbmUoc2NtX2N1cnJlbnRfb3V0cHV0X3BvcnQoKSk7 Cn0KCmludCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCnsKICBzY21fYm9vdF9ndWlsZSAo YXJnYywgYXJndiwgaW5uZXJfbWFpbiwgTlVMTCk7CiAgcmV0dXJuIDA7Cn0K ------=_Part_407586_649051924.1441208174259 Content-Type: text/plain Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=out18.txt Content-ID: <885b8c6d-33cf-6c43-0f8a-7668d52142b8@yahoo.com> KChnYy10aW1lLXRha2VuIC4gMCkgKGNlbGxzLWFsbG9jYXRlZCAuIDYxNjExKSAodG90YWwtY2Vs bHMtYWxsb2NhdGVkIC4gNjE3MjIpIChjZWxsLWhlYXAtc2l6ZSAuIDgzMzgzKSAoYnl0ZXMtbWFs bG9jZWQgLiAyMDAwODE2MDgpIChnYy1tYWxsb2MtdGhyZXNob2xkIC4gMzY2ODE2MDg1KSAoZ2Mt dGltZXMgLiA0KSAoZ2MtbWFyay10aW1lLXRha2VuIC4gMCkgKGNlbGxzLW1hcmtlZCAuIDQxMDAx Ny4wKSAoY2VsbHMtc3dlcHQgLiA0NTg0OTAuMCkgKG1hbGxvYy15aWVsZCAuIDApIChjZWxsLXlp ZWxkIC4gMCkgKHByb3RlY3RlZC1vYmplY3RzIC4gMSkgKGNlbGwtaGVhcC1zZWdtZW50cyAoMTYy NDQ5NDA4IC4gMTYyNDg0MjI0KSAoMzA3NjUyNDAzMiAuIDMwNzY2OTQwMTYpICgzMDc2NzAwMTYw IC4gMzA3NjkwMDg2NCkgKDMwNzY5MDkwNTYgLiAzMDc3MTczMjQ4KSkpCigoZ2MtdGltZS10YWtl biAuIDApIChjZWxscy1hbGxvY2F0ZWQgLiA2MTY2MikgKHRvdGFsLWNlbGxzLWFsbG9jYXRlZCAu IDYxNzk3KSAoY2VsbC1oZWFwLXNpemUgLiA4MzM4MykgKGJ5dGVzLW1hbGxvY2VkIC4gMTAwMDgx ODc4KSAoZ2MtbWFsbG9jLXRocmVzaG9sZCAuIDM2NjgxNjA4NSkgKGdjLXRpbWVzIC4gNSkgKGdj LW1hcmstdGltZS10YWtlbiAuIDApIChjZWxscy1tYXJrZWQgLiA0OTMzNzguMCkgKGNlbGxzLXN3 ZXB0IC4gNTQxODc1LjApIChtYWxsb2MteWllbGQgLiAwKSAoY2VsbC15aWVsZCAuIDApIChwcm90 ZWN0ZWQtb2JqZWN0cyAuIDEpIChjZWxsLWhlYXAtc2VnbWVudHMgKDE2MjQ0OTQwOCAuIDE2MjQ4 NDIyNCkgKDMwNzY1MjQwMzIgLiAzMDc2Njk0MDE2KSAoMzA3NjcwMDE2MCAuIDMwNzY5MDA4NjQp ICgzMDc2OTA5MDU2IC4gMzA3NzE3MzI0OCkpKQo= ------=_Part_407586_649051924.1441208174259 Content-Type: text/plain Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=out20.txt Content-ID: <3e651ad0-c9a9-aae0-0c9d-742a41d0ee71@yahoo.com> KChnYy10aW1lLXRha2VuIC4gOTY3KSAoaGVhcC1zaXplIC4gMjE5MTI3ODA4KSAoaGVhcC1mcmVl LXNpemUgLiAxNjc4MTMxMikgKGhlYXAtdG90YWwtYWxsb2NhdGVkIC4gMjAyMzUyMzM2KSAoaGVh cC1hbGxvY2F0ZWQtc2luY2UtZ2MgLiAxNTYzNzYpIChwcm90ZWN0ZWQtb2JqZWN0cyAuIDQwKSAo Z2MtdGltZXMgLiA2KSkKKChnYy10aW1lLXRha2VuIC4gOTcxKSAoaGVhcC1zaXplIC4gMjE5MTI3 ODA4KSAoaGVhcC1mcmVlLXNpemUgLiAxNjgwOTk4NCkgKGhlYXAtdG90YWwtYWxsb2NhdGVkIC4g MjAyMzU0MTY4KSAoaGVhcC1hbGxvY2F0ZWQtc2luY2UtZ2MgLiAxMzg0KSAocHJvdGVjdGVkLW9i amVjdHMgLiA0MCkgKGdjLXRpbWVzIC4gNykpCg== ------=_Part_407586_649051924.1441208174259--