Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Сбой при чтении данных


Автор: EgorTheBlade 19.10.2010, 13:37
Добрый День. Возникла след.ситуация.
Клиент читает данные из сервера.Данные лежат в файле.
Запускаю цикл с клиента для чтении данных 130 раз.На 121 итерации сервер входит в deadlock и указывает на библиотеку read.c:
Код

 if ( !ReadFile( (HANDLE)_osfhnd(fh), buffer, cnt, (LPDWORD)&os_read,
                    NULL ) || os_read < 0 || (size_t)os_read > cnt)
        {
            /* ReadFile has reported an error. recognize two special cases.
             *
             *      1. map ERROR_ACCESS_DENIED to EBADF
             *
             *      2. just return 0 if ERROR_BROKEN_PIPE has occurred. it
             *         means the handle is a read-handle on a pipe for which
             *         all write-handles have been closed and all data has been
             *         read. */

            if ( (dosretval = GetLastError()) == ERROR_ACCESS_DENIED ) {
                /* wrong read/write mode should return EBADF, not EACCES */
                errno = EBADF;
                _doserrno = dosretval;
                retval = -1;
                goto error_return;

Кто-нибудь сталкивался с  чем то подобным?.
Заранее спасибо.

Автор: boostcoder 19.10.2010, 15:28
маловероятно чтоб проблема была в самой реализации. скорее всего, это ты доводишь либу до такого состояния  smile 
код показывай.

Автор: EgorTheBlade 19.10.2010, 15:44
Проблема решена.Deadlock создавал Logger.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)