FreeStreamer
FreeStreamer copied to clipboard
SIGSEGV errors in production
We still have a lot of 'SIGSEGV' errors on our production Environment : IOS 10.x - 11.x FreeStreamer version: 3.7.4
Perhaps related to #322 ?
You can find the different call stack of the crashs here :
astreamer::Audio_Queue::enqueueBuffer() audio_queue.cpp:486
astreamer::Audio_Queue::handleAudioPackets(unsigned long, unsigned long, void const*, AudioStreamPacketDescription*) audio_queue.cpp:361
astreamer::Audio_Stream::decodeSinglePacket(__CFRunLoopTimer*, void*) audio_stream.cpp:1659
__CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__
astreamer::Audio_Queue::enqueueBuffer() audio_queue.cpp:486
astreamer::Audio_Queue::handleAudioPackets(unsigned long, unsigned long, void const*, AudioStreamPacketDescription*) audio_queue.cpp:361
astreamer::Audio_Stream::decodeSinglePacket(__CFRunLoopTimer*, void*) audio_stream.cpp:1659
__CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__
astreamer::Audio_Stream::decodeSinglePacket(__CFRunLoopTimer*, void*) audio_stream.cpp:1667
__CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__
See 3dbe519f8f6845832790307b3a7793404f501abd
I wrote some very quick proof of concept code to pinpoint if the problem could be where I suspect - looks like there is a lingering decoder thread still in memory while the stream has been deleted.
Do you have any chance to test whether this would help / improve the situation? Unfortunately I have little time for investigating this and this change has potential for breaking things so testing feedback would be needed. At least unit tests seem still to run after this change.
The problem is that I was never able to obtain this crash myself on phone/simulator while testing .... All I can do is to push a new version hoping that it would fix the problem. I'll try to incorporate the new version, test a bit and if everything seems working I'll push it to production.
Yeah, i get a lot of these as well in production.
0 XXXXXX 0x100bbdfc8 astreamer::Audio_Queue::enqueueBuffer() (audio_queue.cpp:486)
1 XXXXXX 0x100bbde48 astreamer::Audio_Queue::handleAudioPackets(unsigned int, unsigned int, void const*, AudioStreamPacketDescription*) (audio_queue.cpp:363)
2 XXXXXX 0x100bc0d14 astreamer::Audio_Stream::decodeSinglePacket(__CFRunLoopTimer*, void*) (audio_stream.cpp:1665)
3 CoreFoundation 0x184973dc0 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 28
4 CoreFoundation 0x184973ae4 __CFRunLoopDoTimer + 864
5 CoreFoundation 0x1849732e4 __CFRunLoopDoTimers + 248
6 CoreFoundation 0x184970ecc __CFRunLoopRun + 1928
7 CoreFoundation 0x184890c58 CFRunLoopRunSpecific + 436
8 CoreFoundation 0x1848dfd54 CFRunLoopRun + 116
9 XXXXXX 0x100bbe1ec astreamer::Audio_Stream::decodeLoop(void*) (audio_stream.cpp:1737)
10 libsystem_pthread.dylib 0x1845f42b4 _pthread_body + 308
11 libsystem_pthread.dylib 0x1845f4180 _pthread_body + 310
12 libsystem_pthread.dylib 0x1845f2b74 thread_start + 4```
Did you tried it with a bad network connection? (you can simulate that with different tools)
I have the same problem. Can you tell me how to solve it? thank you