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
