Socket being garbage collected too early
steve at holdenweb.com
Fri Dec 17 01:07:41 CET 2004
Scott Robinson wrote:
> I have been having trouble with the garbage collector and sockets.
> Unfortunately, google keeps telling me that the problem is the garbage
> collector ignoring dead (closed?) sockets instead of removing live
> ones. My problem is
> def do_stuff(sock):
> once do_stuff finishes, x.sock disappears, and I can only believe it
> is being garbage collected. I'd like to hear the standard means for
> avoiding this issue (gc appears to have only the interface to declare
> something garbage, not to declare something not garbage).
> Scott Robinson
Unfortunately, assuming it's being garbage collected might turn out to
be incorrect. What evidence do you have that the socket "disappears"? Do
you get a segmentation ault, or what?
If the socket simply fails to work that would be a different case
altogether, but it seems to me that we need a bit more evodence that the
anecdotal stuff you've provided so far.
Quite apart from anything else, by the way, the code you posted appears
to use a global sock_list. A reference b y that list would in any case
stop the socket from being garbage collected (quite apart from the fact
that the socket module itself will do so as long as the socket is open).
So, could we see an error message, or some other evidence of what is
going on. For example, after the call to do_stuff(), what do you see if you
for example. I think your initial hypothesis is insufficient.
Steve Holden http://www.holdenweb.com/
Python Web Programming http://pydish.holdenweb.com/
Holden Web LLC +1 703 861 4237 +1 800 494 3119
More information about the Python-list