|
|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Ilya Anfimov 2:5020/400 12 Mar 2001 21:36:02 To : Vladimir Butenko Subject : Re: Microsoft предлагает запретить Linux!!! -------------------------------------------------------------------------------- On Fri, 9 Mar 2001 13:20:36 +0000 (UTC), Vladimir Butenko <butenko@stalker.com> wrote: > >A.N.Kuznetsov <kuznet@ms2.inr.ac.ru> wrote in message >news:9863pv$c2l@minus.inr.ac.ru... >> Vladimir Butenko (butenko@stalker.com) wrote: >> >> : Другая сторона давно спать ушла. Каким-то образом. А эта линуха, видать, Прошу прощения что вмешиваюсь, но она точно спать ушла? т.е. клиент так и сказал -- мол, машина та (дальняя) перезагрузилась или еще что-то такое? >> : не дождавшись подтверждения - то ли продолжает в пустоту ретраи слать, >> : либо просто сидит себе тихо. >> >> Да не может она сидеть больше TCP timeoutа в таком случае (<=~15min) >> Если сидит, то это ужасный bug, который никто и никогда до сих пор >> не докладывал. > >И что, что не докладывал? Хорошо, гениталии за то, что он именно на >send встает - не положу. А вот за то, что происходит одно из трех - положу. >а) зависает на send - причем не на 15 минут - на сутки, на недели. >б) зависает на read. А это уже тоже обсуждалось. То есть - сидим себе, >проверяем сокет на select (или на poll, если он есть на этой платформе). >Как появилось чегой-то - вылетаем из селекта, и давай себе read. А народ >говорит - а у его (ядра) могут кернельные буфера переполнится, и он >пакет какой возьми и выкини из них. Программа суется на read() - а пакета >уже и нету, вот и зависает. Hекая персона (не будем тыкать пальцем) >сказала мне, что это - бред и так быть не может. По крайней мере, в Линухе >не может. >в) зависает в select. Кстати, в догонку, обычно точное название syscall'а смотрится по ps -o pid,wchan. Или с нитями и это не работает? > >То есть - виснет в одном из этих: > >Это у нас Write (лишнее почикано) > >STErrorCode STWriteToSocket(STSocket theSocket,const void* pData,size_t >lData,int timeoutInSeconds) { > int result = 0; > // we do not do EINTRCHECK here, since it looks like we will have to >process it differently: some part of data could be already trasferred, etc > while(lData != 0) { > result = send(theSocket, (char*)pData, lData, 0); Может я чего-то не понимаю, но почему бы этой строчке не поспать десяток дней? соединение живое, другая система брать ничего не хочет -- ну и спим себе с миром. > if(result < 0) return(SocketErrorCode); > if(result == 0) return(FlowControlError); // locking does not work?! > pData = (const char*)pData + result; lData -= result; > } > return(NIL); >} [skipped] --- ifmail v.2.15dev5 * Origin: Demos online service (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор Архивное /ru.linux/6120b1874d47.html, оценка из 5, голосов 10
|