One more attempt: stuck processes

Sebastian Hagedorn Hagedorn at uni-koeln.de
Fri Nov 16 05:27:09 EST 2007


--On 15. November 2007 19:25:19 +0100 Simon Matter <simon.matter at invoca.ch> 
wrote:

>> It's blinking red, which normally means a broken link. I'm not sure how
>
> The file 0 is a symbolic symlink which doesn't really point to a file,
> that's why the shell shows it blinking. Everything okay here.

Thanks. That's what I thought, but I wasn't sure.

>> reliable that is in this case. Anyway, lsof reports:
>>
>> pop3d   25038 cyrus    0u  IPv4  -64802663                 TCP
>> cyrus.rrz.uni-koeln.de:pop3s->p50865F5D.dip.t-dialin.net:1064
>> (ESTABLISHED)
>>
>> It *thinks* the connections is still open. So does netstat:
>>
>> # LANG=C netstat -a|grep p50865F5D
>> tcp        0      0 cyrus.rrz.uni-koeln.d:pop3s
>> p50865F5D.dip.t-dialin:1064
>> ESTABLISHED
>>
>> But obviously that connection is dead. I don't know what conclusions to
>> draw from that ...
>
> Just two ideas come to mind:
>
> 1) Since it only happens on dialup connections, could it be that the
> dialin router at the providers end sends TCP/RST when a client hangs up
> and those packets are filtered somewhere, maybe on your firewall?

OK, let's run with that one.

a) We don't really have a firewall, we only use ACLs on the Cisco routers. 
You can't even filter TCP/RST there.

b) Even *if* a TCP/RST had been dropped, lost or whatever, the server 
*still* should timeout eventually!

> 2) Could it be that SO_LINGER should be used as socket option in
> service_create() in master/master.c.

I didn't remember that option, so I just read up on it. It seems as though 
SO_LINGER is very dependent on implementation.  If I get your intention 
correctly SO_LINGER would have to be set with l_onoff set to non-zero and 
l_linger to zero, right? So close() would return immediately? That might 
make sense if the stack trace showed a call to close(). But if I understand 
the code correctly, close() isn't called at all. The socket is closed as a 
result of a call to exit(). And that defeats all use of SO_LINGER:

"When the socket is closed as part of exit(2), it always lingers in the 
background."

> If it's complete nonsense, ignore it.

I wouldn't know :-)
-- 
     .:.Sebastian Hagedorn - RZKR-R1 (Gebäude 52), Zimmer 18.:.
Zentrum für angewandte Informatik - Universitätsweiter Service RRZK
.:.Universität zu Köln / Cologne University - ✆ +49-221-478-5587.:.
                   .:.:.:.Skype: shagedorn.:.:.:.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 186 bytes
Desc: not available
Url : http://lists.andrew.cmu.edu/pipermail/info-cyrus/attachments/20071116/43f92acb/attachment.bin 


More information about the Info-cyrus mailing list