Skip to content

audio-resampler: Fix segfault when we can't output any frames

Sometimes the resampler has enough space to store all the incoming samples without outputting anything. When this happens, gst_audio_resampler_get_out_frames() returns 0.

In that case, the resampler should consume samples and just return. Otherwise, we get a segfault when gst_audio_resampler_resample() tries to resample into a NULL out pointer.

GST_DEBUG log
0:00:03.379241000 51998    0x10203ba40 LOG            audioresample gstaudioresample.c:871:gst_audio_resample_process:<audioresample0> Converted to buffer of 212 samples (1272 bytes) with timestamp 0:00:02.374580499, duration 0:00:00.004807256, offset 18446744073709551615, offset_end 18446744073709551615
0:00:03.379334000 51998    0x10203ba40 DEBUG          audioresample gstaudioresample.c:949:gst_audio_resample_transform:<audioresample0> input = samples [18446744073709551615, 18446744073709551615) = [2374646680, 2379459180) ns;  output = samples [18446744073709551615, 18446744073709551615) = [2374580499, 2379387755) ns
0:00:03.379428000 51998    0x1010ba180 LOG          audio-converter audio-converter.c:438:get_temp_samples: temp samples 0x1011ab800 212
0:00:03.379444000 51998    0x1010ba180 LOG          audio-converter audio-converter.c:462:do_unpack: unpack to tmp 0x1011ab800, 212
0:00:03.379457000 51998    0x1010ba180 LOG          audio-converter audio-converter.c:473:do_unpack: unpack 0x1011ab810, 0x1028cf090, 212
0:00:03.379468000 51998    0x1010ba180 LOG          audio-converter audio-converter.c:245:audio_chain_set_samples: set samples 0x1011ab800 212
0:00:03.379604000 51998    0x1010ba180 LOG          audio-converter audio-converter.c:438:get_temp_samples: temp samples 0x100f9d020 212
0:00:03.379570000 51998    0x10203ba40 LOG            audioresample gstaudioresample.c:476:gst_audio_resample_transform_size:<audioresample0> asked to transform size 1386 in direction SINK
0:00:03.379624000 51998    0x1010ba180 LOG          audio-converter audio-converter.c:523:do_mix: mix 0x1011ab800, 0x100f9d020, 212
0:00:03.379646000 51998    0x1010ba180 LOG          audio-converter audio-converter.c:245:audio_chain_set_samples: set samples 0x100f9d020 212
0:00:03.379657000 51998    0x10203ba40 LOG          audio-resampler audio-resampler.c:1664:gst_audio_resampler_get_out_frames: need 72 = 72 + 0 + 0, avail 303 = 72 + 231
0:00:03.379661000 51998    0x1010ba180 LOG          audio-converter audio-converter.c:583:do_quantize: quantize 0x100f9d020, 0x100f9d020 212
0:00:03.379719000 51998    0x1010ba180 LOG          audio-converter audio-converter.c:245:audio_chain_set_samples: set samples 0x100f9d020 212
0:00:03.379676000 51998    0x10203ba40 LOG          audio-resampler audio-resampler.c:1675:gst_audio_resampler_get_out_frames: out 212 = ((231 * 147 - 90) / 160) + 1
0:00:03.379732000 51998    0x1010ba180 LOG          audio-converter audio-converter.c:1278:converter_generic: pack 0x100f9d020, 0x700001397c20 212
0:00:03.379761000 51998    0x10203ba40 LOG            audioresample gstaudioresample.c:497:gst_audio_resample_transform_size:<audioresample0> transformed size 1386 to 1272
0:00:03.379792000 51998    0x10203ba40 LOG            audioresample gstaudioresample.c:891:gst_audio_resample_transform:<audioresample0> transforming buffer of 1386 bytes, ts 0:00:02.379316046, duration 0:00:00.004812500, offset -1, offset_end -1
0:00:03.379858000 51998    0x10203ba40 LOG          audio-resampler audio-resampler.c:1664:gst_audio_resampler_get_out_frames: need 72 = 72 + 0 + 0, avail 303 = 72 + 231
0:00:03.379877000 51998    0x10203ba40 LOG          audio-resampler audio-resampler.c:1675:gst_audio_resampler_get_out_frames: out 212 = ((231 * 147 - 90) / 160) + 1
0:00:03.379903000 51998    0x10203baa0 LOG            audioresample gstaudioresample.c:476:gst_audio_resample_transform_size:<audioresample1> asked to transform size 192 in direction SINK
--> 0:00:03.379950000 51998    0x10203baa0 LOG          audio-resampler audio-resampler.c:1664:gst_audio_resampler_get_out_frames: need 72 = 72 + 0 + 0, avail 67 = 35 + 32
--> 0:00:03.379931000 51998    0x10203ba40 LOG          audio-converter audio-converter.c:438:get_temp_samples: temp samples 0x101199000 231
--> 0:00:03.379966000 51998    0x10203baa0 LOG            audioresample gstaudioresample.c:497:gst_audio_resample_transform_size:<audioresample1> transformed size 192 to 0
0:00:03.380022000 51998    0x10203ba40 LOG          audio-converter audio-converter.c:462:do_unpack: unpack to tmp 0x101199000, 231
0:00:03.380057000 51998    0x10203baa0 LOG            audioresample gstaudioresample.c:891:gst_audio_resample_transform:<audioresample1> transforming buffer of 192 bytes, ts 0:00:02.557404256, duration 0:00:00.000666666, offset -1, offset_end -1
0:00:03.380062000 51998    0x10203ba40 LOG          audio-converter audio-converter.c:473:do_unpack: unpack 0x101199010, 0x101195490, 231
0:00:03.380085000 51998    0x10203ba40 LOG          audio-converter audio-converter.c:245:audio_chain_set_samples: set samples 0x101199000 231
0:00:03.380072000 51998    0x10203baa0 DEBUG          audioresample gstaudioresample.c:913:gst_audio_resample_transform:<audioresample1> found discontinuity; resyncing
0:00:03.380158000 51998    0x10203baa0 DEBUG          audioresample gstaudioresample.c:927:gst_audio_resample_transform:<audioresample1> ... but new offset is invalid
0:00:03.380174000 51998    0x10203baa0 DEBUG          audioresample gstaudioresample.c:932:gst_audio_resample_transform:<audioresample1> marking this buffer with the DISCONT flag
0:00:03.380101000 51998    0x10203ba40 LOG          audio-converter audio-converter.c:438:get_temp_samples: temp samples 0x10289c800 212
0:00:03.380199000 51998    0x10203baa0 LOG          audio-resampler audio-resampler.c:1664:gst_audio_resampler_get_out_frames: need 72 = 72 + 0 + 0, avail 67 = 35 + 32
0:00:03.380207000 51998    0x10203ba40 LOG          audio-converter audio-converter.c:544:do_resample: resample 0x101199000 0x10289c800,231 212
0:00:03.380216000 51998    0x10203baa0 DEBUG        audio-converter audio-converter.c:427:get_temp_samples: alloc samples 8 32 279
0:00:03.380303000 51998    0x10203ba40 LOG          audio-resampler audio-resampler.c:1788:gst_audio_resampler_resample: in 231, avail 303, consumed 231
0:00:03.380317000 51998    0x10203baa0 LOG          audio-converter audio-converter.c:438:get_temp_samples: temp samples 0x100bb4ff0 32
0:00:03.380323000 51998    0x10203ba40 LOG          audio-converter audio-converter.c:245:audio_chain_set_samples: set samples 0x10289c800 212
0:00:03.380330000 51998    0x10203baa0 LOG          audio-converter audio-converter.c:462:do_unpack: unpack to tmp 0x100bb4ff0, 32
0:00:03.380337000 51998    0x10203ba40 LOG          audio-converter audio-converter.c:583:do_quantize: quantize 0x10289c800, 0x10289c800 212
0:00:03.380378000 51998    0x10203ba40 LOG          audio-converter audio-converter.c:245:audio_chain_set_samples: set samples 0x10289c800 212
0:00:03.380343000 51998    0x10203baa0 LOG          audio-converter audio-converter.c:473:do_unpack: unpack 0x100bb5000, 0x10209fe90, 32
0:00:03.380410000 51998    0x10203baa0 LOG          audio-converter audio-converter.c:245:audio_chain_set_samples: set samples 0x100bb4ff0 32
0:00:03.380394000 51998    0x10203ba40 LOG          audio-converter audio-converter.c:1278:converter_generic: pack 0x10289c800, 0x70000257f620 212
0:00:03.380423000 51998    0x10203baa0 LOG          audio-converter audio-converter.c:438:get_temp_samples: temp samples 0x0 0
0:00:03.380452000 51998    0x10203ba40 LOG            audioresample gstaudioresample.c:871:gst_audio_resample_process:<audioresample0> Converted to buffer of 212 samples (1272 bytes) with timestamp 0:00:02.379387755, duration 0:00:00.004807256, offset 18446744073709551615, offset_end 18446744073709551615
0:00:03.380457000 51998    0x10203baa0 LOG          audio-converter audio-converter.c:544:do_resample: resample 0x100bb4ff0 0x0,32 0
0:00:03.380502000 51998    0x10203ba40 DEBUG          audioresample gstaudioresample.c:949:gst_audio_resample_transform:<audioresample0> input = samples [18446744073709551615, 18446744073709551615) = [2379316046, 2384128546) ns;  output = samples [18446744073709551615, 18446744073709551615) = [2379387755, 2384195011) ns
0:00:03.380502000 51998    0x10203baa0 LOG          audio-resampler audio-resampler.c:1439:get_sample_bufs: realloc 0 -> 67
0:00:03.380564000 51998    0x1010ba180 LOG          audio-converter audio-converter.c:438:get_temp_samples: temp samples 0x1011ab800 212
0:00:03.380644000 51998    0x1010ba180 LOG          audio-converter audio-converter.c:462:do_unpack: unpack to tmp 0x1011ab800, 212
0:00:03.380661000 51998    0x1010ba180 LOG          audio-converter audio-converter.c:473:do_unpack: unpack 0x1011ab810, 0x1011b5890, 212
0:00:03.380572000 51998    0x10203ba40 LOG            audioresample gstaudioresample.c:476:gst_audio_resample_transform_size:<audioresample0> asked to transform size 1386 in direction SINK
0:00:03.380673000 51998    0x1010ba180 LOG          audio-converter audio-converter.c:245:audio_chain_set_samples: set samples 0x1011ab800 212
0:00:03.380697000 51998    0x10203ba40 LOG          audio-resampler audio-resampler.c:1664:gst_audio_resampler_get_out_frames: need 72 = 72 + 0 + 0, avail 303 = 72 + 231
0:00:03.380700000 51998    0x1010ba180 LOG          audio-converter audio-converter.c:438:get_temp_samples: temp samples 0x100f9d020 212
0:00:03.380757000 51998    0x1010ba180 LOG          audio-converter audio-converter.c:523:do_mix: mix 0x1011ab800, 0x100f9d020, 212
0:00:03.380772000 51998    0x1010ba180 LOG          audio-converter audio-converter.c:245:audio_chain_set_samples: set samples 0x100f9d020 212
0:00:03.380720000 51998    0x10203ba40 LOG          audio-resampler audio-resampler.c:1675:gst_audio_resampler_get_out_frames: out 212 = ((231 * 147 - 53) / 160) + 1
0:00:03.380786000 51998    0x1010ba180 LOG          audio-converter audio-converter.c:583:do_quantize: quantize 0x100f9d020, 0x100f9d020 212
0:00:03.380805000 51998    0x10203ba40 LOG            audioresample gstaudioresample.c:497:gst_audio_resample_transform_size:<audioresample0> transformed size 1386 to 1272
0:00:03.380724000 51998    0x10203baa0 LOG          audio-converter audio-converter.c:245:audio_chain_set_samples: set samples 0x0 0
0:00:03.380810000 51998    0x1010ba180 LOG          audio-converter audio-converter.c:245:audio_chain_set_samples: set samples 0x100f9d020 212
0:00:03.380890000 51998    0x1010ba180 LOG          audio-converter audio-converter.c:1278:converter_generic: pack 0x100f9d020, 0x700001397c20 212
0:00:03.380850000 51998    0x10203baa0 LOG          audio-converter audio-converter.c:438:get_temp_samples: temp samples 0x100bb4ff0 32
0:00:03.380934000 51998    0x10203baa0 LOG          audio-converter audio-converter.c:462:do_unpack: unpack to tmp 0x100bb4ff0, 32
0:00:03.380950000 51998    0x10203baa0 LOG          audio-converter audio-converter.c:473:do_unpack: unpack 0x100bb5000, 0x10209fe90, 32
0:00:03.380990000 51998    0x10203ba40 LOG            audioresample gstaudioresample.c:891:gst_audio_resample_transform:<audioresample0> transforming buffer of 1386 bytes, ts 0:00:02.383977941, duration 0:00:00.004812500, offset -1, offset_end -1
0:00:03.381014000 51998    0x10203ba40 LOG          audio-resampler audio-resampler.c:1664:gst_audio_resampler_get_out_frames: need 72 = 72 + 0 + 0, avail 303 = 72 + 231
0:00:03.381078000 51998    0x10203ba40 LOG          audio-resampler audio-resampler.c:1675:gst_audio_resampler_get_out_frames: out 212 = ((231 * 147 - 53) / 160) + 1
0:00:03.381094000 51998    0x10203ba40 LOG          audio-converter audio-converter.c:438:get_temp_samples: temp samples 0x101199000 231
0:00:03.381106000 51998    0x10203ba40 LOG          audio-converter audio-converter.c:462:do_unpack: unpack to tmp 0x101199000, 231
0:00:03.381117000 51998    0x10203ba40 LOG          audio-converter audio-converter.c:473:do_unpack: unpack 0x101199010, 0x101195490, 231
0:00:03.381133000 51998    0x10203ba40 LOG          audio-converter audio-converter.c:245:audio_chain_set_samples: set samples 0x101199000 231
0:00:03.381176000 51998    0x10203ba40 LOG          audio-converter audio-converter.c:438:get_temp_samples: temp samples 0x10289c800 212
0:00:03.381189000 51998    0x10203ba40 LOG          audio-converter audio-converter.c:544:do_resample: resample 0x101199000 0x10289c800,231 212
0:00:03.380962000 51998    0x10203baa0 LOG          audio-converter audio-converter.c:245:audio_chain_set_samples: set samples 0x100bb4ff0 32
0:00:03.381223000 51998    0x10203baa0 LOG          audio-converter audio-converter.c:438:get_temp_samples: temp samples 0x0 0
0:00:03.381229000 51998    0x10203ba40 LOG          audio-resampler audio-resampler.c:1788:gst_audio_resampler_resample: in 231, avail 303, consumed 231
0:00:03.381243000 51998    0x10203baa0 LOG          audio-converter audio-converter.c:544:do_resample: resample 0x100bb4ff0 0x0,32 0
0:00:03.381280000 51998    0x10203baa0 LOG          audio-resampler audio-resampler.c:1439:get_sample_bufs: realloc 67 -> 99
0:00:03.381246000 51998    0x10203ba40 LOG          audio-converter audio-converter.c:245:audio_chain_set_samples: set samples 0x10289c800 212
0:00:03.381309000 51998    0x10203ba40 LOG          audio-converter audio-converter.c:583:do_quantize: quantize 0x10289c800, 0x10289c800 212
0:00:03.381324000 51998    0x10203ba40 LOG          audio-converter audio-converter.c:245:audio_chain_set_samples: set samples 0x10289c800 212
0:00:03.381337000 51998    0x10203ba40 LOG          audio-converter audio-converter.c:1278:converter_generic: pack 0x10289c800, 0x70000257f620 212

lldb backtrace
libgstaudio-1.0.0.dylib was compiled with optimization - stepping may behave oddly; variables may not be available.
Process 51998 stopped
* thread #50, name = 'rtpjitterbuffer1:src', stop reason = EXC_BAD_ACCESS (code=1, address=0x0)
    frame #0: 0x0000000100d5afac libgstaudio-1.0.0.dylib`resample_gint32_full_1_sse41(resampler=0x000000010116aa20, in=0x0000000103776a40, in_len=<unavailable>, out=0x0000000000000000, out_len=0, consumed=0x0000700002684990) at audio-resampler-x86-sse41.c:184:1 [opt]
   181 	  *o = CLAMP (res, G_MININT32, G_MAXINT32);
   182 	}
   183 	
-> 184 	MAKE_RESAMPLE_FUNC (gint32, full, 1, sse41);
   185 	MAKE_RESAMPLE_FUNC (gint32, linear, 1, sse41);
   186 	MAKE_RESAMPLE_FUNC (gint32, cubic, 1, sse41);
   187 	
Target 0: (...) stopped.
(lldb) bt
* thread #50, name = 'rtpjitterbuffer1:src', stop reason = EXC_BAD_ACCESS (code=1, address=0x0)
  * frame #0: 0x0000000100d5afac libgstaudio-1.0.0.dylib`resample_gint32_full_1_sse41(resampler=0x000000010116aa20, in=0x0000000103776a40, in_len=<unavailable>, out=0x0000000000000000, out_len=0, consumed=0x0000700002684990) at audio-resampler-x86-sse41.c:184:1 [opt]
    frame #1: 0x0000000100d1d547 libgstaudio-1.0.0.dylib`gst_audio_resampler_resample(resampler=0x000000010116aa20, in=0x0000000100bb4ff0, in_frames=32, out=0x0000000000000000, out_frames=0) at audio-resampler.c:1784:3 [opt]
    frame #2: 0x0000000100d14a79 libgstaudio-1.0.0.dylib`do_resample(chain=0x0000000102104520, user_data=0x0000000101109860) at audio-converter.c:546:3 [opt]
    frame #3: 0x0000000100d14e13 libgstaudio-1.0.0.dylib`do_quantize [inlined] audio_chain_get_samples(chain=0x0000000102104520, avail=<unavailable>) at audio-converter.c:257:5 [opt]
    frame #4: 0x0000000100d14df8 libgstaudio-1.0.0.dylib`do_quantize(chain=0x000000010208b880, user_data=0x0000000101109860) at audio-converter.c:581 [opt]
    frame #5: 0x0000000100d13623 libgstaudio-1.0.0.dylib`converter_generic [inlined] audio_chain_get_samples(chain=0x000000010208b880, avail=<unavailable>) at audio-converter.c:257:5 [opt]
    frame #6: 0x0000000100d13610 libgstaudio-1.0.0.dylib`converter_generic(convert=0x0000000101109860, flags=<unavailable>, in=<unavailable>, in_frames=<unavailable>, out=0x0000700002685620, out_frames=<unavailable>) at audio-converter.c:1275 [opt]
    frame #7: 0x0000000103099488 libgstaudioresample.dylib`gst_audio_resample_transform at gstaudioresample.c:830:7 [opt]
    frame #8: 0x000000010309928a libgstaudioresample.dylib`gst_audio_resample_transform(base=<unavailable>, inbuf=<unavailable>, outbuf=<unavailable>) at gstaudioresample.c:937 [opt]
    frame #9: 0x00000001006a296c libgstbase-1.0.0.dylib`default_generate_output(trans=0x000000010190d8d0, outbuf=<unavailable>) at gstbasetransform.c:2188:15 [opt]
    frame #10: 0x00000001006a8067 libgstbase-1.0.0.dylib`gst_base_transform_chain(pad=<unavailable>, parent=0x000000010190d8d0, buffer=<unavailable>) at gstbasetransform.c:2341:11 [opt]
    frame #11: 0x000000010019873a libgstreamer-1.0.0.dylib`gst_pad_chain_data_unchecked(pad=0x00000001028db6a0, type=<unavailable>, data=0x00000001018fb240) at gstpad.c:4447:11 [opt]
    frame #12: 0x0000000100199587 libgstreamer-1.0.0.dylib`gst_pad_push_data(pad=0x00000001028db450, type=GST_PAD_PROBE_TYPE_BUFFER | GST_PAD_PROBE_TYPE_PUSH, data=0x00000001018fb240) at gstpad.c:4711:9 [opt]
    frame #13: 0x00000001001993ab libgstreamer-1.0.0.dylib`gst_pad_push(pad=0x00000001028db450, buffer=0x00000001018fb240) at gstpad.c:4830:9 [opt]
    frame #14: 0x00000001006a7faa libgstbase-1.0.0.dylib`gst_base_transform_chain(pad=<unavailable>, parent=0x000000010197e0d0, buffer=<unavailable>) at gstbasetransform.c:2377:15 [opt]
    frame #15: 0x000000010019873a libgstreamer-1.0.0.dylib`gst_pad_chain_data_unchecked(pad=0x00000001028db200, type=<unavailable>, data=0x00000001018fb240) at gstpad.c:4447:11 [opt]
    frame #16: 0x0000000100199587 libgstreamer-1.0.0.dylib`gst_pad_push_data(pad=0x0000000101976d50, type=GST_PAD_PROBE_TYPE_BUFFER | GST_PAD_PROBE_TYPE_PUSH, data=0x00000001018fb240) at gstpad.c:4711:9 [opt]
    frame #17: 0x00000001001993ab libgstreamer-1.0.0.dylib`gst_pad_push(pad=0x0000000101976d50, buffer=0x00000001018fb240) at gstpad.c:4830:9 [opt]
    frame #18: 0x000000010017f1a5 libgstreamer-1.0.0.dylib`gst_proxy_pad_chain_default(pad=<unavailable>, parent=<unavailable>, buffer=0x00000001018fb240) at gstghostpad.c:127:9 [opt]
    frame #19: 0x000000010019873a libgstreamer-1.0.0.dylib`gst_pad_chain_data_unchecked(pad=0x00000001028def60, type=<unavailable>, data=0x00000001018fb240) at gstpad.c:4447:11 [opt]
    frame #20: 0x0000000100199587 libgstreamer-1.0.0.dylib`gst_pad_push_data(pad=0x00000001028dafb0, type=GST_PAD_PROBE_TYPE_BUFFER | GST_PAD_PROBE_TYPE_PUSH, data=0x00000001018fb240) at gstpad.c:4711:9 [opt]
    frame #21: 0x00000001001993ab libgstreamer-1.0.0.dylib`gst_pad_push(pad=0x00000001028dafb0, buffer=0x00000001018fb240) at gstpad.c:4830:9 [opt]
    frame #22: 0x00000001004c2c7d libgstrtp-1.0.0.dylib`gst_rtp_base_depayload_do_push at gstrtpbasedepayload.c:1319:12 [opt] [artificial]
    frame #23: 0x00000001004c4ad0 libgstrtp-1.0.0.dylib`gst_rtp_base_depayload_handle_buffer [inlined] gst_rtp_base_depayload_push(filter=0x00000001011a6120, out_buf=0x00000001018fb240) at gstrtpbasedepayload.c:1447:9 [opt]
    frame #24: 0x00000001004c4ac3 libgstrtp-1.0.0.dylib`gst_rtp_base_depayload_handle_buffer(filter=0x00000001011a6120, bclass=<unavailable>, in=0x000000010116aea0) at gstrtpbasedepayload.c:801 [opt]
    frame #25: 0x00000001004c44fb libgstrtp-1.0.0.dylib`gst_rtp_base_depayload_chain(pad=<unavailable>, parent=<unavailable>, in=<unavailable>) at gstrtpbasedepayload.c:862:14 [opt] [artificial]
    frame #26: 0x000000010019873a libgstreamer-1.0.0.dylib`gst_pad_chain_data_unchecked(pad=0x00000001028dad60, type=<unavailable>, data=0x000000010116aea0) at gstpad.c:4447:11 [opt]
    frame #27: 0x0000000100199587 libgstreamer-1.0.0.dylib`gst_pad_push_data(pad=0x00000001028dab10, type=GST_PAD_PROBE_TYPE_BUFFER | GST_PAD_PROBE_TYPE_PUSH, data=0x000000010116aea0) at gstpad.c:4711:9 [opt]
    frame #28: 0x00000001001993ab libgstreamer-1.0.0.dylib`gst_pad_push(pad=0x00000001028dab10, buffer=0x000000010116aea0) at gstpad.c:4830:9 [opt]
    frame #29: 0x0000000103046dc2 libgstcoreelements.dylib`gst_type_find_element_chain(pad=<unavailable>, parent=<unavailable>, buffer=<unavailable>) at gsttypefindelement.c:913:14 [opt] [artificial]
    frame #30: 0x000000010019873a libgstreamer-1.0.0.dylib`gst_pad_chain_data_unchecked(pad=0x00000001028da8c0, type=<unavailable>, data=0x000000010116aea0) at gstpad.c:4447:11 [opt]
    frame #31: 0x0000000100199587 libgstreamer-1.0.0.dylib`gst_pad_push_data(pad=0x00000001028ded00, type=GST_PAD_PROBE_TYPE_BUFFER | GST_PAD_PROBE_TYPE_PUSH, data=0x000000010116aea0) at gstpad.c:4711:9 [opt]
    frame #32: 0x00000001001993ab libgstreamer-1.0.0.dylib`gst_pad_push(pad=0x00000001028ded00, buffer=0x000000010116aea0) at gstpad.c:4830:9 [opt]
    frame #33: 0x000000010017f1a5 libgstreamer-1.0.0.dylib`gst_proxy_pad_chain_default(pad=<unavailable>, parent=<unavailable>, buffer=0x000000010116aea0) at gstghostpad.c:127:9 [opt]
    frame #34: 0x000000010019873a libgstreamer-1.0.0.dylib`gst_pad_chain_data_unchecked(pad=0x00000001021062c0, type=<unavailable>, data=0x000000010116aea0) at gstpad.c:4447:11 [opt]
    frame #35: 0x0000000100199587 libgstreamer-1.0.0.dylib`gst_pad_push_data(pad=0x0000000101932060, type=GST_PAD_PROBE_TYPE_BUFFER | GST_PAD_PROBE_TYPE_PUSH, data=0x000000010116aea0) at gstpad.c:4711:9 [opt]
    frame #36: 0x00000001001993ab libgstreamer-1.0.0.dylib`gst_pad_push(pad=0x0000000101932060, buffer=0x000000010116aea0) at gstpad.c:4830:9 [opt]
    frame #37: 0x000000010017f1a5 libgstreamer-1.0.0.dylib`gst_proxy_pad_chain_default(pad=<unavailable>, parent=<unavailable>, buffer=0x000000010116aea0) at gstghostpad.c:127:9 [opt]
    frame #38: 0x000000010019873a libgstreamer-1.0.0.dylib`gst_pad_chain_data_unchecked(pad=0x0000000101917610, type=<unavailable>, data=0x000000010116aea0) at gstpad.c:4447:11 [opt]
    frame #39: 0x0000000100199587 libgstreamer-1.0.0.dylib`gst_pad_push_data(pad=0x0000000102106050, type=GST_PAD_PROBE_TYPE_BUFFER | GST_PAD_PROBE_TYPE_PUSH, data=0x000000010116aea0) at gstpad.c:4711:9 [opt]
    frame #40: 0x00000001001993ab libgstreamer-1.0.0.dylib`gst_pad_push(pad=0x0000000102106050, buffer=0x000000010116aea0) at gstpad.c:4830:9 [opt]
    frame #41: 0x000000010017f1a5 libgstreamer-1.0.0.dylib`gst_proxy_pad_chain_default(pad=<unavailable>, parent=<unavailable>, buffer=0x000000010116aea0) at gstghostpad.c:127:9 [opt]
    frame #42: 0x000000010019873a libgstreamer-1.0.0.dylib`gst_pad_chain_data_unchecked(pad=0x00000001028deaa0, type=<unavailable>, data=0x000000010116aea0) at gstpad.c:4447:11 [opt]
    frame #43: 0x0000000100199587 libgstreamer-1.0.0.dylib`gst_pad_push_data(pad=0x00000001028da670, type=GST_PAD_PROBE_TYPE_BUFFER | GST_PAD_PROBE_TYPE_PUSH, data=0x000000010116aea0) at gstpad.c:4711:9 [opt]
    frame #44: 0x00000001001993ab libgstreamer-1.0.0.dylib`gst_pad_push(pad=0x00000001028da670, buffer=0x000000010116aea0) at gstpad.c:4830:9 [opt]
    frame #45: 0x000000010796c071 libgstrtpmanager.dylib`gst_rtp_pt_demux_chain(pad=0x00000001020eb190, parent=<unavailable>, buf=<unavailable>) at gstrtpptdemux.c:546:9 [opt]
    frame #46: 0x000000010019873a libgstreamer-1.0.0.dylib`gst_pad_chain_data_unchecked(pad=0x00000001020eb190, type=<unavailable>, data=0x000000010116aea0) at gstpad.c:4447:11 [opt]
    frame #47: 0x0000000100199587 libgstreamer-1.0.0.dylib`gst_pad_push_data(pad=0x00000001020eacf0, type=GST_PAD_PROBE_TYPE_BUFFER | GST_PAD_PROBE_TYPE_PUSH, data=0x000000010116aea0) at gstpad.c:4711:9 [opt]
    frame #48: 0x00000001001993ab libgstreamer-1.0.0.dylib`gst_pad_push(pad=0x00000001020eacf0, buffer=0x000000010116aea0) at gstpad.c:4830:9 [opt]
    frame #49: 0x00000001079666a9 libgstrtpmanager.dylib`pop_and_push_next(jitterbuffer=0x00000001018f5f30, seqnum=<unavailable>) at gstrtpjitterbuffer.c:3604:16 [opt]
    frame #50: 0x0000000107965b2a libgstrtpmanager.dylib`gst_rtp_jitter_buffer_loop [inlined] handle_next_buffer(jitterbuffer=0x00000001018f5f30) at gstrtpjitterbuffer.c:0:9 [opt]
    frame #51: 0x0000000107965a45 libgstrtpmanager.dylib`gst_rtp_jitter_buffer_loop(jitterbuffer=0x00000001018f5f30) at gstrtpjitterbuffer.c:4222 [opt]
    frame #52: 0x00000001001cddc7 libgstreamer-1.0.0.dylib`gst_task_func(task=0x000000010289b5f0) at gsttask.c:384:5 [opt]
    frame #53: 0x00000001003872e0 libglib-2.0.0.dylib`g_thread_pool_thread_proxy(data=<unavailable>) at gthreadpool.c:354:15 [opt]
    frame #54: 0x00000001003860e2 libglib-2.0.0.dylib`g_thread_proxy(data=0x000000010203baa0) at gthread.c:826:20 [opt]
    frame #55: 0x00007fff205218fc libsystem_pthread.dylib`_pthread_start + 224
    frame #56: 0x00007fff2051d443 libsystem_pthread.dylib`thread_start + 15

Merge request reports