Search
Write a publication
Pull to refresh
13
0

User

Send message

Баг в реализации SRWLock в Windows вешает многопоточные программы

Level of difficultyMedium
Reading time2 min
Views3.2K

Реализация SRWLock (Slim Reader/Writer Lock) на Windows может привести к серьёзным проблемам: многопоточное приложение может зависнуть (deadlock).

При частой конкуренции многих потоков, удерживающих shared_lock, и хотя бы одного потока, пытающегося получить unique_lock, возможно возникновение ситуации, когда потоки оказываются в состоянии взаимного ожидания. Код выглядит абсолютно корректным, но приложение зависает внутри вызова в WinAPI.

Это касается любых многопоточных программ для Windows, которые явно либо неявно используют SRWLock для синхронизации. В том числе написанных на старых реализациях Rust, пока в Rust не заменили реализацию для Windows, отказавшись от SRWLock (GitHub Issue). В том числе написанных на C# (фикса пока нет) и т.д.

Читать далее

Бесплатный Cryptic Disk 4 с поддержкой TrueCrypt

Reading time1 min
Views31K
Выпуск бесплатной версии Cryptic Disk Free — первый шаг навстречу пользователям.
Второй шаг — встроенная поддержка контейнеров умирающего TrueCrypt.
Ждём ещё один, последний шажок — открытые исходники.

image

Скачать бесплатную версию
История версий
Официальная новость

Skype 5.0 для Windows

Reading time1 min
Views568

Вышла новая версия Skype 5.0.


Прошу заметить, что новую версию предлагают скачать пока не всем. Если у кого-то высвечивается 4.2, то надо переключить страницу на English (снизу).

Новость на официальном блоге здесь.

Отключаем Supernode в Skype

Reading time1 min
Views47K
Как известно, Skype использует p2p сеть для обмена данными. Если у Вас достаточно мощный компьютер, то Skype может решить сделать Вас Супернодом и, как следствие, скайп-трафик других участников сети будет идти через Вас.
Начиная с версии 3.0 программы, появилась возможность отключить такую «фичу», что бы чужой трафик скайпа не шёл через Вас.
Для этого необходимо залезть в реестр и создать там ветку:

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Skype]
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Skype\Phone]
"DisableSupernode"=dword:00000001

После перезагрузки системы новая настройка вступит в силу.
Для удобства можете использовать .reg-файл, который сам добавит необходимые параметры в реестр.

Дополнительная информация:
1. Guide for Network Administrator’s (.pdf) — подробное описание этой и некоторых других настроек реестра для скайпа.
2. Шаблон групповой политики (.adm), который позволяет более гибко настраивать параметры скайпа.
3. Отключение Supernode в MacOS-версии

nginx и непонятные цифры перед

Reading time1 min
Views1.2K
После установки nginx в качестве frontend к apache встретился проблемой: в начале некоторых html-документов вставлялось шестнадцатеричное число, а в конце- ноль. Проблема проявлялась только на страницах с ошибками CMS Drupal.
По сути эти документы не что иное, как chuncked-ответы сервера. После недолгого разбирательства выяснил, что такая проблема встречается из-за кривого php-кода. На HTTP/1.0 запрос, php-код отдавал HTTP/1.1 ответ. Лезть в друпаловский код не хотелось, потому я решил немного поднастроить apache (2.2). В httpd.conf добавил следующие строки:

<IfModule setenvif_module>
BrowserMatch ".*" downgrade-1.0 force-response-1.0
</IfModule>


После чего, естественно, перезапустил apache.

По сути, я точно не знаю что значат эти настройки, но предполагаю, что теперь браузеры для моего сайта будут юзать исключительно HTTP/1.0 протокол. Тщательно проверив работоспособность сайта, убедился, что всё работает хорошо, и успокоился :)

UPD: Виноватых в произошедшем на самом деле определить очень сложно. Но для меня важно то, что описанная выше настройка апача полностью решает проблему.

Information

Rating
Does not participate
Location
Новая Зеландия
Registered
Activity