10.04.2013 19:47, Dmitry V. Levin пишет: > On Wed, Apr 10, 2013 at 06:41:36PM +0400, Aleksey Avdeev wrote: >> 10.04.2013 17:45, Dmitry V. Levin пишет: >>> On Wed, Apr 10, 2013 at 05:36:15PM +0400, Aleksey Avdeev wrote: >>>> 10.04.2013 16:53, Dmitry V. Levin пишет: >>>>> On Wed, Apr 10, 2013 at 01:11:56PM +0400, Aleksey Avdeev wrote: >>>>>> Приветствую. >>>>>> >>>>>> Я правильно понимаю, что установка пользовательским процессом RLIMIT >>>>>> в 1000000, запрещена настройками hasher`а? >>>>> >>>>> $ hsh-run -- sh -c 'ulimit -Ha' >>>>> core file size (blocks, -c) unlimited >>>>> data seg size (kbytes, -d) unlimited >>>>> scheduling priority (-e) 0 >>>>> file size (blocks, -f) unlimited >>>>> pending signals (-i) 1032915 >>>>> max locked memory (kbytes, -l) 64 >>>>> max memory size (kbytes, -m) unlimited >>>>> open files (-n) 4096 >>>>> pipe size (512 bytes, -p) 8 >>>>> POSIX message queues (bytes, -q) 819200 >>>>> real-time priority (-r) 0 >>>>> stack size (kbytes, -s) unlimited >>>>> cpu time (seconds, -t) 7260 >>>>> max user processes (-u) 1024 >>>>> virtual memory (kbytes, -v) unlimited >>>>> file locks (-x) unlimited >>>>> >>>>> Привысить значения этих hard limits ядро не даст. >>>>> >>>>>> PS: В Python-3.3.1 такую операцию пытается сделать >>>>>> test.test_resource.ResourceTest. Если у нас это запрещено -- отключу тест. >>>>> >>>>> Какой именно лимит? >>>> >>>> В коде (см. >>>> ): >>>> >>>> # Issue 6083: Reference counting bug >>>> def test_setrusage_refcount(self): >>>> try: >>>> limits = resource.getrlimit(resource.RLIMIT_CPU) >>>> except AttributeError: >>>> pass >>>> else: >>>> class BadSequence: >>>> def __len__(self): >>>> return 2 >>>> def __getitem__(self, key): >>>> if key in (0, 1): >>>> return len(tuple(range(1000000))) >> ^^^^^^^ >>>> raise IndexError >>>> >>>> resource.setrlimit(resource.RLIMIT_CPU, BadSequence()) >>> >>> И какие значения RLIMIT_CPU в результате пытается установить этот код? >> >> 1000000 (см. выделение). >> >> Там в конечном итоге setrlimit(resource, &rl)(см. функцию >> resource_setrlimit(PyObject *self, PyObject *args) в >> ) >> возвращает errno == EPERM. > > Сколько значений RLIMIT_CPU передается в одном вызове setrlimit? > Какие значения RLIMIT_CPU в результате пытается установить этот код? Вызов происходит так: setrlimit(resource, &rl) где: resource = 0 (константа RLIMIT_CPU из /usr/include/bits/resource.h) rl -- структура, содержащая: rl.rlim_cur = 1000000 rl.rlim_max = 1000000 > На какое поведение setrlimit рассчитывает этот тест? Что setrlimit(resource, &rl) вернёт нечто отличное от -1. > Что вообще тестирует тест по имени test_setrusage_refcount? Похоже он проверяет работоспособность вызова setrlimit (судя по коду). Появился в процессе исправления -- С уважением. Алексей.