On Wed, Apr 29, 2009 at 08:40:37PM -0700, John M McIntosh wrote:
> 
> In this problem area, if we consider the socket creation fails because  
> the number of sockets allocated has reached the limit (aka unix limit)  
> not seen in windows.
> then this is because either (a) we are actualy holding onto thousands  
> of sockets on purpose?
> Or we have 1, and thousands of zombies that have been tenured to  
> OldSpace but not yet GCed, and Unix is unhappy with us.

I don't know if this is available on OS X, but on some unices (Linux
for sure), a good way to check this out is by looking at the open
file descriptors listed in the /proc file system. So for example if
you have Squeak running in a process with pid 1234, you can see the
open file descriptors with "$ ls -l /proc/1234/fd/*".

> Now when the socket create fails that causes well another pointless  
> attempt at creation (why?) but also a full GC.
> The full GC will of course signal to the 'WeakArray finalization  
> process' for it to gently destroy sockets.

And of course relying on finalization to close file/socket handles
is a sure-fire way to get into trouble. So if you find lots of open
file descriptors in /proc/1234/fd/* that do not correspond to
anything being used in the image, then yes you probably do have
this kind of issue. On the other hand, if you can see that the
number of open file descriptors is well below 1024 (or whatever
the limit is on your platform) then the problem lies elsewhere.

Dave
 

_______________________________________________
Pharo-project mailing list
[email protected]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project

Reply via email to