daemon: systematic crash on fedora 20 when switching to high resolution camera during call
Issue generated from Tuleap's migration script. Originally submitted by: Stepan Salenikovich (ssalenik)
Fedora 20 system
to reproduce:
- have normal resolution camera selected as default (1280x720)
- have second camera set to high resolution (2304x1536)
- start call
- during call switch cameras
- a frame or two appear from the 2nd camera and then the daemon segfaults in the same place
[1446218531.846| 2613|media\_decoder.cpp:85 ] Trying to open device dummyFilename with format sdp
[1446218531.846| 2613|media\_decoder.cpp:97 ] Using format sdp
[1446218531.846| 2613|media\_decoder.cpp:213 ] Finding stream info
[1446218531.856| 2547|sipvoiplink.cpp:777 ] Sending video keyframe request via SIP INFO
[1446218531.856| 2547|sipvoiplink.cpp:1137 ] [INVITE:0xcdd6a8] tsx\_role=0, tsx\_state=1, ev\_type=5, tsx\_state\_type=2
[1446218531.856| 2547|sipvoiplink.cpp:1155 ] [INVITE:0xcdd6a8] RX SIP method 6 (INFO)
[1446218531.856| 2547|sipvoiplink.cpp:1026 ] handling picture fast update request
[1446218531.856| 2547|sipvoiplink.cpp:1137 ] [INVITE:0xcdd6a8] tsx\_role=1, tsx\_state=4, ev\_type=5, tsx\_state\_type=2
[1446218531.858| 2578|sips\_transport\_ice.cpp:731] TLS(ice): rx 498B
[1446218531.867| 2547|sipvoiplink.cpp:1137 ] [INVITE:0xcdd6a8] tsx\_role=1, tsx\_state=6, ev\_type=5, tsx\_state\_type=1
[1446218531.867| 2547|sipvoiplink.cpp:1137 ] [INVITE:0xcdd6a8] tsx\_role=0, tsx\_state=4, ev\_type=5, tsx\_state\_type=3
[1446218531.877| 2547|sipvoiplink.cpp:1137 ] [INVITE:0xcdd6a8] tsx\_role=0, tsx\_state=6, ev\_type=5, tsx\_state\_type=1
[1446218532.212| 2584|video\_input.cpp:173 ] created decoder with video params : size=2304X1536, fps=2.000000
[1446218532.212| 2584|sinkclient.cpp:360 ] Start sink , size=2304x1536, mixer=0
[1446218532.213| 2584|sinkclient.cpp:177 ] ShmHolder[Ring\_shm\_2547\_0]: new sizes: f=14155776, a=28311655
[1446218532.228| 2584|video\_sender.cpp:66 ] keyframe requested
[swscaler @ 0x7fffa00031c0] Warning: data is not aligned! This can lead to a speedloss
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffd9ffb700 (LWP 2584)]
0x00007ffff448d5a0 in yuv2yuvX\_MMXEXT () from /lib64/libswscale.so.2
(gdb) bt full
\#0 0x00007ffff448d5a0 in yuv2yuvX\_MMXEXT () from /lib64/libswscale.so.2
No symbol table info available.
\#1 0x00007ffff4490988 in yuv2yuvX\_sse3 () from /lib64/libswscale.so.2
No symbol table info available.
\#2 0x00007ffff447531f in swscale () from /lib64/libswscale.so.2
No symbol table info available.
\#3 0x00007ffff44763fd in sws\_scale () from /lib64/libswscale.so.2
No symbol table info available.
\#4 0x000000000055ce64 in ring::video::VideoScaler::scale\_with\_aspect (this=this@entry=0xb742f8, input=..., output=...) at video\_scaler.cpp:70
No locals.
\#5 0x0000000000541f08 in ring::MediaEncoder::encode (this=0xb742d0, input=..., is\_keyframe=, frame\_number=0) at media\_encoder.cpp:261
pkt = {buf = 0x6c0000 , pts = 140735877745344, dts = 11732408, data = 0x7fffa0002c30 "\\220Nz", size = 13559240, stream\_index = 0, flags = 5591615,
side\_data = 0xffffffffffffffff, side\_data\_elems = 0, duration = 0, destruct = 0xcee5d8, priv = 0xb8a9eddad0437c00, pos = 140735877753904, convergence\_duration = 140735877747056}
got\_packet = 32767
ret =
\#6 0x000000000055d0e8 in ring::video::VideoSender::encodeAndSendVideo (this=0xb73aa0, input\_frame=...) at video\_sender.cpp:70
is\_keyframe =
\#7 0x00000000004a1700 in notify (data=std::shared\_ptr (count 1, weak 0) 0x7fffa0002c30, this=0xcee558) at video\_base.h:94
observer =
Python Exception list index out of range:
\_\_for\_range = std::set with 2 elements
\#8 ring::video::VideoGenerator::publishFrame (this=0xcee558) at video\_base.cpp:59
lk = {\_M\_device = @0xcee5d8}
\#9 0x00000000004ae405 in ring::video::VideoInput::captureFrame (this=this@entry=0xcee558) at video\_input.cpp:125
pkt = {packet\_ = 0x7fffa00023c0}
ret =
\#10 0x00000000004afeb7 in ring::video::VideoInput::process (this=0xcee558) at video\_input.cpp:77
No locals.
\#11 0x00000000004dfb68 in ring::ThreadLoop::mainloop(std::thread::id&, std::function, std::function, std::function) (this=0xcee690, tid=..., setup=..., process=..., cleanup=...)
at threadloop.cpp:36
No locals.
\#12 0x00000000004e0295 in operator(), std::function, std::function, std::function, void> (\_\_object=, this=)
at /usr/include/c++/4.8.3/functional:601
No locals.
\#13 \_M\_invoke<0ul, 1ul, 2ul, 3ul, 4ul> (this=) at /usr/include/c++/4.8.3/functional:1732
No locals.
\#14 operator() (this=) at /usr/include/c++/4.8.3/functional:1720
No locals.
\#15 std::thread::\_Impl, std::function, std::function)> (ring::ThreadLoop\*, std::reference\_wrapper, std::function, std::function, std::function)> >::\_M\_run() (this=) at /usr/include/c++/4.8.3/thread:115
No locals.
\#16 0x00007ffff3b90600 in std::(anonymous namespace)::execute\_native\_thread\_routine (\_\_p=) at ../../../../../libstdc++-v3/src/c++11/thread.cc:84
\_\_t =
\_\_local = warning: RTTI symbol not found for class 'std::\_Sp\_counted\_ptr\_inplace, std::function, std::function)> (ring::ThreadLoop\*, std::reference\_wrapper, std::function, std::function, std::function)> >, std::allocator, std::function, std::function)> (ring::ThreadLoop\*, std::reference\_wrapper, std::function, std::function, std::function)> > >, (\_\_gnu\_cxx::\_Lock\_policy)2>'
warning: RTTI symbol not found for class 'std::\_Sp\_counted\_ptr\_inplace, std::function, std::function)> (ring::ThreadLoop\*, std::reference\_wrapper, std::function, std::function, std::function)> >, std::allocator, std::function, std::function)> (ring::ThreadLoop\*, std::reference\_wrapper, std::function, std::function, std::function)> > >, (\_\_gnu\_cxx::\_Lock\_policy)2>'
std::shared\_ptr (count 1, weak 0) 0x0
\#17 0x00007ffff5d0aee5 in start\_thread (arg=0x7fffd9ffb700) at pthread\_create.c:309
\_\_res =
pd = 0x7fffd9ffb700
now =
unwind\_buf = {cancel\_jmp\_buf = {{jmp\_buf = {140736850802432, 4133927409097449645, 1, 0, 140736850803136, 140736850802432, -4133993381099396947, -4133949650009120595}, mask\_was\_saved = 0}}, priv = {
pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
not\_first\_call =
pagesize\_m1 =
---Type to continue, or q to quit---
sp =
freesize =
\#18 0x00007ffff32f4d1d in clone () at ../sysdeps/unix/sysv/linux/x86\_64/clone.S:111
No locals.