У меня есть сторонняя библиотека, которую я пытаюсь включить в симуляцию. У нас есть статическая библиотека (.a) вместе со всеми ее зависимостями во время выполнения (общие объекты). Я создал очень простое приложение (на C), которое связано с библиотекой. Все, что он делает, это вызывает функцию инициализации, которая является частью API сторонней библиотеки, и завершает работу. Когда я запускаю это прямо из командной строки, все работает нормально. Если я отправлю исполняемый файл в нашу сетку Condor, он выйдет из строя из-за ошибки seg на strncpy (libc.so.6). Я заставил condor запускать исполняемый файл только на определенной машине, и если я запускаю его непосредственно на этой машине, он работает нормально.
В основном я программист на Java... ограниченный опыт написания собственного кода. Я знаком с такими инструментами, как nm, ldd, catchsegv и т. д., до такой степени, что могу их запускать. Я действительно не знаю, с чего начать поиск проблемы.
Я запускал ldd непосредственно на исполняемой машине и через скрипт, отправленный через condor, вместе с моим исполняемым файлом. ldd сообщает об одних и тех же файлах в обоих случаях.
Я не понимаю, как будет работать его прямой запуск, но он не будет запускаться кондором. Процесс, который в конечном итоге выполняет программу, condor_startd, — это процесс, который запускается как root и меняет свой эффективный uid на отправителя. Возможно, это как-то связано?