Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2008.08.03;
Скачать: [xml.tar.bz2];

Вниз

Помогите, пожалуйста, с ошибкой 1816   Найти похожие ветки 

 
Тимохов   (2008-06-05 19:31) [0]

Здравствуйте.

СИТУАЦИЯ
У меня есть приложение, которые использует компоненты ICS для общения между собой по сети.

В одном из компьютерных классов обнаружилось устойчивое появление ошибки 1816 "Не достаточно квоты для завершения операции" (Not enough quota is available to process this command).

Ошибка возникает практически на любом из 40 компов. Т.е. не на одном, двух.

Судя по всему ошибка возникает в TThread.Create (я еще не проводил логирование, т.к. класс не мой).

После возникновения ошибки компьютер становится не пригодным для использования - даже ctrl+alt+del не нажмешь: сплошные ошибки, ничего не запускается, ничего не открывается. Только HardReset.

Параметры компьютеров:
1. WinXP home edition.
2. Сеть без домена, т.е. одноранговая.

ВОПРОС
Что делать - как вылавливать ошибку и почему она вообще может быть?

Спасибо заранее!

PS.
1. Наличие вирусов маловероятно - тестил последними версиями AVZ, RootkitRevealer,CureIT (т.е. DrWeb).
2. Моя программа хорошо протестирована в течении 3 месяцев в разных условиях. Только на WinXP Home Ed. не тестилась. Т.е. "тупые" ошибки маловероятны.
3. Моя программа покрыта обфускатором (ExeCryptor).


 
ага   (2008-06-05 19:36) [1]


> Тимохов   (05.06.08 19:31)  

Хм...
http://www.microsoft.com/technet/prodtechnol/windows2000serv/reskit/w2000Msgs/1495.mspx?mfr=true

and

http://www.google.ru/search?q=Not+enough+quota+is+available+to+process+this+command&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ru:official&client=firefox-a


 
Тимохов   (2008-06-05 19:53) [2]


> ага   (05.06.08 19:36) [1]

мне тоже в голову пришло, что нужно свап увеличить.
но компы там вполне нормальные (P4 2.4 Ghz 512 мег памяти).
out of memory был бы скорее, не эта ошибка.
я в итоге не попробовал. пойду пробовать.

как вообще понять, кто это квоты съел?


 
sniknik ©   (2008-06-05 20:01) [3]

> между собой по сети.
> 40 компов.
40 компов друг с другом? т.е. возможно что 39 будут пытаться открыть соединения на одном?
а на этом одном WinXP home edition., т.е. не серверная система, а рабочих станций насколько знаю есть ограничение на 10 входящих подключений...
10 < 39, может от этого? не хватает квот именно на открытие подключения.

если это, то это не лечится иначе чем кряком (не наши методы как говорит АП.), либо везде серверные операционки ставить, либо логику программы менять.


 
Тимохов   (2008-06-05 20:08) [4]


> sniknik ©   (05.06.08 20:01) [3]
> > между собой по сети.
> > 40 компов.
> 40 компов друг с другом? т.е. возможно что 39 будут пытаться
> открыть соединения на одном?


Я когда после проведения занятия начал искать ошибку, то я нашел проблему в куда меньше количестве машин: 1 сервер и 4 клиента.

И проблема то не в том, что сервер отлуп дает (по причине израсходывания кол-ва соединений с ним), а в том, что на клиенте не может создаться нить с указанным сообщением. Сейчас класс уже закрыт и я не смогу проверить совет АГИ, о том, что нужно увеличивать файл подкачки. Возможно это поможет.

Мне не нравится, что ошибка какая-то невнятная - я понимаю память кончилась, или дисковое простанство. А то какие-то квоты - кто их съел? Почему только на WinXP? Как вообще отлаживать это все?


 
Тимохов   (2008-06-05 20:22) [5]

Я так понял, что основное мнение в интернете по этому поводу такое: виновата как-то программа (вот, напиример, http://discussions.virtualdr.com/archive/index.php/t-129176.html). И советы увеличивать файл подкачки не помогают (я не проверял в своем случае, но уверен, что не поможет, т.к. компьютеры вполне нормальные).

А так как проблемы начались после установки моей программы - то она и виновата.

Тут в общем возникает главный вопрос - как искать вину моей программы? Смотреть на утекающие хендлы? Так их вроде нет - судя по ProcExplorer количество всяких хендлов стоит на одном уровне. Утечек памяти тоже вроде нет - FastMM блюдет.

Куда копать?


 
Anatoly Podgoretsky ©   (2008-06-05 21:35) [6]

> Тимохов  (05.06.2008 19:31:00)  [0]

Если исключить то что ты указал, то остаются настройки сети, может озабоченый администратор. Home имеет более сильные ограничения по использованию ресурсов, сообщение похоже на ограничения именно Home версии. Количество коннектов, ограничение стека, открытых портов и многое другое, хуже только Starter
Если у тебя есть возможность поставить в этой сети пару компьютеров с ПРО версией, то это очень бы помогло в тестирование. Но попробуй поговорить с тем кто настраивал и администрировал эти компьютер, там же часто работают люди, которые начитались популярных советов из Сети по оптимизации системы, по защите от кульхацкеров, это вторая причина.


 
Anatoly Podgoretsky ©   (2008-06-05 21:37) [7]

> sniknik  (05.06.2008 20:01:03)  [3]

У HOME только 5!, 10 это у ПРО


 
Anatoly Podgoretsky ©   (2008-06-05 21:38) [8]

> Тимохов  (05.06.2008 20:08:04)  [4]

Квоты - это установленые ограничения.


 
Eraser ©   (2008-06-05 21:42) [9]

> [7] Anatoly Podgoretsky ©   (05.06.08 21:37)


> У HOME только 5!, 10 это у ПРО

а разве эта квота распространяется и на TCP соединения?


 
Eraser ©   (2008-06-05 21:57) [10]

понял, речь о количестве устанавливаемых, а не установленных соединений.


 
Anatoly Podgoretsky ©   (2008-06-05 21:57) [11]

> Eraser  (05.06.2008 21:42:09)  [9]

Не распространяется, но там есть и ограничение на количество одновременных соединений и для TCP и оно еще строже, вроде только три одновременно на один ресурс.


 
Eraser ©   (2008-06-05 22:00) [12]

> [11] Anatoly Podgoretsky ©   (05.06.08 21:57)

сейчас вычитал, что 10 соединений, находящихся в стадии установки (sync_send наверно), далее будет происходить системная ошибка 4226 о которой создается запись в системном журнале.


 
Anatoly Podgoretsky ©   (2008-06-05 22:11) [13]

> Eraser  (05.06.2008 22:00:12)  [12]

Не вдаваясь в подробности, HOME имеет гораздо больше ограничений, Похоже Тимохов на них и попал, даже если это "оптимизация" со стороны администратора.


 
Тимохов   (2008-06-05 22:19) [14]

2АП

Поговорить с админом пока не могу - завтра пойду.

А сегодня я пришел к выводу, что это ограничение на хендлы объектов ядра.

В нормальном состоянии их у меня судя по ProcExplorer 100. В момент работы криптованного кода (я писал, что у меня есть покриптованные куски) кол-во хендлов поднимается до 150 (может больше, т.к. я не знаю чем посмотреть точно динамику изменения кол-ва потоков). И видимо на мой новый поток уже не хватает хендла.

Видимо Home Edition имеет среди прочих ограничение на кол-во хендлов объектов ядра.

Буду говорить с автором криптора. Может он подскажет что-то такое полезное.

ПО ХОДУ ВОПРОС - как посмотреть динамику изменения кол-ва хендлов, используемых процессом?


 
Яичница ©   (2008-06-05 22:29) [15]

http://support.microsoft.com/kb/888413   ???

SYMPTOMS
After you install Microsoft Windows XP Service Pack 2 (SP2) on a Windows XP-based computer, Windows XP stops responding and you receive a stop error message.

You may receive the following error codes when system resources are low: • Error code 1450 (ERROR_NO_SYSTEM_RESOURCES)

Note Error code 1450 corresponds to the following error message:
Insufficient system resources exist to complete the requested service.
• Error code 1816 (ERROR_NOT_ENOUGH_QUOTA)

Note Error code 1816 corresponds to the following error message:
Not enough quota is available to process this command.

CAUSE
This problem may occur after you install Windows XP SP2. A non-paged pool memory leak in MDL tag can occur when you run some programs.


 
Anatoly Podgoretsky ©   (2008-06-05 22:43) [16]

> Тимохов  (05.06.2008 22:19:14)  [14]

Он на все имеет ограничения, но 150 хендлов, если это в диспетчере процессов, очень мало, вряд ли дело в этом. А вот если на это, чем то другим наложены квоты, то тогда может. А компьютерных классах приходится бороться с кульхацкера, поэтому поговорить с админстратором обязательно надо.


 
Anatoly Podgoretsky ©   (2008-06-05 22:45) [17]

> Яичница  (05.06.2008 22:29:15)  [15]

Вот это уже интереснее и стоит восспользоваться предложеным решением.


 
Тимохов   (2008-06-05 22:50) [18]

Проверил. Не в потоках, видимо, дело.

И на Prof и на Home Edition создается по 2017 и 2011 потоков соответственно. И сваливается с ошибкой - "Недостаточно памяти для обработки команды".

Причем процесс занимает всего 13 мб памяти.

-----------

Анатолий, скажи, пожалуйста, где можно так "настроить" сеть? Куда нужно смотреть, в какой аплет панели управления или еще куда?


 
Тимохов   (2008-06-05 23:00) [19]


> Anatoly Podgoretsky ©   (05.06.08 22:45) [17]
> > Яичница  (05.06.2008 22:29:15)  [15]Вот это уже интереснее
> и стоит восспользоваться предложеным решением.

я видел уже эту статью днем.

симптомы то другие, чем у меня.
там после установки СП2.
в моем случае его никто не ставил.


 
Anatoly Podgoretsky ©   (2008-06-06 00:09) [20]

> Тимохов  (05.06.2008 22:50:18)  [18]

Стоп, это количество уже недопустимое, каждый поток имеет свой стек и как правило размером в мегабайт, а это уже 2 гб, число это тебе что то говорит.


 
Тимохов   (2008-06-06 00:15) [21]


> Anatoly Podgoretsky ©   (06.06.08 00:09) [20]
> > Тимохов  (05.06.2008 22:50:18)  [18]Стоп, это количество
> уже недопустимое, каждый поток имеет свой стек и как правило
> размером в мегабайт, а это уже 2 гб, число это тебе что
> то говорит.


а верно ведь :) не догадался...

я вот тут копаю Group Policy (gpedit.msc). Может там квотирование есть? Много там всего.


 
ага0   (2008-06-06 08:17) [22]

Удалено модератором


 
тимохов   (2008-06-07 19:19) [23]

ЭТО ОПЯТЬ Я
-------------

СИТАУЦИЯ

Я как сапер пытаюсь нашупать причинно-следственную связь - почему где-то работает ОК, где-то валится с ошибкой 1816 (квот не хватает). Сегодня еще была сеть, где валилось. Уже в WinXP Pro.

Т.е. причина в моей программе. Это уже точно понятно.

Я покопался в сети и выяснил, что вроде как этот мой криптор плохо себя ведет, если стоит Windows Defender. На двух "сбойных" сетях этот Windows Defender как раз стоит.

ВОПРОС

Где взять этот Windows Defender?

Он только с сайта производителя после проверки лицензионности будет качаться? Или можно где-то иначе взять? :)


 
sniknik ©   (2008-06-07 20:00) [24]

> Или можно где-то иначе взять? :)
"иначе" здесь нельзя. а найти можно, было бы желание.

> У HOME только 5!, 10 это у ПРО
еще хуже. не знал.


 
Тын-Дын ©   (2008-06-07 20:11) [25]

http://www.microsoft.com/downloads/details.aspx?FamilyId=435BFCE7-DA2B-4A6A-AFA4-F7F14E605A0D&displaylang=en&mg_id=10134

WGA enforcement - There are significant risks to running non-genuine Windows. Only genuine Windows customers can receive product downloads, Windows updates and special offers. Windows Defender will validate that your copy of Windows is genuine before installation. Furthermore, Windows Defender will only remove Severe threats for machines that are not genuine. Low, Medium and High threats will be detected, but not removed unless your copy of Windows is genuine. For more information, please visit The Windows Genuine Advantage.


 
ага0   (2008-06-08 14:13) [26]

Удалено модератором


 
Тын-Дын ©   (2008-06-08 15:11) [27]

Удалено модератором


 
Тын-Дын ©   (2008-06-08 15:11) [28]

Удалено модератором


 
ага0   (2008-06-08 15:35) [29]

Удалено модератором


 
Тын-Дын ©   (2008-06-08 15:38) [30]

Удалено модератором


 
ага0   (2008-06-08 15:46) [31]

Удалено модератором


 
ага0   (2008-06-08 15:56) [32]

Удалено модератором


 
тимохов   (2008-06-19 20:03) [33]

Кстати могу отчитаться. Проблему решил полностью.

1. Судя по всему дело было все же в сильном противодействии дебагу обфускатора, используемого мною. Я понизил режим. Ошибка 1816 более не вылазит. Видимо, здесь вина не обфускатора. Скорее всего у меня были покрыты очень большие куски кода.

2. Была еще проблема. Сетевой обмен у меня сделан поверх TCP махонькими пакетиками (байт по 50). Когда я это дело принимал от увольняющего сотрудника меня удивила малая скорость (5-8 в секунду всего). Но не придал этому значения, ибо у меня на работе все работает. А вот на сетях winXP (как Home Ed, так и Prof тоже) это стало выдавать ошибку сокетов 10055 - типа буфер переполнился (зачастую исправлялось только жеским резетом:) ).  Решилось все просто нужно было установить и для клиентского и серверного сокета опцию TCP_NODELAY (спасибо Розычу, что подсказал - он нереально крут). Теперь летает все: под 1000 в секунду в локалке.

var
  kOptVal: Integer;
begin
  kOptVal := -1; { true, 0=false }
  if 0 <> setsockopt(HSocket{хендл сокета},
     IPPROTO_TCP, TCP_NODELAY, @kOptVal, SizeOf(kOptVal))
  then
     raise Exception.create("setsockopt(IPPROTO_TCP, TCP_NODELAY)");
end;


Пишу про nodelay потому, что сам провозился достаточно долго и в итоге не смог найти решения сам (еще раз спасибо Розычу). Может кому-то моя инфа поможет.


 
VirEx ©   (2008-06-19 21:24) [34]

начал читать ветку, хотел посоветовать без обфускатора попробовать, дочитал - огорчился что не успел блеснуть умом :(


 
VirEx ©   (2008-06-19 21:27) [35]

начал читать ветку, хотел посоветовать без обфускатора попробовать, дочитал - огорчился что не успел блеснуть умом :(


 
Тимохов   (2008-06-19 23:39) [36]

как получилось не только в обфускаторе было дело.
просто нужно книги читать, а не на авось надеяться :)

(это я про себя)



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2008.08.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.55 MB
Время: 0.009 c
15-1213620496
Поросенок Винни-Пух
2008-06-16 16:48
2008.08.03
Виста и юзер интерфейс


15-1213366269
AEN
2008-06-13 18:11
2008.08.03
Ищу работу


2-1215269099
lewka
2008-07-05 18:44
2008.08.03
Перенос значения переменной


6-1191559374
AndreyRu
2007-10-05 08:42
2008.08.03
TICQClient и HTTP proxy


15-1213775073
Darvin
2008-06-18 11:44
2008.08.03
Вызов подпрограмм из DLL, написанных на C# из Delphi





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский