intel / libyami-utils

Libyami Utilities
Apache License 2.0
24 stars 45 forks source link

[regression] yamidecode Segmentation Fault since 52fe395427b3 #94

Closed uartie closed 7 years ago

uartie commented 7 years ago

yamidecode produces segfault for any input stream since commit:

52fe395427b3 - 2017-05-12 12:04:45 +0800 - wudping - vp8dec: enable svc-t decoding

Starting program: /opt/media/install/bin/yamidecode -i /opt/media/src/media_smoke/media_streams/decodebitstreams/JPEG_RefCompare/010309_0800_4680_nshs.jpg -m 0 -f I420
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff5c246ad in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
(gdb) bt full
#0  0x00007ffff5c246ad in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
No symbol table info available.
#1  0x00007ffff5c84529 in std::string::assign(std::string const&) () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
No symbol table info available.
#2  0x00000000004056c9 in operator= (__str="./", this=0x7fffffffe070) at /usr/include/c++/4.8/bits/basic_string.h:547
No locals.
#3  processCmdLine (argc=7, argv=<optimized out>, parameters=parameters@entry=0x7fffffffe050) at decodehelp.cpp:144
        option_index = 32767
        long_opts = {{name = 0x414220 "help", has_arg = 0, flag = 0x0, val = 104}, {name = 0x414225 "capi", has_arg = 0, flag = 0x0, val = 0}, {name = 0x41422a "temporal-layer", has_arg = 1, flag = 0x0, val = 0}, {name = 0x0, 
            has_arg = 0, flag = 0x0, val = 0}}
        opt = <optimized out>
        isSetFourcc = true
        outputFile = "./"
        width = -8144
        height = 32767
#4  0x0000000000404d41 in DecodeTest::init (this=this@entry=0x7fffffffe020, argc=<optimized out>, argv=<optimized out>) at decode.cpp:60
No locals.
#5  0x0000000000404180 in main (argc=<optimized out>, argv=<optimized out>) at decode.cpp:105
        decode = {m_output = std::tr1::shared_ptr (empty) 0x0, m_nativeDisplay = std::tr1::shared_ptr (empty) 0x0, m_vppInput = std::tr1::shared_ptr (empty) 0x0, m_params = {
            inputFile = 0x7fffffffe46d "/opt/media/src/media_smoke/media_streams/decodebitstreams/JPEG_RefCompare/010309_0800_4680_nshs.jpg", width = 0, height = 0, renderMode = 0, waitBeforeQuit = 1, renderFrames = 4294967295, 
            renderFourcc = 808596553, outputFile = <error reading variable: Cannot access memory at address 0xffffffffffffffe8>, useCAPI = false, temporalLayer = 0, spacialLayer = 0, qualityLayer = 0}}

I have only reproduced on Ubuntu Trusty.

wudping commented 7 years ago

pull-request 95 will fix this issue. It depends on the Version of GCC.

wudping commented 7 years ago

Please help to double check it, Thanks.

uartie commented 7 years ago

The patch fixes it for me

xuguangxin commented 7 years ago

haha, sorry for this. I need to wait for the yami-utils result before we push it. But this proves the smoking test is very valuable.

xuguangxin commented 7 years ago

thanks U.Artie for report this

wudping commented 7 years ago

Thanks @uartie and @xuguangxin for this. This is my fault. GCC-6.02 I use is okay. But GCC-4.8, will be failed.

uartie commented 7 years ago

haha, sorry for this. I need to wait for the yami-utils result before we push it. But this proves the smoking test is very valuable.

Unfortunately the pull-request checks are only doing compilation at the moment. The tests don't get executed until post-merge. Hopefully we can get test execution enabled for pull-requests soon ;)