Мой Linux орёт на меня! (+ решение проблемы)

Да, не самая приятная история, связанная с особенностями Pulseaudio. Но хорошо всё то, что хорошо кончается (или разрешимо для этого).

Проблема

Сижу я за работой, в фоне тихонько играет музыка. В какой-то момент отлаживаемое приложение подвисает, я пытаюсь отключить его соответствующей кнопкой окна. Разумеется, без ответа. Но кеды умные — подождут несколько секунд, а потом выплюнут окошко с вопросом «Приложение не отвечает на SIGTERM, прикончить его SIGKILL?». Окошко выплёвывается с характерным системным звуком.

И вот, кнопка завершения нажата, ждём эффекта. Тут из 40-ваттной акустики, подключенной к ноуту, раздаётся громкое «БР-Р-ЯМЦ», разрушая гармонию и покой одиночества в небольшой квартире, попутно заставив проснуться соседей. Ах да, это системный звук. С непривычки откладвается груда кирпичей, проклинается всё на свете и окошко закрывается.

Но как же так? Я же ставил Master volume в 20%, оно не могло издать такой громкий звук?

Смотрим в трей и видим, что Master volume теперь не 20%, а 100%. Чудеса!

Повторные эксперименты показывают, что Master volume действительно выкручивается в максимум в момент проигрывания системного звука.

Подробнее

Toony Mugs, или Как разрисовать кружку и не сгореть от стыда

Ещё где-то на этапе обживания моего нового временного жилища, я решил, что хочу склепать себе оригинальную кружку. А что, с некоторых пор акриловых красок у меня много, время хоть редко, но появляется, а принтер ещё не пущен в дело (хотя некоторый апгрейд он уже пережил, но об этом чуть позже).

Для этих целей где-то месяц назад в одном крупном гипермаркете за копейки была куплена пара больших кружек «дымчатого стекла» или чего-то в этом роде. В общем, полупрозрачное коричневатое стекло. На тот момент мне показалось, что это довольно удачный вариант для раскрашивания. Однако, хоть весь материал был в наличии, идей всё ещё не было.

Очередным вечером мне вдруг надоело это бездействие. Я взял самую простую маленькую стеклянную чашку из сервиза и на ночь глядя попытался перевести на неё один из пони-артов товарища up1ter (кстати, если ты это читаешь — огромное спасибо за проделанную работу! Когда будет возможность — постараюсь подбодрить донатом :3). К сожалению, получилось так себе, но, думаю, скоро повторю попытку (фотография, тем не менее, лежит внизу).

Реакцией Богдана на эту кружку была вот эта замечательная мордаха:

В общем, глядя на это, я решил, что настал самый подходящий момент.

Подробнее

Address Sanitizer, или Что делать, если не работает valgrind

Случилась непростая ситуация. Есть код, написанный на С, который активно используется через CGo в проекте, написанном на Go. В какой-то момент программа начала падать с ошибками от malloc: то segfault, то memory corruption.

Логичная мысль: нужен valgrind с его memcheck, чтобы проверить, кто лезет поперёк батьки в пекло в невалидную память. Однако, попытка скормить валгринду бинарник, полученный от go build, приведёт только к разочарованию — даже на простом Hello World валгринд разразится сотнями ошибок и отправит разработчика на известные координаты.

Это происходит из-за того, что go runtime довольно специфичен и неплохо отличается от такового в С. (Подробности можно спокойно нагуглить по запросу «golang valgrind»).

Так как же нам разобраться, что происходит?

Подробнее

Winter Wrap Up

Всем доброй пятницы, друзья.

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

Забавно, но лучший способ вспомнить всё, что происходило за последнее время — залезть в телефон и вытащить оттуда фотографии. Чем я и попробую сейчас заняться.

Подробнее