メッセージ。 -
#
実験してみたのですが、
(begin
(use gauche.net)
(let1 ssocket (make-server-socket 'inet 8082)
(let loop ((csocket (socket-accept ssocket)))
(socket-close csocket)
(loop (socket-accept ssocket)))))
ではメモリ使用量が増えず、
(begin
(use gauche.net)
(let1 ssocket (make-server-socket 'inet 8082)
(let loop ((csocket (socket-accept ssocket)))
(socket-output-port csocket)
(socket-close csocket)
(loop (socket-accept ssocket)))))
ではメモリ使用量が増えました。
その場しのぎですが、手元の環境では以下のパッチが効きました。
--- ext/net/net.c.orig 2005-10-13 17:14:13.000000000 +0900
+++ ext/net/net.c 2006-03-28 17:33:57.000000000 +0900
@@ -135,6 +135,8 @@
closeSocket(s->fd);
s->fd = INVALID_SOCKET;
s->status = SCM_SOCKET_STATUS_CLOSED;
+ s->inPort = NULL;
+ s->outPort = NULL;
return SCM_TRUE;
}
(begin
(use gauche.net)
(let1 ssocket (make-server-socket 'inet 8082)
(let loop ((csocket (socket-accept ssocket)))
(socket-close csocket)
(loop (socket-accept ssocket)))))
ではメモリ使用量が増えず、
(begin
(use gauche.net)
(let1 ssocket (make-server-socket 'inet 8082)
(let loop ((csocket (socket-accept ssocket)))
(socket-output-port csocket)
(socket-close csocket)
(loop (socket-accept ssocket)))))
ではメモリ使用量が増えました。
その場しのぎですが、手元の環境では以下のパッチが効きました。
--- ext/net/net.c.orig 2005-10-13 17:14:13.000000000 +0900
+++ ext/net/net.c 2006-03-28 17:33:57.000000000 +0900
@@ -135,6 +135,8 @@
closeSocket(s->fd);
s->fd = INVALID_SOCKET;
s->status = SCM_SOCKET_STATUS_CLOSED;
+ s->inPort = NULL;
+ s->outPort = NULL;
return SCM_TRUE;
}
Comment
Trackback