On 11.10.2011 14:17, Henrik Sperre Johansen wrote:
On 11.10.2011 01:00, John Toohey wrote:
Henrik,

Could you explain this in a little more detail for me? Are you saying
the socket timeout is really a semaphore problem?

Yes, in that Sockets block on Semaphores registered in the vm, which are then signalled from the external plugin. The number of objects for which this signalling is done does not grow automatically, see:
http://code.google.com/p/pharo/issues/detail?id=4505
for the discussion/rationale behind now raising an error when there's no free space anymore, instead of silently losing signals.

The methods (with comments) in image resulting from this issue, and interesting to read in this context is:
VirtualMachine >> #maxExternalSemaphores:
- you can change inProduction to true, and it will no longer crash, but write you a warning that you might be losing signals due to too little default space. ExternalSemaphoreTable >> #collectionBasedOn:withRoomFor: and #freedSlotsIn:ratherThanIncreaseSizeTo:
- comments should hopefully be useful

Cheers,
Henry

Reading it over, I see the temporary needToGrow in #freedSlotsIn: ... is misnamed.
It should be freedSlots.

Cheers,
Henry

Reply via email to