Blocking for too long in SO_LINGER...

kuznet en ms2.inr.ac.ru kuznet en ms2.inr.ac.ru
Vie Ene 28 12:26:33 CST 2000


Hello!

> I did a strace on the process, and found that it was blocking on the
> close() of a socket with SO_LINGER set.  I'm not sure if strace is
> reporting this properly, but I think that the timeout being set is 8
> seconds (which seems like an awfully bad choice by real if so).

No, 8 is option length. This old strace does not show SO_LINGER option.


> Anyways, I've fouind it actually blocking for _much_ longer than 8
> seconds -- in fact, in once case, I

It means that it set linger to longer time.


> Any idea what is happening here?  Any kind of quick-fix I can do here:
> (I have a high-proofile event tomorrow, and naturally, I don't have the
> source to the silly application).. 

What is this pnserver? I suspect it sets linger to 0, which is illegal
from all the viewpoints. From viewpoint of 2.2 it is infinite linger,
from viewpoint of BSD and 2.3 it is immediate socket destruction.

It is interesting compatibility question, try to get newer strace,
probably it is better. Well, or check this with gdb. Or get my strace
from ftp.inr.ac.ru/ip-routing.

>				 Maybe I can quickly get the kernel
> to ignore SO_LINGER either entirely (and I guess I'll find out what
> breaks), or for just particular processes.

Nothing will break. Programs using SO_LINGER correctly just do not exist
in the nature. It is fully dead option.

Alexey Kuznetsov

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo en vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/



Más información sobre la lista de distribución Ayuda