From: Alexander Bokovoy <ab@altlinux.org>
To: ALT Linux Team development discussions <devel@lists.altlinux.org>
Subject: Re: [devel] Как пройти сборку если требуется /dev/shm ?
Date: Wed, 31 Dec 2014 15:57:14 +0200
Message-ID: <CAG0OwAHW8+ym1WWCeCgUvXGUdPMMi_Vf=Htyb4=eW8ctqNSYPw@mail.gmail.com> (raw)
In-Reply-To: <54A2AE77.9060205@altlinux.ru>
2014-12-30 15:53 GMT+02:00 Andrew V. Stepanov <stanv@altlinux.ru>:
>
> Как выяснилось, Python тут ни причем.
>
> Рассмотрим компьютер в котором один однопоточный процессор, с одним ядром.
>
> И рассмотрим семафор Posix.
>
> $ cat 1.c
> #include <semaphore.h>
> #include <stdio.h>
> #include <errno.h>
> #include <stdlib.h>
> #include <unistd.h>
> #include <sys/types.h>
>
> #include <sys/stat.h>
> #include <fcntl.h>
> #include <sys/mman.h>
>
> int main(int argc, char **argv)
> {
> sem_t *mutex;
>
> if ((mutex = sem_open("mysemaphore", O_CREAT, 0644, 1)) ==
> SEM_FAILED) {
> perror("semaphore initilization");
> exit(1);
> }
>
> exit(0);
> }
>
>
>
> $ gcc 1.c -lpthread
>
> $ ./a.out
> semaphore initilization: Function not implemented
>
> Т.е. POSIX семафоры в Linux хотят /dev/shm
>
> Хотеть семафор даже на однопроцессорной машине __вполне законно__.
>
>
> Python multiprocessing модуль написан с использованием POSIX семафоров, что
> также вполне законно.
>
>
> Что видно:
> File "/usr/src/RPM/BUILD/bro-2.3.1/aux/btest/btest", line 198, in
> runSubprocess
> q = multiprocessing.Queue()
> File "/usr/lib64/python2.7/multiprocessing/__init__.py", line 218, in
> Queue
> return Queue(maxsize)
> File "/usr/lib64/python2.7/multiprocessing/queues.py", line 63, in
> __init__
> self._rlock = Lock()
> File "/usr/lib64/python2.7/multiprocessing/synchronize.py", line 147, in
> __init__
> SemLock.__init__(self, SEMAPHORE, 1, 1)
> File "/usr/lib64/python2.7/multiprocessing/synchronize.py", line 75, in
> __init__
> sl = self._semlock = _multiprocessing.SemLock(kind, value, maxvalue)
> OSError: [Errno 38] Function not implemented
>
>
> Семафоры нужны даже на однопоточных машинах.
> А POSIX семафоры хотят /dev/shm
>
> В конкретно в моем случае:
>
> http://git.altlinux.org/gears/p/python.git?p=python.git;a=blob;f=Python/Modules/_multiprocessing/semaphore.c;h=b9e8f345fbb1cd70918fb960377dadaea46fd8f3;hb=55198a185eef2089e6f4eba8654c5d9047a3c3a7#l195
>
> Вывод: Hasher запрещает использование POSIX named semaphore.
Учитывая, что /dev/shm может быть смонтировано в приватное адресное
пространство на современных ядрах, ничего не мешает хэшеру
использовать /dev/shm для сборки приложений.
--
/ Alexander Bokovoy
next prev parent reply other threads:[~2014-12-31 13:57 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-12-29 14:32 Andrew V. Stepanov
2014-12-30 13:53 ` Andrew V. Stepanov
2014-12-31 13:57 ` Alexander Bokovoy [this message]
2015-01-01 20:41 ` Dmitry V. Levin
2015-01-12 12:30 ` Anton Farygin
2015-01-12 13:55 ` Dmitry V. Levin
2015-01-12 14:15 ` Dmitry V. Levin
2015-01-12 19:12 ` Anton Farygin
2015-01-12 19:36 ` Dmitry V. Levin
2015-01-13 11:55 ` Anton Farygin
2015-01-16 14:54 ` Dmitry V. Levin
2015-01-16 19:07 ` Anton Farygin
2015-01-16 19:54 ` Dmitry V. Levin
2015-01-16 20:06 ` Anton Farygin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='CAG0OwAHW8+ym1WWCeCgUvXGUdPMMi_Vf=Htyb4=eW8ctqNSYPw@mail.gmail.com' \
--to=ab@altlinux.org \
--cc=devel@lists.altlinux.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
ALT Linux Team development discussions
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
public-inbox-index devel
Example config snippet for mirrors.
Newsgroup available over NNTP:
nntp://lore.altlinux.org/org.altlinux.lists.devel
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git