У нас есть программа, написанная на C, которая использует RPC для связи с другой программой (также написанной на C) на том же сервере Linux (в некоторых производственных установках вторая программа C будет работать на другой машине, поэтому RPC вместо IPC).
При вызове из других программ на C, CRON или из командной строки он работает как положено и работает так уже много лет, поэтому можно с уверенностью сказать, что он обычно работает.
Сбой той же программы, вызываемой из скрипта Groovy, по-видимому, с сетевыми проблемами.
В программе на C svc_register(xprt, prognum, versnum, dispatch, protocol)
успешно, но затем
- на RPC-сервере после запроса:
clnttcp_create
завершается неудачно с «отказано в соединении»
- на клиенте RPC, ожидающем ответа:
select
на svc_fdset
не удается с EBADF
Groovy программа (просто для полноты, здесь не так много):
[ "myprogram", "someoption", "someprogram" ].execute()
Что мы можем попытаться определить и устранить проблему?