Пытаясь написать простенькое клиент-серверное приложение, столкнулся с одной штукой, выглядящей крайней аномально. Сервер должен уметь обрабатывать поступивший SIGHUP, написав пустой обработчик, содержащий один printf, я запустил сервер, послал руками сигнал. Программа успешно зашла в обработчик, но после сразу вывалилась в сегфолт (ошибка сегментирования). Я, особо не запариваясь, закомментировал все более менее опасные участки программы, в конце сделав обычный while(1) sleep(1); (чтоб можно было спокойно послать сигнал), снова попытал счастья, послал соответствующий сигнал ...и снова сегфолт!, откуда?! программа висит бесконечном цикле, никаких операций с указателями не производится, и сегфолт! Я начал комментировать строку за строкой вышележащей программы (хотя казалось бы какой смысл, до цикла я ведь дошел успешно) и нашел виновника сегфолта. Им оказалoсь более чем невинное объявление переменной char *sockpath; Каким образом безобидная переменная, которая фактически нигде не используется (все закомментировано) может вызвать сегфолт? Предположение о том,что так происходит из-за того что переменная не инициализирована оказалось неверным. Вот собственно код http://pastebin.com/zSFSCCCA