问题标签 [glibc]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux - 打开 O_CREAT | Linux 中 NFS 上的 O_EXCL?
在 Linux 2.6 内核和 NFSv3 中何时open("fname", O_CREAT|O_EXCL)
生效?当前的规范open(2)
系统调用文档(http://www.kernel.org/doc/man-pages/online/pages/man2/open.2.html)说一切都很好:
这看起来好像所有 2.6 内核都可以,但是手册页更改日志(ca 后期内核 2.6.23)在 2.6.0 上线四年后开始显示有效性,并且网络上充斥着董事会用户在去年谴责这种使用或两个。我想在 RHEL 5 (2.6.18) 系统上使用这个设置,但是当它真正变得安全时我无法确定。有人有明确的答案吗?
linux - Linux静态链接死了?
事实上, Linux 上的-static gcc 标志现在不起作用。让我引用 GNU libc 常见问题解答:
2.22。即使是静态链接的程序也需要一些我无法接受的共享库。我能做些什么?
{AJ} NSS(有关详细信息,只需键入 `info libc "Name Service Switch"')在没有共享库的情况下将无法正常工作。NSS 允许通过更改一个配置文件 (/etc/nsswitch.conf) 来使用不同的服务(例如 NIS、文件、db、hesiod),而无需重新链接任何程序。唯一的缺点是现在静态库需要访问共享库。这由 GNU C 库透明地处理。
一种解决方案是使用 --enable-static-nss 配置 glibc。在这种情况下,您可以创建一个仅使用服务 dns 和文件的静态二进制文件(为此更改 /etc/nsswitch.conf)。您需要明确链接所有这些服务。例如:
这种方法的问题在于,您必须将每个使用 NSS 例程的静态程序与所有这些库链接起来。
{UD} 事实上,不能再说使用此选项编译的 libc 正在使用 NSS。没有开关了。因此强烈 建议不要使用 --enable-static-nss,因为这会使系统上程序的行为不一致。
关于这个事实,现在是否有任何合理的方法可以在 Linux 上创建功能齐全的静态构建,或者静态链接在 Linux 上完全死了?我的意思是静态构建:
- 行为与动态构建完全相同(行为不一致的静态nss是邪恶的!);
- 适用于 glibc 环境和 Linux 版本的合理变化;
linux - 如何确定 glibc (glibcxx) 二进制文件的版本将取决于?
众所周知,glibc(据我所知,glibstd++ 也是)使用符号版本控制机制。(有关详细信息,请参阅: 如何链接到特定的 glibc 版本。)
问题是如何确定 GLIBC 和 GLIBCXX 的确切版本将由链接器为来自 libc 和 libstdc++ 的名称选择?例如,如何得到这样的东西:
我们为什么需要这个?在我看来,如果您想最小化所需的 glibc/libstdc++ 版本,它会很有用。
linux - glibc 检测到 ...httpd: double free or corruption 是什么意思?
我已经在 serverfault.com 上提出了这个问题,正如建议的那样,这是一个更合适的地方 - https://serverfault.com/questions/169829/what-does-glibc-detected-httpd-double-free-or-corruption-意思是
我有一个 EC2 服务器正在运行,用于处理图像上传。我有一个 Flash swf 可以处理从我的本地磁盘上传到服务器 - 在上传大约 130 张图像(总共大约 650MB)时,我在大约第 45 张图像之后的服务器日志文件中出现以下错误。
* 检测到 glibc * /usr/sbin/httpd: 双重释放或损坏 (!prev): 0x85a6b990 ***
这个错误是什么意思?
服务器已停止响应,因此我将重新启动它。我应该从哪里开始找到这个问题的原因?
谢谢
一些信息——
Apache/2.2.9 (Unix) DAV/2 PHP/5.2.6 mod_ssl/2.2.9 OpenSSL/0.9.8b 配置 Fedora 8
linux - 使用不同的 glibc 库在 Linux 中编译 C 程序
我有一个基于 linux 的防火墙设备,它有 glibc-2.3.4,并且没有 gcc 来为此编译程序。当我用另一台 linux 机器编译程序时,错误消息说:
需要 glibc.xxx
如何在另一台 linux 机器上为该版本的 glibc 编译 ac 程序?
regex - 用于检测重复子串的正则表达式是 SLOW
我正在尝试提出一个 GNU 扩展正则表达式来检测一串 ascii 编码位中的重复子字符串。我有一个有效的表达方式——有点。问题是当给定一个可能有很多解决方案的字符串时,它的执行速度非常慢
表达方式
([01]+)(\1)+
编译速度很快,但对字符串执行大约需要一分钟
1010101010101010101010101010101010101010101010101010101010
我正在使用 glibc 2.5-49 中的正则表达式实现(CentOS 5.5 附带。)
FWIW,pcre 库执行得很快,就像直接在 gregexp 或 perl 中一样。所以显而易见但错误的答案是“使用 libpcre”。我不能轻易地在我的项目中引入新的依赖项。我需要在 CentOS/RHEL 附带的标准 C 库中工作。
python - 如何调试“glibc检测到*** python:malloc():内存损坏”
我正在使用带有 scipy.weave 的 python2.5 来嵌入 c 代码。
在我的 c 代码中,没有 malloc() 函数,但我收到了类似的错误
不时。(这是一个随机算法)
那么我该如何调试呢?
谢谢
objective-c - 为什么 backtrace 不包含 Objective-C 符号而不管 -rdynamic?
更新:我正在使用 Linux 上的 GNU 运行时。在具有 Apple 运行时的 MacOS 上不会出现此问题。
更新 2:我在 MacOS 上编译了 GNU 运行时并用它构建了示例。在具有 GNU 运行时的 MacOS 上不会发生该错误。我会说问题出在 glibc(因为backtrace
并且backtrace_symbols
是 glibc 扩展)。
backtrace
在使用and在 GCC 编译的 Objective-C 应用程序中打印回溯时backtrace_symbols
,我没有得到任何 Objective-C 符号。仅显示文件名、地址和 C 符号。
我编译-g
并与-rdynamic
.
我的测试应用程序:
它的输出:
有没有办法让 Objective-C 符号出现在这个回溯中?
c - *** 检测到 glibc *** free(): 下一个大小无效(快速)——应该可以吗?
我正在开发一个现有的 c 项目(sourceforge 上的 spglib),在清理了一些数组初始化后我遇到了以下问题:
* 检测到 glibc *测试/spglibtest:free():下一个大小无效(快速):0x08ab46e0 ***
回溯是:
错误在下面的“free(trans)”行中:
get_translation 将值分配给 trans ,如下所示:
在 get_translation 中写入数组时,Valgrind 显示以下内容:
这向我表明,它正在尝试写超出为 trans 分配的内存的末尾,但它正在写入 trans[0][0],并且 trans 的维度为 [2][3]。这应该可行,AFAIK,任何人都可以看到我缺少的东西吗?
debian - 构建 eglibc 时如何设置通配符?
我正在尝试从源代码构建 eglibc-2.11.2 包。愚蠢与否,我正在尝试将它向后移植到 Debian Lenny,主要是这样我就可以构建其他需要它的东西,而无需将我的整个系统升级到稳定状态。(这是否是一个好主意对读者来说是一个练习。)我正在使用来自 sid 的 Debianized 源代码。
当我执行 dpkg-buildpackage 时,包会构建,但在运行 dh-shlibdeps 时最终会出现以下错误。
(我稍微解释一下,因为不幸的是,错误消息screen
在我的故障排除会话期间已从我的缓冲区中滚动出来,这是一个很长的构建过程。)
当然,我很可能有一些其他的包已经过时了。我从 backports 更新了 debhelper,所以它是 8.0 版,但这没有帮助。什么会解决这个错误?