webrtcbin: Resolving GstPromise without setting a non-NULL GstStructure reply
This happens running servo-media's webrtc example (sorry, I don't have a smaller test case atm). I observed that it is happening while creating the sdp offer.
Connecting to server ws://localhost:8443
Registering id 6154 with server
session is ok; creating webrtc objects
0:00:00.040206000 84109 0x7fae8e0d2450 DEBUG webrtcbin gstwebrtcbin.c:4664:gst_webrtc_bin_change_state: changing state: NULL => READY
0:00:00.040344000 84109 0x7fae8e0d2450 LOG webrtcbin gstwebrtcbin.c:1175:_check_if_negotiation_is_needed:<sendrecv> checking if negotiation is needed
0:00:00.040354000 84109 0x7fae8e0d2450 LOG webrtcbin gstwebrtcbin.c:1195:_check_if_negotiation_is_needed:<sendrecv> no local description set
0:00:00.040409000 84109 0x7fae8e07d380 TRACE webrtcbin gstwebrtcbin.c:1287:_check_need_negotiation_task:<sendrecv> emitting on-negotiation-needed
0:00:00.065930000 84109 0x7fae8e0769f0 DEBUG webrtcbin gstwebrtcbin.c:268:gst_webrtc_bin_pad_new:<'':sink_0> new visible pad with direction sink
0:00:00.065952000 84109 0x7fae8e0769f0 TRACE webrtcbin gstwebrtcbin.c:428:_find_transceiver_for_mline:<sendrecv> Found transceiver (NULL) for mlineindex 0
0:00:00.067933000 84109 0x7fae8e0769f0 DEBUG webrtcbin gstwebrtcbin.c:268:gst_webrtc_bin_pad_new:<'':sink_1> new visible pad with direction sink
0:00:00.067949000 84109 0x7fae8e0769f0 TRACE webrtcbin gstwebrtcbin.c:428:_find_transceiver_for_mline:<sendrecv> Found transceiver (NULL) for mlineindex 1
0:00:00.068063000 84109 0x7fae8e0769f0 DEBUG webrtcbin gstwebrtcbin.c:4664:gst_webrtc_bin_change_state: changing state: READY => PAUSED
0:00:00.068620000 84109 0x7fae8e0769f0 DEBUG webrtcbin gstwebrtcbin.c:4664:gst_webrtc_bin_change_state: changing state: PAUSED => PLAYING
0:00:00.068802000 84109 0x7fae8e07d380 INFO webrtcbin gstwebrtcbin.c:2745:_create_sdp_task:<sendrecv> creating offer sdp with options (NULL)
0:00:00.068848000 84109 0x7fae8e07d380 LOG webrtcbin gstwebrtcbin.c:1331:_find_codec_preferences:<sendrecv> retreiving codec preferences from <webrtctransceiver0>
0:00:00.068906000 84109 0x7fae8e07d380 LOG webrtcbin gstwebrtcbin.c:1350:_find_codec_preferences:<sendrecv> Using peer query caps: application/x-rtp, media=(string)video, encoding-name=(string)VP8, payload=(int)96, clock-rate=(int)90000
0:00:00.068924000 84109 0x7fae8e07d380 DEBUG webrtcbin gstwebrtcbin.c:2022:sdp_media_from_transceiver:<sendrecv> Adding 0-th caps application/x-rtp, media=(string)video, encoding-name=(string)VP8, payload=(int)96, clock-rate=(int)90000, rtcp-fb-nack-pli=(boolean)true to 0-th media
0:00:00.068980000 84109 0x7fae8e07d380 WARN webrtcbin gstwebrtcbin.c:2049:sdp_media_from_transceiver:<sendrecv> Caps application/x-rtp, media=(string)video, encoding-name=(string)VP8, payload=(int)96, clock-rate=(int)90000, rtcp-fb-nack-pli=(boolean)true are missing ssrc
0:00:00.068994000 84109 0x7fae8e07d380 TRACE webrtcbin gstwebrtcbin.c:469:_find_transport_for_session:<sendrecv> Found transport (NULL) for session 0
0:00:00.072804000 84109 0x7fae8e07da10 LOG webrtcbin gstwebrtcbin.c:1175:_check_if_negotiation_is_needed:<sendrecv> checking if negotiation is needed
0:00:00.072820000 84109 0x7fae8e07da10 LOG webrtcbin gstwebrtcbin.c:1181:_check_if_negotiation_is_needed:<sendrecv> no negotiation possible until caps have been received on all sink pads
0:00:00.073473000 84109 0x7fae8e07db50 LOG webrtcbin gstwebrtcbin.c:1175:_check_if_negotiation_is_needed:<sendrecv> checking if negotiation is needed
0:00:00.073483000 84109 0x7fae8e07db50 LOG webrtcbin gstwebrtcbin.c:1195:_check_if_negotiation_is_needed:<sendrecv> no local description set
0:00:00.073754000 84109 0x7fae8e07db50 LOG webrtcbin gstwebrtcbin.c:4709:pad_block:<sendrecv:sink_1> blocking pad with data buffer: 0x7fae8e0de5a0, pts 0:00:00.042888500, dts 0:00:00.042888500, dur 0:00:00.013500000, size 172, offset none, offset_end none, flags 0x4000
0:00:00.076425000 84109 0x7fae8e07da10 LOG webrtcbin gstwebrtcbin.c:4709:pad_block:<sendrecv:sink_0> blocking pad with data buffer: 0x7fae98075000, pts 0:00:00.044289730, dts 99:99:99.999999999, dur 0:00:00.033333333, size 736, offset none, offset_end none, flags 0x4000
0:00:00.284149000 84109 0x7fae8e07d380 TRACE webrtcbin gstwebrtcbin.c:358:_find_ice_stream_for_session:<sendrecv> No ice stream available for session 0
0:00:00.298049000 84109 0x7fae8e07d380 TRACE webrtcbin gstwebrtcbin.c:369:_add_ice_stream_item:<sendrecv> adding ice stream <webrtcicestream0> for session 0
0:00:00.302568000 84109 0x7fae8e07d380 TRACE webrtcbin gstwebrtcbin.c:1467:_create_transport_channel:<sendrecv> Create transport <transportstream0> for session 0
0:00:00.303720000 84109 0x7fae8e07d380 TRACE webrtcbin gstwebrtcbin.c:4230:on_rtpbin_pad_added:<sendrecv> new rtpbin pad recv_rtcp_sink_0
0:00:00.303828000 84109 0x7fae8e07d380 TRACE webrtcbin gstwebrtcbin.c:4230:on_rtpbin_pad_added:<sendrecv> new rtpbin pad send_rtcp_src_0
0:00:00.305040000 84109 0x7fae8e07d380 LOG webrtcbin gstwebrtcbin.c:1331:_find_codec_preferences:<sendrecv> retreiving codec preferences from <webrtctransceiver1>
0:00:00.305077000 84109 0x7fae8e07d380 DEBUG webrtcbin gstwebrtcbin.c:2022:sdp_media_from_transceiver:<sendrecv> Adding 0-th caps application/x-rtp, media=(string)audio, clock-rate=(int)48000, encoding-name=(string)OPUS, sprop-maxcapturerate=(string)48000, sprop-stereo=(string)0, payload=(int)97, encoding-params=(string)2, ssrc=(uint)3230860228, timestamp-offset=(uint)1086703545, seqnum-offset=(uint)19205, rtcp-fb-nack-pli=(boolean)true to 1-th media
0:00:00.305106000 84109 0x7fae8e07d380 TRACE webrtcbin gstwebrtcbin.c:469:_find_transport_for_session:<sendrecv> Found transport <transportstream0> for session 0
0:00:00.305456000 84109 0x7fae8e07d380 TRACE webrtcbin gstwebrtcbin.c:1287:_check_need_negotiation_task:<sendrecv> emitting on-negotiation-needed
0:00:00.305747000 84109 0x7fae8e07d380 INFO webrtcbin gstwebrtcbin.c:3532:_set_description_task:<sendrecv> Attempting to set local offer in the stable state
0:00:00.305765000 84109 0x7fae8e07d380 TRACE webrtcbin gstwebrtcbin.c:3533:_set_description_task:<sendrecv> SDP contents
v=0
o=- 3930597839464497238 0 IN IP4 0.0.0.0
s=-
t=0 0
a=ice-options:trickle
a=group:BUNDLE video0 audio1
m=video 9 UDP/TLS/RTP/SAVPF 96
c=IN IP4 0.0.0.0
a=setup:actpass
a=ice-ufrag:nlxTAUhUvKHq6DEgiPb+Sr9whBVGhbb2
a=ice-pwd:CpdUNN2DT9Ltce9v2eKhOyoeW0hA4mmW
a=rtcp-mux
a=rtcp-rsize
a=sendrecv
a=rtpmap:96 VP8/90000
a=rtcp-fb:96 nack pli
a=mid:video0
a=fingerprint:sha-256 2E:56:E6:B8:99:C0:04:D1:24:28:AD:18:F8:F1:FB:AA:EB:46:F4:AA:BA:7E:F5:33:CC:1B:F1:41:77:57:31:F2
m=audio 0 UDP/TLS/RTP/SAVPF 97
c=IN IP4 0.0.0.0
a=setup:actpass
a=ice-ufrag:nlxTAUhUvKHq6DEgiPb+Sr9whBVGhbb2
a=ice-pwd:CpdUNN2DT9Ltce9v2eKhOyoeW0hA4mmW
a=bundle-only
a=rtcp-mux
a=rtcp-rsize
a=sendrecv
a=rtpmap:97 OPUS/48000/2
a=rtcp-fb:97 nack pli
a=fmtp:97 sprop-maxcapturerate=48000;sprop-stereo=0
a=ssrc:3230860228 msid:user711175465@host-1e42bc95 webrtctransceiver1
a=ssrc:3230860228 cname:user711175465@host-1e42bc95
a=mid:audio1
a=fingerprint:sha-256 2E:56:E6:B8:99:C0:04:D1:24:28:AD:18:F8:F1:FB:AA:EB:46:F4:AA:BA:7E:F5:33:CC:1B:F1:41:77:57:31:F2
0:00:00.305915000 84109 0x7fae8e0769f0 DEBUG webrtcbin gstwebrtcbin.c:4664:gst_webrtc_bin_change_state: changing state: PLAYING => PLAYING
0:00:00.306025000 84109 0x7fae8e07d380 TRACE webrtcbin gstwebrtcbin.c:3665:_set_description_task:<sendrecv> notify signaling-state from stable to have-local-offer
0:00:00.306054000 84109 0x7fae8e07d380 TRACE webrtcbin gstwebrtcbin.c:469:_find_transport_for_session:<sendrecv> Found transport <transportstream0> for session 0
0:00:00.306283000 84109 0x7fae8e07d380 TRACE webrtcbin gstwebrtcbin.c:469:_find_transport_for_session:<sendrecv> Found transport <transportstream0> for session 0
thread '<unnamed>' panicked at 'Promise resolved but no reply', /Users/ferjm/.cargo/registry/src/github.com-1ecc6299db9ec823/gstreamer-0.15.0/src/promise.rs:59:24
stack backtrace:
0: <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt
1: core::fmt::write
2: std::io::Write::write_fmt
3: std::panicking::default_hook::{{closure}}
4: std::panicking::default_hook
5: std::panicking::rust_panic_with_hook
6: rust_begin_unwind
7: core::panicking::panic_fmt
8: core::option::expect_failed
9: core::option::Option<T>::expect
10: gstreamer::promise::Promise::new_with_change_func::trampoline
11: AssociationsManager::_map
12: AssociationsManager::_map
13: g_main_context_dispatch
14: g_main_context_iterate
15: g_main_loop_run
16: AssociationsManager::_map
17: g_thread_proxy
18: AssociationsManager::_map
19: AssociationsManager::_map
Edited by Sebastian Dröge