Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / LIST_ENTRY ошибка 0x0000139 / 3 сообщений из 3, страница 1 из 1
12.08.2015, 00:32
    #39027504
зубок александр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
LIST_ENTRY ошибка 0x0000139
Код не мой но другого выхода нет - с ним и работаю. Это драйвер HF под вин 8.1.

Сам код - адаптированный сэмпл от msdn.

На данный момент драйвер валится на разрыве соединения.

Пакет IRQL ставится в очередь

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
void
InsertConnectionEntryLocked(
    PEBTH_SERVER_CONTEXT devCtx,
    PLIST_ENTRY ple    
    )
{
	TRACEFUNC();

    WdfSpinLockAcquire(devCtx->ConnectionListLock);

    InsertTailList(&devCtx->ConnectionList, ple);

    WdfSpinLockRelease(devCtx->ConnectionListLock);    
}



Из очереди извлекается

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
void
RemoveConnectionEntryLocked(
    PEBTH_SERVER_CONTEXT devCtx,
    PLIST_ENTRY ple    
    )
{
	TRACEFUNC();

    WdfSpinLockAcquire(devCtx->ConnectionListLock);

    // ошибка 0х0000139. Детальный код 3 - в мсдн говорится что 
    // A LIST_ENTRY was corrupted (for example, a double remove). For more information, see the following Cause section.
    RemoveEntryList(ple);

    WdfSpinLockRelease(devCtx->ConnectionListLock);    
}



Сам вызов функции

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
if (connection->ConnectionState == ConnectionStateDisconnected)
			{
				RemoveConnectionEntryLocked(
					(PEBTH_SERVER_CONTEXT)connection->DevCtxHdr,
					&connection->ConnectionListEntry
					);

				connectionObject = WdfObjectContextGetObject(connection);

				MyTraceFunc(0, TRACE_LEVEL_VERBOSE, DBG_CONNECT, "WdfObjectDelete:0x%x\n", connectionObject);
				WdfObjectDelete(connectionObject);
			}



Каковы сопсобы лечения
...
Рейтинг: 0 / 0
12.08.2015, 09:35
    #39027581
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
LIST_ENTRY ошибка 0x0000139
зубок александр,

Я бы поставил __try{}__catch{} и игнорировал эту ошибку.
Раз этого узла в списке нет, значит, его и не нужно было удалять.

Если же список действительно was corrupted , тогда конечно сложнее, надо искать, где он ломается,
а не где обнаруживается, что он сломан.
...
Рейтинг: 0 / 0
12.08.2015, 12:49
    #39027775
зубок александр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
LIST_ENTRY ошибка 0x0000139
а пример проверки можно?

Код: plaintext
1.
2.
3.
4.
typedef struct _LIST_ENTRY {
   struct _LIST_ENTRY *Flink;
   struct _LIST_ENTRY *Blink;
} LIST_ENTRY



Точно знаю что структура не пустая - как именно искать разрушение. Если убираю эту функцию лучше не становится - ругань идет при следующем соединении по блютус
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / LIST_ENTRY ошибка 0x0000139 / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]