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

나는 기억할 수 있는 한 오랫동안 와인 아래에서 auCDtect를 사용해 왔습니다.

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

당신은 또한 고려할 수 있습니다https://github.com/alexkay/spek파형을 시각적 형태로 표시합니다. 오디오 파일이 불량 인코더에 의해 처리되었는지 즉시 확인할 수 있습니다. 비록 좋은 인코더(예: Apple AAC, 심지어 256Kbit/sec)는 일반적으로 이런 방식으로 감지하는 것이 거의 불가능하지만 auCDtect는 해당 인코더를 CDDA 로 표시합니다.


어떤 공유 라이브러리를 사용하는지 보려면 이를 실행할 수 있습니다 ldd /path/to/binary. 필요한 라이브러리 버전은 알려주지 않습니다.

답변2

제가 ldd /usr/local/bin/aucdtect사용한 라이브러리 aucdtect(주로 libc 및 libm)를 찾아 NAS에서 복사한 후 동일한 디렉터리에 배치 aucdtect하고 설정한 LD_LIBRARY_PATH적이 있습니다 . 이 방법을 사용하여 가상 머신에서 실행할 /usr/local/bin수 있었습니다 . aucdtect하지만 winemacOS에서 사용하는 것이 가상머신에서 사용하는 것보다 거의 3배 빨라서(샘플 크기=1) 결국 사용하게 되었습니다 wine.

관련 정보