sbcl-win32-1.0.40 альфа-версия
Sep. 16th, 2010 10:07 pmВыложил для тестирования бинарную сборку SBCL с нитями в https://sites.google.com/site/dmitryvksite/sbcl-distr/sbcl-1.0.40-threads-2.msi. Если есть возможность прогнать тесты (два основных теста, которые я использовал при отладке я выложил в http://gist.github.com/582848) и отписаться о результатах, было бы здорово.
no subject
Date: 2010-09-18 10:26 am (UTC)no subject
Date: 2010-09-18 01:22 pm (UTC)Давайте попробуем изолировать проблему в USOCKET.
(usocket:with-socket-listener (sv "0.0.0.0" 8024) (usocket:wait-for-input sv :ready-only t :timeout 3600) (usocket:socket-accept sv))Этот код должен висеть в ожидании, а при подключении [напр. telnet localhost 8024] сразу вернуть работающий stream. Пожалуйста, расскажите, как у вас.
(Кстати, следите за тем, чтобы использовать незанятый порт -- а то с обработкой ошибок winsock в sbcl бывает невесело).
no subject
Date: 2010-09-18 01:52 pm (UTC)В общем, я hunchentoot запускаю на своей сборке где-то недельной давности (+OVERLAPPED, но влиять в данном случае не должно). Как я вижу, после этого вы уже коммитили; если в случае с hunchentoot речь идёт специфически о регрессии последних нескольких дней, предупредите (буду тогда сначала пересобирать, а потом уже думать :)
no subject
Date: 2010-09-19 03:58 am (UTC)Я не думаю, что речь идет о регрессии, но думаю, что это как-то связано с OVERLAPPED IO. Проверяю на своей последней версии (Add workaround for LoadLibrary hang in REPL (http://github.com/dmitryvk/sbcl-win32-threads/commit/64eeabc90fee571c9cb8dafaebdf0238b925b269)) из консоли и из REPL'а.
no subject
Date: 2010-09-19 06:44 am (UTC)no subject
Date: 2010-09-19 11:20 am (UTC)OVERLAPPED влиять не должен (или, если должен, то только в хорошую сторону). SBCL-ный виндовый unix-fast-select в принципе не может работать, когда ждать приходится на несокетах и сокетах разом. Я не очень понимаю устройство SBCL около sub-serve-event, with-fd-handlers и их друзей, но если ханчентут использует эту часть SBCL для мультиплексирования REPL и обработки сокетов -- проблемы гарантированы.
Реализация wait-for-input, которую я сейчас вижу в USOCKET, сделана правильно (WSAEventSelect -- внимание, для акцептов там отдельный флаг -- и ожидание на event'е). В перспективе в SBCL надо бы сделать аналогично, чтобы event loop с fd-handlers можно было бы пользоваться под виндой.
no subject
Date: 2010-09-19 05:11 pm (UTC)no subject
Date: 2010-09-19 11:32 am (UTC)