auCDtect:致命错误:glibc 检测到无效的 stdio 句柄

auCDtect:致命错误:glibc 检测到无效的 stdio 句柄

我正在尝试使用拍卖检查我的音频文件的真实性。添加 libstdc++-libc6.2-2.so.3 后,我可以在 Synology NAS (DS918+) 上成功运行 Linux 二进制文件。我想在我的 MacBook Pro 笔记本电脑上更快地完成此操作。我在 Debian GNU Linux 9(在 Parallels Desktop 中)中重复了相同的步骤,导致出现此错误:

Fatal error: glibc detected an invalid stdio handle
fish: 'aucdtect' terminated by signal SIGABRT (Abort)

数据库:

(gdb) run
Starting program: /usr/local/bin/aucdtect
Fatal error: glibc detected an invalid stdio handle

Program received signal SIGABRT, Aborted.
0xf7fd7c89 in __kernel_vsyscall ()
(gdb) bt
#0  0xf7fd7c89 in __kernel_vsyscall ()
#1  0xf7d8fdf0 in raise () from /lib32/libc.so.6
#2  0xf7d912b7 in abort () from /lib32/libc.so.6
#3  0xf7dcb3af in ?? () from /lib32/libc.so.6
#4  0xf7dcb3ec in __libc_fatal () from /lib32/libc.so.6
#5  0xf7dcbd73 in ?? () from /lib32/libc.so.6
#6  0xf7da641b in vfprintf () from /lib32/libc.so.6
#7  0xf7dad7c8 in fprintf () from /lib32/libc.so.6
#8  0x080492d4 in ?? ()
#9  0xf7d7c286 in __libc_start_main () from /lib32/libc.so.6
#10 0x080489b1 in ?? ()
(gdb)
#0  0xf7fd7c89 in __kernel_vsyscall ()
#1  0xf7d8fdf0 in raise () from /lib32/libc.so.6
#2  0xf7d912b7 in abort () from /lib32/libc.so.6
#3  0xf7dcb3af in ?? () from /lib32/libc.so.6
#4  0xf7dcb3ec in __libc_fatal () from /lib32/libc.so.6
#5  0xf7dcbd73 in ?? () from /lib32/libc.so.6
#6  0xf7da641b in vfprintf () from /lib32/libc.so.6
#7  0xf7dad7c8 in fprintf () from /lib32/libc.so.6
#8  0x080492d4 in ?? ()
#9  0xf7d7c286 in __libc_start_main () from /lib32/libc.so.6
#10 0x080489b1 in ?? ()

我想这可能是因为该程序太旧(2004 年)并且与较新的库不兼容。我如何找出导致问题的库(可能是 libc?),以及我应该获取哪个旧版本?

答案1

从我记事起,我就一直在 wine 下使用 auCDtect:

wine ~/bin/auCDtect.exe -v -mS0 '*.wav'

你也可以考虑https://github.com/alexkay/spek以视觉形式显示波形。您可以立即查看音频文件是否已被不良编码器处理,尽管良好的编码器(例如 Apple AAC,即使在 256Kbit/秒)通常也几乎不可能检测到这种方式,但 auCDtect 也会将它们显示为 CDDA。


要查看它使用哪些共享库,您可以通过运行它ldd /path/to/binary。它不会让您了解它需要哪些版本的库。

答案2

我曾经ldd /usr/local/bin/aucdtect找到使用的库aucdtect(主要是libc和libm),从我的NAS复制过来,放在与 相同的目录中aucdtect,并设置LD_LIBRARY_PATH/usr/local/bin.使用这个方法,我就能够aucdtect在虚拟机中运行了。然而,wine在 macOS 上使用比在虚拟机中使用快了近 3 倍(样本大小=1),所以我最终使用了它wine

相关内容