Control: reassign 917269 ffmpegthumbs 4:17.08.3-1
Dear Maintainer, hello Braun Gábor, some informations on where and how to retrieve the debug symbol packages is described in [1]. Maybe with them you can confirm my findings which are just based on the offsets of the function addresses. To reproduce one seems to need a video file with less than 5 MB, or it will not be taken as source for the folder thumbnail, which contains that video [2]. With that information you may be able to identify the causing file. Even worse it seems it needs that special video file as I did not receive the crash. But I guess this crash happens in moviedecoder.cpp, line 202, because "m_pFormatContext->streams[m_VideoStream]" contains for some reason an invalid pointer. Maybe you can also add the output of the "mediainfo" tool to that bug, if the file causing it got identified. Kind regards, Bernhard [1] https://wiki.debian.org/HowToGetABacktrace [2] https://bugs.kde.org/show_bug.cgi?id=238690 (gdb) bt #0 0x00007f4e4a6654f4 in ffmpegthumbnailer::MovieDecoder::seek (this=this@entry=0x7fffa2933d00, timeInSeconds=<optimized out>) at ./ffmpegthumbnailer/moviedecoder.cpp:202 #1 0x00007f4e4a66720a in ffmpegthumbnailer::VideoThumbnailer::generateThumbnail (this=this@entry=0x555aa55aae58, videoFile="/home/benutzer/test/test/test2.mov", imageWriter=..., image=...) at ./ffmpegthumbnailer/videothumbnailer.cpp:105 #2 0x00007f4e4a667359 in ffmpegthumbnailer::VideoThumbnailer::generateThumbnail (this=this@entry=0x555aa55aae58, videoFile="/home/benutzer/test/test/test2.mov", image=...) at ./ffmpegthumbnailer/videothumbnailer.cpp:141 #3 0x00007f4e4a664793 in FFMpegThumbnailer::create (this=0x555aa55aae40, path="/home/benutzer/test/test/test2.mov", width=<optimized out>, img=...) at ./ffmpegthumbnailer.cpp:46 #4 0x00007f4e5c0ade80 in ThumbnailProtocol::createSubThumbnail (this=this@entry=0x7fffa29343c0, thumbnail=..., filePath="/home/benutzer/test/test/test2.mov", segmentWidth=segmentWidth@entry=108, segmentHeight=segmentHeight@entry=68) at ./thumbnail/thumbnail.cpp:719 #5 0x00007f4e5c0ae458 in ThumbnailProtocol::drawSubThumbnail (this=this@entry=0x7fffa29343c0, p=..., filePath="/home/benutzer/test/test/test2.mov", width=width@entry=108, height=height@entry=68, xPos=xPos@entry=128, yPos=76, frameWidth=3) at ./thumbnail/thumbnail.cpp:751 #6 0x00007f4e5c0aeb30 in ThumbnailProtocol::thumbForDirectory (this=this@entry=0x7fffa29343c0, directory="thumbnail:/home/benutzer/test/test") at ./thumbnail/thumbnail.cpp:557 #7 0x00007f4e5c0b0041 in ThumbnailProtocol::get (this=0x7fffa29343c0, url="thumbnail:/home/benutzer/test/test") at ./thumbnail/thumbnail.cpp:225 #8 0x00007f4e57135df6 in KIO::SlaveBase::dispatch (this=0x7fffa29343c0, command=67, data="\000\000\000\"thumbnail:/home/benutzer/test/test" = {...}) at ./src/core/slavebase.cpp:1119 #9 0x00007f4e57131196 in KIO::SlaveBase::dispatchLoop (this=this@entry=0x7fffa29343c0) at ./src/core/slavebase.cpp:318 #10 0x00007f4e5c0ad08d in kdemain (argc=<optimized out>, argv=<optimized out>) at ./thumbnail/thumbnail.cpp:130 #11 0x0000555aa4fc7e1c in launch (argc=4, _name=0x555aa5380d68 "/usr/lib/x86_64-linux-gnu/qt5/plugins/kf5/kio/thumbnail.so", args=<optimized out>, cwd=<optimized out>, envc=0, envs=<optimized out>, reset_env=false, tty=0x0, avoid_loops=false, startup_id_str=0x555aa4fcb187 "0") at ./src/kdeinit/kinit.cpp:706 #12 0x0000555aa4fc8eea in handle_launcher_request (sock=8, who=<optimized out>) at ./src/kdeinit/kinit.cpp:1146 #13 0x0000555aa4fc98fb in handle_requests (waitForPid=0) at ./src/kdeinit/kinit.cpp:1339 #14 0x0000555aa4fc4645 in main (argc=argc@entry=5, argv=argv@entry=0x7fffa2934bd8) at ./src/kdeinit/kinit.cpp:1785 #15 0x00007f4e5b26409b in __libc_start_main (main=0x555aa4fc3c70 <main(int, char**)>, argc=5, argv=0x7fffa2934bd8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffa2934bc8) at ../csu/libc-start.c:308 #16 0x0000555aa4fc52ca in _start () at ./src/kdeinit/kinit.cpp:802 (gdb) disassemble /m 0x00007f4e4a665490,0x00007f4e4a665510 Dump of assembler code from 0x7f4e4a665490 to 0x7f4e4a665510: ... 198 } 199 200 int ret = av_seek_frame(m_pFormatContext, -1, timestamp, 0); 0x00007f4e4a6654b8 <ffmpegthumbnailer::MovieDecoder::seek(int)+40>: mov 0x8(%rdi),%rdi 0x00007f4e4a6654c3 <ffmpegthumbnailer::MovieDecoder::seek(int)+51>: mov $0x0,%edx 0x00007f4e4a6654c8 <ffmpegthumbnailer::MovieDecoder::seek(int)+56>: mov $0xffffffff,%esi 0x00007f4e4a6654cd <ffmpegthumbnailer::MovieDecoder::seek(int)+61>: test %rax,%rax 0x00007f4e4a6654d0 <ffmpegthumbnailer::MovieDecoder::seek(int)+64>: cmovns %rax,%rdx 0x00007f4e4a6654d4 <ffmpegthumbnailer::MovieDecoder::seek(int)+68>: xor %ecx,%ecx 0x00007f4e4a6654d6 <ffmpegthumbnailer::MovieDecoder::seek(int)+70>: callq 0x7f4e4a664280 <av_seek_frame@plt> 201 if (ret >= 0) { 0x00007f4e4a6654db <ffmpegthumbnailer::MovieDecoder::seek(int)+75>: test %eax,%eax 0x00007f4e4a6654dd <ffmpegthumbnailer::MovieDecoder::seek(int)+77>: js 0x7f4e4a66555a <ffmpegthumbnailer::MovieDecoder::seek(int)+202> 202 avcodec_flush_buffers(m_pFormatContext->streams[m_VideoStream]->codec); 0x00007f4e4a6654df <ffmpegthumbnailer::MovieDecoder::seek(int)+79>: mov 0x8(%rbx),%rax 0x00007f4e4a6654e3 <ffmpegthumbnailer::MovieDecoder::seek(int)+83>: movslq (%rbx),%rdx 0x00007f4e4a6654e6 <ffmpegthumbnailer::MovieDecoder::seek(int)+86>: mov $0xc8,%r12d 0x00007f4e4a6654ec <ffmpegthumbnailer::MovieDecoder::seek(int)+92>: mov 0x30(%rax),%rax 0x00007f4e4a6654f0 <ffmpegthumbnailer::MovieDecoder::seek(int)+96>: mov (%rax,%rdx,8),%rax => 0x00007f4e4a6654f4 <ffmpegthumbnailer::MovieDecoder::seek(int)+100>: mov 0x8(%rax),%rdi 0x00007f4e4a6654f8 <ffmpegthumbnailer::MovieDecoder::seek(int)+104>: callq 0x7f4e4a664130 <avcodec_flush_buffers@plt> 0x00007f4e4a6654fd <ffmpegthumbnailer::MovieDecoder::seek(int)+109>: nopl (%rax) 203 } else { (gdb) print/x $rax $3 = 0x555aa5ba19c0 (gdb) print m_VideoStream $6 = 0 (gdb) print m_pFormatContext->streams[m_VideoStream] $9 = (AVStream *) 0x555aa5ba19c0 (gdb) print m_pFormatContext->streams[m_VideoStream]->codec $10 = (AVCodecContext *) 0x555aa56352c0
[KCrash Handler] #6 0x00007fc5632d44f4 in ?? () from /usr/lib/x86_64-linux-gnu/qt5/plugins/ffmpegthumbs.so #7 0x00007fc5632d620a in ?? () from /usr/lib/x86_64-linux-gnu/qt5/plugins/ffmpegthumbs.so #8 0x00007fc5632d6359 in ?? () from /usr/lib/x86_64-linux-gnu/qt5/plugins/ffmpegthumbs.so #9 0x00007fc5632d3793 in ?? () from /usr/lib/x86_64-linux-gnu/qt5/plugins/ffmpegthumbs.so #10 0x00007fc57ae53e80 in ?? () from /usr/lib/x86_64-linux-gnu/qt5/plugins/kf5/kio/thumbnail.so #11 0x00007fc57ae54458 in ?? () from /usr/lib/x86_64-linux-gnu/qt5/plugins/kf5/kio/thumbnail.so #12 0x00007fc57ae54b30 in ?? () from /usr/lib/x86_64-linux-gnu/qt5/plugins/kf5/kio/thumbnail.so #13 0x00007fc57ae56041 in ?? () from /usr/lib/x86_64-linux-gnu/qt5/plugins/kf5/kio/thumbnail.so #14 0x00007fc575cdedf6 in KIO::SlaveBase::dispatch(int, QByteArray const&) () from /usr/lib/x86_64-linux-gnu/libKF5KIOCore.so.5 #15 0x00007fc575cda196 in KIO::SlaveBase::dispatchLoop() () from /usr/lib/x86_64-linux-gnu/libKF5KIOCore.so.5 #16 0x00007fc57ae5308d in kdemain () from /usr/lib/x86_64-linux-gnu/qt5/plugins/kf5/kio/thumbnail.so #17 0x000056107a404e1c in ?? () #18 0x000056107a405eea in ?? () #19 0x000056107a4068fb in ?? () #20 0x000056107a401645 in ?? () #21 0x00007fc579df309b in __libc_start_main () from /lib/x86_64-linux-gnu/libc.so.6 #22 0x000056107a4022ca in _start () ############### # Buster amd64 qemu VM apt update apt dist-upgrade apt install dpkg-dev devscripts systemd-coredump xserver-xorg sddm kde-standard dbus-x11 ffmpegthumbs htop mc gdb mediainfo apt install kinit-dbgsym libc6-dbg kio-extras-dbgsym libkf5kiocore5-dbgsym libqt5network5-dbgsym libqt5core5a-dbgsym ffmpegthumbs-dbgsym mkdir source/kio-extras/orig -p cd source/kio-extras/orig apt source kio-extras cd mkdir source/ffmpegthumbs/orig -p cd source/ffmpegthumbs/orig apt source ffmpegthumbs cd # put a mkv and some jpg to a folder below /home/benutzer/test/test # dolphin - /home/benutzer/test mkdir .gdb cd .gdb git clone https://github.com/Lekensteyn/qt5printers.git cat << EOF > qt5-gdbinit python import sys, os.path sys.path.insert(0, os.path.expanduser('~/.gdb')) import qt5printers qt5printers.register_printers(gdb.current_objfile()) end EOF cd .. gdb -q \ -ex 'set width 0' \ -ex 'set pagination off' \ -ex 'set backtrace past-main on' \ -ex 'directory /home/benutzer/source/kio-extras/orig/kio-extras-18.08.3' \ -ex 'directory /home/benutzer/source/ffmpegthumbs/orig/ffmpegthumbs-17.08.3' \ -ex 'source .gdb/qt5-gdbinit' \ --pid $(pidof thumbnail.so) print ThumbnailProtocol::createSubThumbnail+1693 b *$1 cont (gdb) bt #0 0x00007f4e5b32ecd6 in __GI_ppoll (fds=fds@entry=0x7fffa2934168, nfds=nfds@entry=1, timeout=<optimized out>, timeout@entry=0x0, sigmask=sigmask@entry=0x0) at ../sysdeps/unix/sysv/linux/ppoll.c:39 #1 0x00007f4e5b6b9d11 in ppoll (__ss=<optimized out>, __timeout=<optimized out>, __nfds=<optimized out>, __fds=<optimized out>) at /usr/include/x86_64-linux-gnu/bits/poll2.h:77 #2 qt_ppoll (timeout_ts=0x0, nfds=1, fds=0x7fffa2934168) at kernel/qcore_unix.cpp:132 #3 qt_ppoll (timeout_ts=0x0, nfds=1, fds=0x7fffa2934168) at kernel/qcore_unix.cpp:129 #4 qt_safe_poll (fds=fds@entry=0x7fffa2934168, nfds=nfds@entry=1, timeout_ts=<optimized out>) at kernel/qcore_unix.cpp:153 #5 0x00007f4e56f41312 in qt_poll_msecs (timeout=-1, nfds=1, fds=0x7fffa2934168) at ../../include/QtCore/5.11.2/QtCore/private/../../../../../src/corelib/kernel/qcore_unix_p.h:381 #6 QNativeSocketEnginePrivate::nativeSelect (this=this@entry=0x555aa5400fa0, timeout=timeout@entry=-1, checkRead=checkRead@entry=true, checkWrite=<optimized out>, selectForRead=0x7fffa2934266, selectForWrite=0x7fffa2934267) at socket/qnativesocketengine_unix.cpp:1428 #7 0x00007f4e56f3f089 in QNativeSocketEngine::waitForReadOrWrite (this=0x555aa53c01d0, readyToRead=<optimized out>, readyToWrite=<optimized out>, checkRead=<optimized out>, checkWrite=<optimized out>, msecs=-1, timedOut=0x0) at socket/qnativesocketengine.cpp:1120 #8 0x00007f4e56f2de2b in QAbstractSocket::waitForReadyRead (this=0x555aa5403a60, msecs=-1) at ../../include/QtCore/5.11.2/QtCore/private/../../../../../src/corelib/tools/qringbuffer_p.h:218 #9 0x00007f4e570e6732 in KIO::ConnectionBackend::waitForIncomingTask (this=0x555aa54075e0, ms=-1) at ./src/core/connectionbackend.cpp:206 #10 0x00007f4e570e76d5 in KIO::Connection::waitForIncomingTask (this=<optimized out>, ms=ms@entry=-1) at ./src/core/connection.cpp:204 #11 0x00007f4e57130eaf in KIO::SlaveBase::dispatchLoop (this=this@entry=0x7fffa29343c0) at ./src/core/slavebase.cpp:308 #12 0x00007f4e5c0ad08d in kdemain (argc=<optimized out>, argv=<optimized out>) at ./thumbnail/thumbnail.cpp:130 #13 0x0000555aa4fc7e1c in launch (argc=4, _name=0x555aa5380d68 "/usr/lib/x86_64-linux-gnu/qt5/plugins/kf5/kio/thumbnail.so", args=<optimized out>, cwd=<optimized out>, envc=0, envs=<optimized out>, reset_env=false, tty=0x0, avoid_loops=false, startup_id_str=0x555aa4fcb187 "0") at ./src/kdeinit/kinit.cpp:706 #14 0x0000555aa4fc8eea in handle_launcher_request (sock=8, who=<optimized out>) at ./src/kdeinit/kinit.cpp:1146 #15 0x0000555aa4fc98fb in handle_requests (waitForPid=0) at ./src/kdeinit/kinit.cpp:1339 #16 0x0000555aa4fc4645 in main (argc=argc@entry=5, argv=argv@entry=0x7fffa2934bd8) at ./src/kdeinit/kinit.cpp:1785 #17 0x00007f4e5b26409b in __libc_start_main (main=0x555aa4fc3c70 <main(int, char**)>, argc=5, argv=0x7fffa2934bd8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffa2934bc8) at ../csu/libc-start.c:308 #18 0x0000555aa4fc52ca in _start () at ./src/kdeinit/kinit.cpp:802 0x00007f4e4a6654f4 <ffmpegthumbnailer::MovieDecoder::seek(int)+100>: mov 0x8(%rax),%rdi 0x00007f4e4a667205 <ffmpegthumbnailer::VideoThumbnailer::generateThumbnail(QString const&, ffmpegthumbnailer::ImageWriter&, QImage&)+197>: callq 0x7f4e4a665490 <ffmpegthumbnailer::MovieDecoder::seek(int)> 0x00007f4e4a66720a <ffmpegthumbnailer::VideoThumbnailer::generateThumbnail(QString const&, ffmpegthumbnailer::ImageWriter&, QImage&)+202>: jmp 0x7f4e4a667267 <ffmpegthumbnailer::VideoThumbnailer::generateThumbnail(QString const&, ffmpegthumbnailer::ImageWriter&, QImage&)+295> 0x00007f4e4a667354 <ffmpegthumbnailer::VideoThumbnailer::generateThumbnail(QString const&, QImage&)+52>: callq 0x7f4e4a667140 <ffmpegthumbnailer::VideoThumbnailer::generateThumbnail(QString const&, ffmpegthumbnailer::ImageWriter&, QImage&)> 0x00007f4e4a667359 <ffmpegthumbnailer::VideoThumbnailer::generateThumbnail(QString const&, QImage&)+57>: mov (%rbx),%rax 0x00007f4e4a66478e <FFMpegThumbnailer::create(QString const&, int, int, QImage&)+46>: callq 0x7f4e4a667320 <ffmpegthumbnailer::VideoThumbnailer::generateThumbnail(QString const&, QImage&)> 0x00007f4e4a664793 <FFMpegThumbnailer::create(QString const&, int, int, QImage&)+51>: mov %rbp,%rdi 0x00007f4e5c0ade7d <ThumbnailProtocol::createSubThumbnail(QImage&, QString const&, int, int)+1693>: callq *0x10(%rax) 0x00007f4e5c0ade80 <ThumbnailProtocol::createSubThumbnail(QImage&, QString const&, int, int)+1696>: test %al,%al 0x00007f4e5c0ae453 <ThumbnailProtocol::drawSubThumbnail(QPainter&, QString const&, int, int, int, int, int)+83>: callq 0x7f4e5c0ad7e0 <ThumbnailProtocol::createSubThumbnail(QImage&, QString const&, int, int)> 0x00007f4e5c0ae458 <ThumbnailProtocol::drawSubThumbnail(QPainter&, QString const&, int, int, int, int, int)+88>: mov %eax,%r13d 0x00007f4e5c0aeb2b <ThumbnailProtocol::thumbForDirectory(QUrl const&)+1387>: callq 0x7f4e5c0ae400 <ThumbnailProtocol::drawSubThumbnail(QPainter&, QString const&, int, int, int, int, int)> 0x00007f4e5c0aeb30 <ThumbnailProtocol::thumbForDirectory(QUrl const&)+1392>: mov 0x140(%rsp),%rdi 0x00007f4e5c0b003c <ThumbnailProtocol::get(QUrl const&)+2860>: callq 0x7f4e5c0ae5c0 <ThumbnailProtocol::thumbForDirectory(QUrl const&)> 0x00007f4e5c0b0041 <ThumbnailProtocol::get(QUrl const&)+2865>: mov 0xb8(%rsp),%rdx 0x00007f4e57135df3 <KIO::SlaveBase::dispatch(int, QByteArray const&)+2115>: callq *0x30(%rax) 0x00007f4e57135df6 <KIO::SlaveBase::dispatch(int, QByteArray const&)+2118>: mov 0x20(%rbp),%rdi 0x00007f4e57131190 <KIO::SlaveBase::dispatchLoop()+864>: callq *0xe8(%rcx) 0x00007f4e57131196 <KIO::SlaveBase::dispatchLoop()+870>: jmpq 0x7f4e57130f00 <KIO::SlaveBase::dispatchLoop()+208> (gdb) bt #0 0x00007f4e4a6654f4 in ffmpegthumbnailer::MovieDecoder::seek (this=this@entry=0x7fffa2933d00, timeInSeconds=<optimized out>) at ./ffmpegthumbnailer/moviedecoder.cpp:202 #1 0x00007f4e4a66720a in ffmpegthumbnailer::VideoThumbnailer::generateThumbnail (this=this@entry=0x555aa55aae58, videoFile="/home/benutzer/test/test/test2.mov", imageWriter=..., image=...) at ./ffmpegthumbnailer/videothumbnailer.cpp:105 #2 0x00007f4e4a667359 in ffmpegthumbnailer::VideoThumbnailer::generateThumbnail (this=this@entry=0x555aa55aae58, videoFile="/home/benutzer/test/test/test2.mov", image=...) at ./ffmpegthumbnailer/videothumbnailer.cpp:141 #3 0x00007f4e4a664793 in FFMpegThumbnailer::create (this=0x555aa55aae40, path="/home/benutzer/test/test/test2.mov", width=<optimized out>, img=...) at ./ffmpegthumbnailer.cpp:46 #4 0x00007f4e5c0ade80 in ThumbnailProtocol::createSubThumbnail (this=this@entry=0x7fffa29343c0, thumbnail=..., filePath="/home/benutzer/test/test/test2.mov", segmentWidth=segmentWidth@entry=108, segmentHeight=segmentHeight@entry=68) at ./thumbnail/thumbnail.cpp:719 #5 0x00007f4e5c0ae458 in ThumbnailProtocol::drawSubThumbnail (this=this@entry=0x7fffa29343c0, p=..., filePath="/home/benutzer/test/test/test2.mov", width=width@entry=108, height=height@entry=68, xPos=xPos@entry=128, yPos=76, frameWidth=3) at ./thumbnail/thumbnail.cpp:751 #6 0x00007f4e5c0aeb30 in ThumbnailProtocol::thumbForDirectory (this=this@entry=0x7fffa29343c0, directory="thumbnail:/home/benutzer/test/test") at ./thumbnail/thumbnail.cpp:557 #7 0x00007f4e5c0b0041 in ThumbnailProtocol::get (this=0x7fffa29343c0, url="thumbnail:/home/benutzer/test/test") at ./thumbnail/thumbnail.cpp:225 #8 0x00007f4e57135df6 in KIO::SlaveBase::dispatch (this=0x7fffa29343c0, command=67, data="\000\000\000\"thumbnail:/home/benutzer/test/test" = {...}) at ./src/core/slavebase.cpp:1119 #9 0x00007f4e57131196 in KIO::SlaveBase::dispatchLoop (this=this@entry=0x7fffa29343c0) at ./src/core/slavebase.cpp:318 #10 0x00007f4e5c0ad08d in kdemain (argc=<optimized out>, argv=<optimized out>) at ./thumbnail/thumbnail.cpp:130 #11 0x0000555aa4fc7e1c in launch (argc=4, _name=0x555aa5380d68 "/usr/lib/x86_64-linux-gnu/qt5/plugins/kf5/kio/thumbnail.so", args=<optimized out>, cwd=<optimized out>, envc=0, envs=<optimized out>, reset_env=false, tty=0x0, avoid_loops=false, startup_id_str=0x555aa4fcb187 "0") at ./src/kdeinit/kinit.cpp:706 #12 0x0000555aa4fc8eea in handle_launcher_request (sock=8, who=<optimized out>) at ./src/kdeinit/kinit.cpp:1146 #13 0x0000555aa4fc98fb in handle_requests (waitForPid=0) at ./src/kdeinit/kinit.cpp:1339 #14 0x0000555aa4fc4645 in main (argc=argc@entry=5, argv=argv@entry=0x7fffa2934bd8) at ./src/kdeinit/kinit.cpp:1785 #15 0x00007f4e5b26409b in __libc_start_main (main=0x555aa4fc3c70 <main(int, char**)>, argc=5, argv=0x7fffa2934bd8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffa2934bc8) at ../csu/libc-start.c:308 #16 0x0000555aa4fc52ca in _start () at ./src/kdeinit/kinit.cpp:802 (gdb) print/x $rax $3 = 0x555aa5ba19c0 (gdb) print m_VideoStream $6 = 0 (gdb) print m_pFormatContext->streams[m_VideoStream] $9 = (AVStream *) 0x555aa5ba19c0 (gdb) print m_pFormatContext->streams[m_VideoStream]->codec $10 = (AVCodecContext *) 0x555aa56352c0 (gdb) disassemble /m 0x00007f4e4a665490,0x00007f4e4a665510 Dump of assembler code from 0x7f4e4a665490 to 0x7f4e4a665510: 189 { 0x00007f4e4a665490 <ffmpegthumbnailer::MovieDecoder::seek(int)+0>: push %r12 0x00007f4e4a665492 <ffmpegthumbnailer::MovieDecoder::seek(int)+2>: push %rbp 0x00007f4e4a665493 <ffmpegthumbnailer::MovieDecoder::seek(int)+3>: push %rbx 0x00007f4e4a665494 <ffmpegthumbnailer::MovieDecoder::seek(int)+4>: sub $0x40,%rsp 0x00007f4e4a665498 <ffmpegthumbnailer::MovieDecoder::seek(int)+8>: mov %fs:0x28,%rax 0x00007f4e4a6654a1 <ffmpegthumbnailer::MovieDecoder::seek(int)+17>: mov %rax,0x38(%rsp) 0x00007f4e4a6654a6 <ffmpegthumbnailer::MovieDecoder::seek(int)+22>: xor %eax,%eax 190 if (!m_AllowSeek) { 0x00007f4e4a6654a8 <ffmpegthumbnailer::MovieDecoder::seek(int)+24>: cmpb $0x0,0x41(%rdi) 0x00007f4e4a6654ac <ffmpegthumbnailer::MovieDecoder::seek(int)+28>: je 0x7f4e4a6655eb <ffmpegthumbnailer::MovieDecoder::seek(int)+347> 191 return; 192 } 193 194 qint64 timestamp = AV_TIME_BASE * static_cast<qint64>(timeInSeconds); 0x00007f4e4a6654b2 <ffmpegthumbnailer::MovieDecoder::seek(int)+34>: movslq %esi,%rax 0x00007f4e4a6654b5 <ffmpegthumbnailer::MovieDecoder::seek(int)+37>: mov %rdi,%rbx 0x00007f4e4a6654bc <ffmpegthumbnailer::MovieDecoder::seek(int)+44>: imul $0xf4240,%rax,%rax 195 196 if (timestamp < 0) { 197 timestamp = 0; 198 } 199 200 int ret = av_seek_frame(m_pFormatContext, -1, timestamp, 0); 0x00007f4e4a6654b8 <ffmpegthumbnailer::MovieDecoder::seek(int)+40>: mov 0x8(%rdi),%rdi 0x00007f4e4a6654c3 <ffmpegthumbnailer::MovieDecoder::seek(int)+51>: mov $0x0,%edx 0x00007f4e4a6654c8 <ffmpegthumbnailer::MovieDecoder::seek(int)+56>: mov $0xffffffff,%esi 0x00007f4e4a6654cd <ffmpegthumbnailer::MovieDecoder::seek(int)+61>: test %rax,%rax 0x00007f4e4a6654d0 <ffmpegthumbnailer::MovieDecoder::seek(int)+64>: cmovns %rax,%rdx 0x00007f4e4a6654d4 <ffmpegthumbnailer::MovieDecoder::seek(int)+68>: xor %ecx,%ecx 0x00007f4e4a6654d6 <ffmpegthumbnailer::MovieDecoder::seek(int)+70>: callq 0x7f4e4a664280 <av_seek_frame@plt> 201 if (ret >= 0) { 0x00007f4e4a6654db <ffmpegthumbnailer::MovieDecoder::seek(int)+75>: test %eax,%eax 0x00007f4e4a6654dd <ffmpegthumbnailer::MovieDecoder::seek(int)+77>: js 0x7f4e4a66555a <ffmpegthumbnailer::MovieDecoder::seek(int)+202> 202 avcodec_flush_buffers(m_pFormatContext->streams[m_VideoStream]->codec); 0x00007f4e4a6654df <ffmpegthumbnailer::MovieDecoder::seek(int)+79>: mov 0x8(%rbx),%rax 0x00007f4e4a6654e3 <ffmpegthumbnailer::MovieDecoder::seek(int)+83>: movslq (%rbx),%rdx 0x00007f4e4a6654e6 <ffmpegthumbnailer::MovieDecoder::seek(int)+86>: mov $0xc8,%r12d 0x00007f4e4a6654ec <ffmpegthumbnailer::MovieDecoder::seek(int)+92>: mov 0x30(%rax),%rax 0x00007f4e4a6654f0 <ffmpegthumbnailer::MovieDecoder::seek(int)+96>: mov (%rax,%rdx,8),%rax => 0x00007f4e4a6654f4 <ffmpegthumbnailer::MovieDecoder::seek(int)+100>: mov 0x8(%rax),%rdi 0x00007f4e4a6654f8 <ffmpegthumbnailer::MovieDecoder::seek(int)+104>: callq 0x7f4e4a664130 <avcodec_flush_buffers@plt> 0x00007f4e4a6654fd <ffmpegthumbnailer::MovieDecoder::seek(int)+109>: nopl (%rax) 203 } else { 204 qDebug() << "Seeking in video failed"; 205 return; 206 } 207 208 int keyFrameAttempts = 0; 209 bool gotFrame = 0; 210 211 do { 212 int count = 0; 0x00007f4e4a665500 <ffmpegthumbnailer::MovieDecoder::seek(int)+112>: xor %ebp,%ebp 0x00007f4e4a665502 <ffmpegthumbnailer::MovieDecoder::seek(int)+114>: jmp 0x7f4e4a665514 <ffmpegthumbnailer::MovieDecoder::seek(int)+132> 0x00007f4e4a665504 <ffmpegthumbnailer::MovieDecoder::seek(int)+116>: nopl 0x0(%rax) 213 gotFrame = 0;