답변1
VLC가 비디오 디코딩에 VDAPU를 사용하려고 시도하고 분할 오류가 발생했기 때문에 이 문제가 발생했습니다. 아마도 이것은 실제로 오픈 소스 Radeon 드라이버의 버그일 것입니다. 그러나 간단히 하드웨어 비디오 디코딩을 비활성화하여 이 문제를 해결할 수 있었습니다. 설정은 다소 묻혀 있습니다. VLC를 열고 도구->기본 설정->입력/코덱으로 이동하여 하드웨어 가속 디코딩을 비활성화로 설정하면 됩니다.
이 방법으로 특정 문제가 해결되지 않는 경우 다음 단계를 실행하여 VDAPU에 문제가 있다는 것을 알아낼 수 있었습니다.
ulimit -c unlimited
Ubuntu가 실제로 코어 덤프를 생성하도록 하려면vlc
같은 터미널에서- 세그폴트를 기다립니다
gdb `which vlc`
core core
실제로 호출되는 코어 파일을 로드합니다.core
bt
이로 인해 다음과 같은 결과가 나왔습니다.#0 0x00007fe128b4118e in llvm::SmallVectorTemplateBase<llvm::cl::parser<llvm::ScheduleDAGInstrs* (*)(llvm::MachineSchedContext*)>::OptionInfo, false>::grow(unsigned long) () from /usr/lib/x86_64-linux-gnu/libLLVM-4.0.so.1 #1 0x00007fe128b4125e in ?? () from /usr/lib/x86_64-linux-gnu/libLLVM-4.0.so.1 #2 0x00007fe1067fab0a in ?? () from /usr/lib/x86_64-linux-gnu/libLLVM-3.8.so.1 #3 0x00007fe16555b4ea in call_init (l=<optimized out>, argc=argc@entry=2, argv=argv@entry=0x7ffecd92f6b8, env=env@entry=0x7fe138050690) at dl-init.c:72 #4 0x00007fe16555b5fb in call_init (env=0x7fe138050690, argv=0x7ffecd92f6b8, argc=2, l=<optimized out>) at dl-init.c:30 #5 _dl_init (main_map=main_map@entry=0x7fe10c0172c0, argc=2, argv=0x7ffecd92f6b8, env=0x7fe138050690) at dl-init.c:120 #6 0x00007fe165560712 in dl_open_worker (a=a@entry=0x7fe121f082c0) at dl-open.c:575 #7 0x00007fe16555b394 in _dl_catch_error ( objname=objname@entry=0x7fe121f082b0, errstring=errstring@entry=0x7fe121f082b8, mallocedp=mallocedp@entry=0x7fe121f082af, operate=operate@entry=0x7fe165560300 <dl_open_worker>, args=args@entry=0x7fe121f082c0) at dl-error.c:187 #8 0x00007fe16555fbd9 in _dl_open ( file=0x7fe121f08540 "${ORIGIN}/vdpau/libvdpau_radeonsi.so.1", mode=-2147483390, caller_dlopen=0x7fe1095a46cc, nsid=-2, ---Type <return> to continue, or q <return> to quit---
#8의 항목을 보면 문제가 Radeon 드라이버에 있다는 것을 알 수 있었습니다.