Очень странно ведет себя сравнение с образцом при определенных обстоятельствах... Есть запись (record) rec, из процесса A посылается сообщение процессу B:
B ! {rec, Rec}, % Rec - запись rec
В процессе A:
receive
{rec, Rec} -> % Эта ветвь НЕ выполняется
work_1(Rec);
{norec} ->
work_2();
A -> % ВЫПОЛНЯЕТСЯ ЭТО
{rec, Rec} = A, % ошибки НЕ происходит, все работает
work_3(Rec)
end,
В процессе B записи хранятся в array. Если попробовать воспроизвести ситиацию отдельно - все работает, как ожидается.
PS Система достаточно запутанная и императивненькая, я новичок...