【问题标题】:glibc sscanf segmentation fault on RHEL8, same code is working on RHEL 5,RHEL6 and RHEL7RHEL8 上的 glibc sscanf 分段错误,相同的代码适用于 RHEL 5、RHEL6 和 RHEL7
【发布时间】:2020-02-27 12:51:10
【问题描述】:

我们有一个可以在 RHEL5、RHEL6 和 RHEL7 上正确运行的旧版 C 应用程序。 但是相同的应用程序在 RHEL 8 上崩溃了,调用堆栈指向 glibc 库函数 sscanf 中的崩溃。

下面是调用栈顶-

*#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 版本。

提前感谢您的帮助。

【问题讨论】:

    标签: scanf glibc coredump


    【解决方案1】:

    所有参数都有正确的值

    如果我们相信你,你不应该在 sscanf 内部发生崩溃,但你会这样做。

    如果我遇到这个问题,我会尝试两件事:

    1. 通过valgrind 验证您的程序在其他地方没有堆损坏。
    2. 安装 libc debuginfo 包 (instructions),这样您就可以准确地看到 __GI__IO_vfscanf 内的位置,您的程序崩溃了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-22
      • 1970-01-01
      • 2016-02-28
      • 2022-01-16
      • 2018-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多