Моя компания продает устройства на основе Linux с несколькими исполняемыми файлами.Одно из этих приложений каждые несколько дней висит в самой новой версии нашего продукта.
Мы используем glibc 2.19 и gcc 4.8.3 и ядро Linux версии 3.16.38.Мы строим для x86_64.
Наша версия glibc очень старая, и мы предположительно исправили ее год назад с исправлением для: Ошибка # 12926: getaddrinfo () / make_request () вращается вечно (https://sourceware.org/bugzilla/show_bug.cgi?id=12926)
Сопровождающий нашего crosstool клянется, что у того, который мы используем, есть пропатченный glibc, но есть и другие возможности сбоев, например, наши сборки по какой-то причине могут получить другой glibc.
В нашей сборкеНа этом компьютере мы сохраняем несвязанные версии исполняемых файлов нашего приложения и двоичных файлов общих объектов, которые мы можем позже использовать при отладке файлов ядра.
Я создал несколько файлов ядра, войдя в устройство с зависшим приложением и отправивобработайте SIGILL.
Основные файлы, кажется, показывают, что мы испытываем зависание в getaddrinfo (), и трассировки стека выглядят так же, как те, которые мы использовали, чтобы получить исправление glibc. Пример из недавнего основного файла, использующегопоследняя развернутая сборка:
Thread #18 1456 (Suspended : Container)
recvmsg() at 0x7f1fa276c17d
make_request() at 0x7f1fa278695d
__check_pf() at 0x7f1fa2786e54
getaddrinfo() at 0x7f1fa2759501
Thread #16 1454 (Suspended : Container)
__lll_lock_wait_private() at 0x7f1fa277777b
_L_lock_443() at 0x7f1fa2786f4d
__check_pf() at 0x7f1fa2786d05
getaddrinfo() at 0x7f1fa2759501
Я бы хотел проверить, какая версияgetaddrinfo () исполняемые нами исполняемые файлы релиза выполняются: исправлены или не исправлены.Выполнение этого в моем личном окне разработки не поможет, потому что это только проверит мою собственную среду разработки инструментов.Могу ли я сделать это с помощью выпусков исполняемых файлов, которые мы развернули?
РЕДАКТИРОВАТЬ: я забыл упомянуть, что мы статически ссылки.
РЕДАКТИРОВАТЬ 2: Я был не прав насчет статического связывания.Мы привыкли связывать почти все статически, но мы больше не статически связываемся с системными библиотеками.Спасибо тем, кто указал на это.