Linux

auCDtect:致命錯誤:glibc 檢測到無效的 stdio 句柄

  • September 10, 2021

我正在嘗試使用auCDtect來檢查我的音頻文件的真實性。通過添加 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?),以及我應該獲得哪個舊版本?

只要我記得自己,我就一直在 wine 下使用 auCDtect:

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

您還可以考慮https://github.com/alexkay/spek以可視形式顯示波形。您可以立即查看音頻文件是否已由錯誤的編碼器處理,儘管即使在 256Kbit/秒的情況下,好的編碼器(例如 Apple AAC)通常幾乎不可能以這種方式檢測到,但 auCDtect 也會將它們顯示為 CDDA。


要查看它使用了哪些共享庫,您可以通過ldd /path/to/binary. 它不會讓您了解它需要哪些版本的庫。

引用自:https://unix.stackexchange.com/questions/668275