Bug 8706 - accept locks all thread subsystem
Summary: accept locks all thread subsystem
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: guile16 (show other bugs)
Version: unstable
Hardware: all Linux
: P2 blocker
Assignee: Nobody's working on this, feel free to take it
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2005-12-22 16:16 MSK by inger@altlinux.org
Modified: 2008-04-25 16:50 MSD (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description inger@altlinux.org 2005-12-22 16:16:08 MSK
guile> (define s (socket PF_UNIX SOCK_STREAM 0))
guile> (bind s AF_UNIX "/tmp/s3")
guile> (listen s 10)
guile> (define thr (begin-thread (let loop () (write "zzz\n") (sleep 5) (loop)))
... )
"zzz
"guile> 
guile> "zzz
"
guile> "zzz
"
guile> "zzz
"
guile> (accept s)
... <и тут больше сообщений не будет пока не пройдёт accept>
Comment 1 inger@altlinux.org 2005-12-22 16:16:44 MSK
надо бы по больше severity
Comment 2 Michael Shigorin 2008-02-21 16:45:58 MSK
Вроде актуально :(
Comment 3 Alexey Voinov 2008-04-22 17:09:25 MSD
Причём не только для accept, но и для recv, send и всего комплекта функций
работы с сокетами. А если копнуть чуть глубже, то выяснится, что всё, что умеет
работать вместе с тредами, это операции с файловыми портами, usleep и sleep.
Всё. Любая другая блокирующая операция заблокирует весь процесс целиком.

Механизм для реализации обёрток в guile-1.6 есть. Делается всё довольно
тривиально, если я правильно понял как это работает. Так что если это
действительно необходимо, то я могу поправить accept и ещё немножко функций. :)
Отправлять патч в upstream вряд ли имеет смысл, хотя я могу посмотреть на 1.8,
может они так и забыли про эту "фичу". Ну что, исправляем?
Comment 4 inger@altlinux.org 2008-04-23 11:20:40 MSD
даже и не знаю ... наверное можно подождать, вроде как уже свыкся со всеми
тараканами 1.6 ... кстати как по твоим ощущениям 1.8 .. стоит ли туда переезжать?
Или 1.9 дождаться?
Comment 5 Alexey Voinov 2008-04-23 14:19:58 MSD
1.8 не щупал, если честно. По рассылки особых возмущений не вижу. Либо guile уже
никто не использует, либо там всё в порядке. в любом случае попробовать стоит. 
В 1.8 эти блокировки в accept убраны, в send и в recv остались. :)

В общем, я патчик изготовлю и в пакет положу. Не будет у нас блокироваться
accept, как и в 1.8. Остальные функции пока трогать не буду.