unofficial mirror of guile-devel@gnu.org 
 help / color / mirror / Atom feed
* What's the point to keep mmaped objectfile opened?
       [not found] <20111213070512.GA7157@yeeloong.happyleptic.org>
@ 2011-12-13 10:15 ` rixed
  2011-12-13 12:42   ` Andy Wingo
  0 siblings, 1 reply; 4+ messages in thread
From: rixed @ 2011-12-13 10:15 UTC (permalink / raw)
  To: guile-devel

[-- Attachment #1: Type: text/plain, Size: 634 bytes --]

I'm a little worried by the amount of file descriptors left opened
after the objcode is mmaped.
I saw this "note to self" from objcodes.c:

/* FIXME: we leak ourselves and the file descriptor. but then again so does                      
   dlopen(). */

So apparently the author was well aware of the problem but decided to
ignore it, despite the fd being used nowhere as far as I can see
(also, I don't understand the remark about dlopen leaking a fd).

Anyway, the attached patch (which closes the fd and stores -1 inplace
of it in the cell) seams to works and seams to fix the issue (ie. no more
pending opened fd for .go files)


[-- Attachment #2: guile-close-fd-on-mmap.patch --]
[-- Type: text/x-diff, Size: 719 bytes --]

diff --git a/libguile/objcodes.c b/libguile/objcodes.c
index 536094f..9fa8b00 100644
--- a/libguile/objcodes.c
+++ b/libguile/objcodes.c
@@ -203,12 +203,11 @@ make_objcode_from_file (int fd)
                                     scm_from_size_t (total_len)));
       }
 
-    /* FIXME: we leak ourselves and the file descriptor. but then again so does
-       dlopen(). */
+    (void) close (fd);
     return scm_permanent_object
       (scm_double_cell (SCM_MAKE_OBJCODE_TAG (SCM_OBJCODE_TYPE_MMAP, 0),
                         (scm_t_bits)(addr + strlen (SCM_OBJCODE_COOKIE)),
-                        SCM_UNPACK (scm_from_int (fd)), 0));
+                        SCM_UNPACK (scm_from_int (-1)), 0));
   }
 #else
   {

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: What's the point to keep mmaped objectfile opened?
  2011-12-13 10:15 ` What's the point to keep mmaped objectfile opened? rixed
@ 2011-12-13 12:42   ` Andy Wingo
  2011-12-13 13:43     ` rixed
  0 siblings, 1 reply; 4+ messages in thread
From: Andy Wingo @ 2011-12-13 12:42 UTC (permalink / raw)
  To: rixed; +Cc: guile-devel

On Tue 13 Dec 2011 11:15, rixed@happyleptic.org writes:

> I'm a little worried by the amount of file descriptors left opened
> after the objcode is mmaped.
> I saw this "note to self" from objcodes.c:
>
> /* FIXME: we leak ourselves and the file descriptor. but then again so does                      
>    dlopen(). */
>
> So apparently the author was well aware of the problem but decided to
> ignore it, despite the fd being used nowhere as far as I can see
> (also, I don't understand the remark about dlopen leaking a fd).
>
> Anyway, the attached patch (which closes the fd and stores -1 inplace
> of it in the cell) seams to works and seams to fix the issue (ie. no more
> pending opened fd for .go files)

If you close the fd, isn't the memory unmapped?  Isn't that a bad thing?

Maybe I was just under a big misconception here :)

Andy
-- 
http://wingolog.org/



^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: What's the point to keep mmaped objectfile opened?
  2011-12-13 12:42   ` Andy Wingo
@ 2011-12-13 13:43     ` rixed
  2012-01-07  1:11       ` Andy Wingo
  0 siblings, 1 reply; 4+ messages in thread
From: rixed @ 2011-12-13 13:43 UTC (permalink / raw)
  To: guile-devel

-[ Tue, Dec 13, 2011 at 01:42:35PM +0100, Andy Wingo ]----
> If you close the fd, isn't the memory unmapped?  Isn't that a bad thing?
> 
> Maybe I was just under a big misconception here :)

That's a common misconception. The mapping of VM space to disk storage
is unrelated to the file descriptor set (or any program would have at
least a file descriptor opened for itself, since any program is mapped
into memory).
Compare for instance cat /proc/1/maps with ls -l /proc/1/fd.
As I said, the attached patch, which do closes the fd, actually works
(ie make check and my personal program works). So the memory is clearly
not unmapped :-)




^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: What's the point to keep mmaped objectfile opened?
  2011-12-13 13:43     ` rixed
@ 2012-01-07  1:11       ` Andy Wingo
  0 siblings, 0 replies; 4+ messages in thread
From: Andy Wingo @ 2012-01-07  1:11 UTC (permalink / raw)
  To: rixed; +Cc: guile-devel

On Tue 13 Dec 2011 14:43, rixed@happyleptic.org writes:

> -[ Tue, Dec 13, 2011 at 01:42:35PM +0100, Andy Wingo ]----
>> If you close the fd, isn't the memory unmapped?  Isn't that a bad thing?
>> 
>> Maybe I was just under a big misconception here :)
>
> That's a common misconception. The mapping of VM space to disk storage
> is unrelated to the file descriptor set (or any program would have at
> least a file descriptor opened for itself, since any program is mapped
> into memory).
> Compare for instance cat /proc/1/maps with ls -l /proc/1/fd.
> As I said, the attached patch, which do closes the fd, actually works
> (ie make check and my personal program works). So the memory is clearly
> not unmapped :-)

I applied your patch.  Thanks very much for the patch, and for the
education :-)

Cheers,

Andy
-- 
http://wingolog.org/



^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2012-01-07  1:11 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <20111213070512.GA7157@yeeloong.happyleptic.org>
2011-12-13 10:15 ` What's the point to keep mmaped objectfile opened? rixed
2011-12-13 12:42   ` Andy Wingo
2011-12-13 13:43     ` rixed
2012-01-07  1:11       ` Andy Wingo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).