[devel] Q: [python3-3.3.1] RLIMIT в hasher`е

Dmitry V. Levin ldv на altlinux.org
Ср Апр 10 21:39:18 MSK 2013


On Wed, Apr 10, 2013 at 09:06:04PM +0400, Aleksey Avdeev wrote:
> 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. Если у нас это запрещено -- отключу тест.
> >>>>>
> >>>>> Какой именно лимит?
> >>>>
> >>>>   В коде (см.
> >>>> <http://git.altlinux.org/people/solo/packages/?p=python3.git;a=blob;f=python3/Lib/test/test_resource.py;h=f3416b7b43ef2db9094401f65abe78222af7746a;hb=001b4a54de71226a2f7e0d9f5a409774a686effd>):
> >>>>
> >>>>     # 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) в
> >> <http://git.altlinux.org/people/solo/packages/?p=python3.git;a=blob;f=python3/Modules/resource.c;h=b294a8cfe169bbc209e7e183b2eedbe018ed14b0;hb=001b4a54de71226a2f7e0d9f5a409774a686effd>)
> >> возвращает 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 (судя по коду).

Неверно.

> Появился в процессе исправления <http://bugs.python.org/issue6083>

Верно, http://hg.python.org/cpython/rev/3e3a7d825736


-- 
ldv
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : отсутствует
Тип     : application/pgp-signature
Размер  : 198 байтов
Описание: отсутствует
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20130410/2e162938/attachment.bin>


Подробная информация о списке рассылки Devel