Ошибка glib c sscanf сегментации на RHEL8, тот же код работает на RHEL 5, RHEL6 и RHEL7 - PullRequest
0 голосов
/ 27 февраля 2020

У нас есть устаревшее C приложение, которое корректно работает на RHEL5, RHEL6 и RHEL7. Но то же самое приложение аварийно завершается на RHEL 8, стек вызовов указывает на cra sh в библиотечной функции glib c sscanf.

Ниже находится стек вызовов top-

*#0  0x00007f437767696e in __GI__IO_vfscanf () from /lib64/libc.so.6
#1  0x00007f437768a991 in vsscanf () from /lib64/libc.so.6
#2  0x00007f4377684f48 in sscanf () from /lib64/libc.so.6*

Все аргументы, переданные в sscanf, действительны и имеют правильные значения, которые мы подтвердили в gdb. Этот же код работает в старых версиях RHEL.

Заранее благодарен за помощь.

1 Ответ

0 голосов
/ 28 февраля 2020

все аргументы имеют правильные значения

Если мы хотим вам в этом доверять, у вас не должно быть cra * sh внутри sscanf, но у вас есть.

Есть две вещи, которые я бы попробовал, если бы у меня была эта проблема:

  1. Проверьте с помощью valgrind , что ваша программа не имеет повреждения кучи в другом месте.
  2. Установите пакет lib c debuginfo ( инструкция ), чтобы вы могли точно видеть , где внутри __GI__IO_vfscanf ваша программа падает.
...