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;


Reply via email to