Page 1 of 3

GD не запускается при большом количестве словарей

PostPosted: Mon May 25, 2009 6:10 pm
by lexxion
Понимаю, что это экстрим :-) Но все же.
Когда количество словарей стало приближаться к 500, программа перестала запускаться. Если удалить несколько словарей (любых), работоспособность восстанавливается.
При этом более ранняя rev 273 такое и большее количество словарей обрабатывает нормально.
В ревизиях в промежутке 283-312 процесс исчезает через несколько секунд после запуска.
В 315 и более поздних (включая 0.9) пропадает GUI, а процесс остается в диспетчере задач. :-(

Надеюсь, можно что-нибудь с этим сделать? :roll:

Система Windows XP SP3. На других проверить сейчас возможности нет.

Re: GD не запускается при большом количестве словарей

PostPosted: Mon May 25, 2009 6:25 pm
by ikm
Обычно это связано либо с тем, что 1) закончились файловые дескрипторы, либо с тем, что 2) закончилось виртуальное адресное пространство. По 1) - как увеличить кол-во дескрипторов в Windows я не знаю, хотя и уверен, что это можно как-то сделать, по 2) - имеет смысл пожать все dsl-словари и stardict-словари dictzip'ом.

Re: GD не запускается при большом количестве словарей

PostPosted: Mon May 25, 2009 6:35 pm
by lexxion
Словари все уже пожаты, так что проблема не в этом.
И еще раз подчеркну - ведь в 273 ревизии проблема отсутствует. Отчего такое может наблюдаться?

Re: GD не запускается при большом количестве словарей

PostPosted: Mon May 25, 2009 6:45 pm
by ikm
Добавьте еще большее количество словарей - и 273я должна загнуться. Скорее всего, в новых ревизиях используется больше файловых дескрипторов под другие нужды. Точно не знаю, но я не вижу ничего сверхъестественного, что было в тех 11 ревизиях, что отделяют 273 от 284.

Короче, попробуйте для начала найти, как увеличить количество дескрипторов в windows. Думаю, это решит проблему. Ежели однако хочется заняться поиском истины, могу только лишь предложить установить точно, в какой ревизии наблюдается регрессия методом половинного деления.

Re: GD не запускается при большом количестве словарей

PostPosted: Tue May 26, 2009 2:14 pm
by lexxion
Насчет дескрипторов.. Вот это на что-нибудь похоже?
http://www-01.ibm.com/support/docview.w ... ss=PUSHFWK
Или совсем не то? Вообще мне довольно сложно такое искать: я в этом очень мало понимаю.
ikm wrote:Добавьте еще большее количество словарей - и 273я должна загнуться.

Подтверждаю, она все-таки "загнулась". Кстати, заметил, что работала она за счет того, что по достижении определенного количества словарей переставала их подхватывать, их и в общем списке не было.
Больше пока ничего сказать не могу :-(

И еще вопрос - я правильно понял, что под линуксом такой проблемы быть не должно? Стоит проверять?

Re: GD не запускается при большом количестве словарей

PostPosted: Tue May 26, 2009 3:14 pm
by ikm
Под линуксом будет то же самое. Но вот только под линуксом-то это можно изменить в /etc/security/limits.conf (для debian как минимум). А вот как изменить это в виндовс - неизвестно. Кто-то пишет, что под windows имеется жесткий предел в 2048 дескрипторов. И что надо использовать родное api типа CreateFile чтобы обойти это ограничение. Для файлов данных dsl/stardict оно там как раз и используется. А вот для файлов индекса используется обычный fopen. В общем, поди там пойми, сколько и каких дескрипторов там есть, и сколько их разрешено.

Re: GD не запускается при большом количестве словарей

PostPosted: Tue May 26, 2009 3:37 pm
by ikm
Разобрался. По дефолту с помощью fopen под windows можно открыть до 512 файловых дескрипторов. Однако этот предел каждая программа может поднять себе до 2048, что теперь и делается. Это изменение ушло в SVN.

Re: GD не запускается при большом количестве словарей

PostPosted: Tue May 26, 2009 4:34 pm
by lexxion
:D Огромное спасибо!

Re: GD не запускается при большом количестве словарей

PostPosted: Sun May 31, 2009 1:28 pm
by niccolo
Подтверждаю вышеописанную проблему на 351 и XP SP2 64-bit. Причём гнётся просто на папке с порядка 200 словарей. ГУИ исчезает а программа перестаёт индексировать и просто остаётся висеть в процессах. Псоледнее происходит даже просто при попытке свернуть программу.

Re: GD не запускается при большом количестве словарей

PostPosted: Sun May 31, 2009 3:49 pm
by ikm
2lexicon: что-то изменилось с тех пор как было повышено количество дескрипторов?