Единственное другое отличие - наследование классов и структур по умолчанию, которое, что неудивительно, является частным и публичным соответственно.
Как скала 4 дня подряд. Я объявляю победу на этом. Ответ - «глупая ошибка пользователя» (см. Комментарии выше). Мьютекс должен быть разблокирован только тем потоком, который его заблокировал. Спасибо за терпение.
Быстрый поиск в Google, который я делал, часто обвиняет в неправильной оптимизации компилятора. Приличное суммирование здесь . Возможно, стоит посмотреть на вывод сборки, чтобы убедиться, что gcc создает правильный код.
Либо это, либо вы пытаетесь использовать память, используемую библиотекой pthread ... такого рода проблемы довольно сложно найти.