AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 717632
Accepted
user3528438
user3528438
Asked: 2022-09-18 03:00:27 +0800 CST2022-09-18 03:00:27 +0800 CST 2022-09-18 03:00:27 +0800 CST

llseek 和 e2fsck 发生了什么?

  • 772

lseek 手册页:

当用户抱怨 e2fsck(8) 编译错误导致数据丢失时,glibc 2.1.3 添加了链接时警告

“该llseek功能可能很危险;请改用 `lseek64。”

如果需要无警告编译,这会使此功能无法使用。

从 glibc 2.28 开始,这个函数符号不再可用于新链接的应用程序。

这背后有什么故事?

linux system-calls
  • 1 1 个回答
  • 438 Views

1 个回答

  • Voted
  1. Best Answer
    Stephen Kitt
    2022-09-18T04:05:07+08:002022-09-18T04:05:07+08:00

    问题是 glibc 包含一个llseek符号,在其头文件中没有相应的声明。e2fsck的配置脚本检测到该符号,并假设这意味着该功能可用。但是,隐式函数声明与函数预期的不匹配,函数调用最终被错误编译。特别是,llseek需要 64 位偏移量,但隐式声明会导致int参数 - 这是导致数据丢失的原因,因为e2fsck在与预期不同的偏移量处进行了更改。

    e2fsck使用的原因llseek是 glibc 在 Linux 上的前身 libc5 声明了它并使其可用(它在unistd.h. 因此e2fsck,当针对 libc5 构建时,正确使用llseek;但是当针对 glibc 构建时,构建成功但无法正常工作。

    这已在 e2fsprogs 1.12 中修复,并带有以下更改日志条目:

    E2fsprogs 现在可以与 glibc 一起使用(至少与 RedHat 5.0 附带的版本一起使用)。ext2fs_llseek() 函数现在应该可以使用 i386 ELF 共享库并且如果 llseek() 不存在。我们还显式地进行了配置测试,以查看 (a) llseek 是否在 libc 中,以及 (b) llseek 是否在系统头文件中声明。(请参阅关于 libc 开发人员不了解与以前版本的 libc 兼容的概念的标准投诉。)

    如果代码尝试使用 C 库,也会更改为发出警告llseek;讨论可以在邮件列表档案中找到。

    • 11

相关问题

  • 使用键盘快捷键启动/停止 systemd 服务 [关闭]

  • 需要一些系统调用

  • astyle 不会更改源文件格式

  • 通过标签将根文件系统传递给linux内核

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve