答案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 驱动程序上。