В программах, использующих DIPC, могут возникать два вида ошибок:
Некоторые ошибки совпадают с теми, которые встречаются в обычных
IPC, например, ссылка на несуществующую структуру IPC, или попытка
получения доступа к структуре без наличия соответствующих прав доступа.
Синхронные ошибки обнаруживаются с помощью значений, возвращаемых
системными вызовами. При наличии асинхронных ошибок приходится применять
асинхронные механизмы - сигналы.
Ошибки, являющиеся специфическими ошибками DIPC. Они могут быть вызваны
следующими ситуациями:
компьютер стал недоступным для одной или большего числа машин в кластере.
Такое может произойти, если сеть повреждена. Но может случиться и
тогда, когда данный компьютер имеет малую производительность или сеть загружена -
в таких случаях другие компьютеры ``думают'', что он недоступен;
аварийный останов машины, в результате чего
часть действий DIPC и ряд операций
завершаются ненормально;
программа dipcd на машине не выполняется или работает
со сбоями. В этих случаях ни одна операция DIPC
не может выполняться на данной машине.
Считается, что когда где-либо возникает ошибка,
сообщение о ней не передается (ошибка - остановка), а для ее обнаружения
может быть использован механизм тайм-аута - это именно то, что реализовано
в DIPC. При этом в DIPC используется ряд различных величин тайм-аута.
Процесс попытки вывода системы из ошибочной ситуации (такой,
как ошибка сети) сложен, а иногда и невозможен, что добавляет сложности
DIPC. Таким образом, когда DIPC обнаруживают ошибку, они не пытаются
осуществить повторное выполнение, а делают в точности то, что и IPC:
пытаются информировать приложение об ошибке через код возврата, или,
в случае, когда процесс пытается получить доступ к разделяемому сегменту
памяти через сигнал (SIGSEGV). Остальное возлагается на
приложение. Следует помнить, что только ``ответственные''
процессы будут проинформированы об ошибке - для того, чтобы они предприняли
что-нибудь, - а не все процессы распределенной программы.
DIPC пытаются что-либо предпринять не более одного раза. Это либо получается,
либо не получается, однако повторных попыток не делается (в смысле:
``не более одного раза''). Это означает, что один и тот же запрос
не имеет возможности быть обработанным более одного раза.
Следует отметить, что ошибки могут порождаться невнимательным отношением
к системе. Например, структура IPC может быть окончательно удалена
на одном компьютере, а другие могут не знать об этом. Они могут считать,
что структура продолжает существовать - это может вызвать затруднения
в дальнейшем (см. программы в каталоге tools, частично разрешающие
эту проблематику).