App crashes when having another user in same meeting (working fine with old sdk from last year)

My app crashes if someone else joins the meet (or even if I join a meet which already has a participant).

Here’s the logcat.

I/JitsiMeetSDK: [modules/xmpp/strophe.jingle.js] (TIME) received session-initiate:	 1620998927912
I/JitsiMeetSDK: [modules/xmpp/strophe.jingle.js] Marking session from aman1@conference.meet-test.fugu.chat/focus as *not* P2P
I/ReactNativeJS: SdpSimulcast: using 3 layers
W/System.err: java.lang.NoSuchMethodError: no non-static method "Lorg/webrtc/PeerConnection$RTCConfiguration;.getIceRegatherIntervalRange()Lorg/webrtc/PeerConnection$IntervalRange;"
W/System.err:     at org.webrtc.PeerConnectionFactory.nativeCreatePeerConnection(Native Method)
W/System.err:     at org.webrtc.PeerConnectionFactory.createPeerConnectionInternal(PeerConnectionFactory.java:378)
W/System.err:     at org.webrtc.PeerConnectionFactory.createPeerConnection(PeerConnectionFactory.java:394)
W/System.err:     at org.webrtc.PeerConnectionFactory.createPeerConnection(PeerConnectionFactory.java:420)
W/System.err:     at com.oney.WebRTCModule.WebRTCModule.peerConnectionInitAsync(WebRTCModule.java:411)
W/System.err:     at com.oney.WebRTCModule.WebRTCModule.lambda$peerConnectionInit$1$WebRTCModule(WebRTCModule.java:403)
W/System.err:     at com.oney.WebRTCModule.-$$Lambda$WebRTCModule$ZiIhWhxC_weY_Tcpg4Z2XPDHlfo.run(Unknown Source:6)
W/System.err:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
W/System.err:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
W/System.err:     at java.lang.Thread.run(Thread.java:919)
E/rtc: #
    # Fatal error in: ../../sdk/android/src/jni/jni_generator_helper.cc, line 59
    # last system error: 11
    # Check failed: !env->ExceptionCheck()
    # error during GetMethodID: getIceRegatherIntervalRange, ()Lorg/webrtc/PeerConnection$IntervalRange;
    
    
    --------- beginning of crash
A/libc: Fatal signal 6 (SIGABRT), code -1 (SI_QUEUE) in tid 32071 (pool-18-thread-), pid 31872 (com.officechat)
I/JitsiMeetSDK: [modules/RTC/TraceablePeerConnection.js] Create new TPC[1,p2p:false]
D/JitsiMeetSDK: [modules/RTC/BridgeChannel.js] constructor() with wsUrl:"wss://meet-test.fugu.chat:443/colibri-ws/default-id/d9595863330ee9a8/d2e6e4fe?pwd=3pgq5sl7la3rgu4gkf4n87smvh"
D/audio_hw_utils: audio_extn_utils_compress_get_dsp_latency:: Using Fix DSP delay
D/audio_hw_utils: audio_extn_utils_compress_get_dsp_latency:: delay in ms is 102
E/ResolverController: No valid NAT64 prefix (219, <unspecified>/0)
D/audio_hw_utils: audio_extn_utils_compress_get_dsp_latency:: Using Fix DSP delay
D/audio_hw_utils: audio_extn_utils_compress_get_dsp_latency:: delay in ms is 102
D/audio_hw_utils: audio_extn_utils_compress_get_dsp_latency:: Using Fix DSP delay
D/audio_hw_utils: audio_extn_utils_compress_get_dsp_latency:: delay in ms is 102
D/JitsiMeetSDK: [modules/xmpp/JingleSessionPC.js] Queued setOfferAnswerCycle task on JingleSessionPC[p2p=false,initiator=false,sid=954mhgaq8hnhn]
I/JitsiMeetSDK: [JitsiConference.js] Starting CallStats for JVB connection...
D/JitsiMeetSDK: [modules/xmpp/JingleSessionPC.js] Renegotiate: setting remote description
I/ReactNativeJS: Halt: There are no SSRC groups in the remote description.
E/ResolverController: No valid NAT64 prefix (219, <unspecified>/0)
D/audio_hw_utils: audio_extn_utils_compress_get_dsp_latency:: Using Fix DSP delay
D/audio_hw_utils: audio_extn_utils_compress_get_dsp_latency:: delay in ms is 102
D/audio_hw_utils: audio_extn_utils_compress_get_dsp_latency:: Using Fix DSP delay
D/audio_hw_utils: audio_extn_utils_compress_get_dsp_latency:: delay in ms is 102
D/AudioTrack: ClientUid 10905 AudioTrack::pause 
I/AS.AudioService: playerEvent: 14631 event: 4 isMusicActive:true device:16 currentPackageName:com.officechat
I/OpAudioMonitor: MDM,stop.
I/OpAudioMonitor: MDM,stop startTime:1620998927 endTime:1620998928
I/OpAudioMonitor: MDM,ignore:16 lapse:1 packageName:com.officechat
I/OpAudioMonitor: MDM,stop remove start time for:com.officechat
D/HeadsetService: getHeadsetService(): returning com.android.bluetooth.hfp.HeadsetService@382ba41
E/HeadsetStateMachine: returning mCurrentState as AudioOn
D/HeadsetService:  isAudioOn: The number of audio connected devices 1
D/HeadsetService: isScoOrCallActive(): Call Active:trueCall is Ringing:trueSCO is Active:true
I/Avrcp_ext: updatePlayStatusForDevice: device: 98:09:CF:D6:AF:40
D/BluetoothManagerService: isCarkit: false
I/Avrcp_ext: Exit updatePlayStatusForDevice
E/HeadsetStateMachine: returning mCurrentState as AudioOn
D/HeadsetService:  isAudioOn: The number of audio connected devices 1
D/HeadsetService: isScoOrCallActive(): Call Active:trueCall is Ringing:trueSCO is Active:true
I/Avrcp_ext: updatePlayStatusForDevice: device: null
I/Avrcp_ext: Exit updatePlayStatusForDevice
E/HeadsetStateMachine: returning mCurrentState as AudioOn
D/HeadsetService:  isAudioOn: The number of audio connected devices 1
D/HeadsetService: isScoOrCallActive(): Call Active:trueCall is Ringing:trueSCO is Active:true
I/Avrcp_ext: updatePlayStatusForDevice: device: null
I/Avrcp_ext: Exit updatePlayStatusForDevice
E/HeadsetStateMachine: returning mCurrentState as AudioOn
D/HeadsetService:  isAudioOn: The number of audio connected devices 1
D/HeadsetService: isScoOrCallActive(): Call Active:trueCall is Ringing:trueSCO is Active:true
I/Avrcp_ext: updatePlayStatusForDevice: device: null
I/Avrcp_ext: Exit updatePlayStatusForDevice
E/HeadsetStateMachine: returning mCurrentState as AudioOn
D/HeadsetService:  isAudioOn: The number of audio connected devices 1
D/HeadsetService: isScoOrCallActive(): Call Active:trueCall is Ringing:trueSCO is Active:true
I/Avrcp_ext: updatePlayStatusForDevice: device: null
I/Avrcp_ext: Exit updatePlayStatusForDevice
D/audio_hw_utils: audio_extn_utils_compress_get_dsp_latency:: Using Fix DSP delay
D/audio_hw_utils: audio_extn_utils_compress_get_dsp_latency:: delay in ms is 102
D/audio_hw_utils: audio_extn_utils_compress_get_dsp_latency:: Using Fix DSP delay
D/audio_hw_utils: audio_extn_utils_compress_get_dsp_latency:: delay in ms is 102
D/audio_hw_primary: copl(0xf59c8800):pause compress driver
D/audio_hw_primary: copl(0xf59c8800):calling compress flush
D/audio_hw_primary: copl(0xf59c8800):out of compress flush
I/APM_AudioPolicyManager: stopOutput portId 2811
D/APM_AudioPolicyManager: stopOutput() portId 2811, output 1069, stream 3, session 16961
D/audio_hw_primary: copl(0xf59c8800):send new gapless metadata
W/AudioFlinger: moveEffectChain_l() effect chain for session 0 not on source thread 0x6f6056d800
I/WifiHAL: event received NL80211_CMD_VENDOR, vendor_id = 0x1374, subcmd = 0xd
I/cnss-daemon: nl80211 response handler invoked
I/cnss-daemon: nl80211_response_handler: cmd 103, vendorID 4980, subcmd 13  received
D/OnePlusJankManager:  Chor uploadMDM JANK_TYPE_ONCE mViewTitle = com.officechat/org.jitsi.meet.sdk.JitsiMeetActivity--- jank level = 2
I/crash_dump64: obtaining output fd from tombstoned, type: kDebuggerdTombstone
I//system/bin/tombstoned: received crash request for pid 32071
I/crash_dump64: performing dump of process 31872 (target tid = 32071)
A/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
W/ActivityManager: Unable to start service Intent { act=com.google.android.gms.ads.identifier.service.START pkg=com.google.android.gms } U=0: not found
A/DEBUG: Build fingerprint: 'OnePlus/OnePlus6T/OnePlus6T:10/QKQ1.190716.003/2002220019:user/release-keys'
A/DEBUG: Revision: '0'
A/DEBUG: ABI: 'arm64'
A/DEBUG: Timestamp: 2021-05-14 18:58:48+0530
A/DEBUG: pid: 31872, tid: 32071, name: pool-18-thread-  >>> com.officechat <<<
A/DEBUG: uid: 10905
A/DEBUG: signal 6 (SIGABRT), code -1 (SI_QUEUE), fault addr --------
A/DEBUG:     x0  0000000000000000  x1  0000000000007d47  x2  0000000000000006  x3  0000007950001c90
A/DEBUG:     x4  fefeff297f06ff03  x5  fefeff297f06ff03  x6  fefeff297f06ff03  x7  7f7f7f7fff7f7f7f
A/DEBUG:     x8  00000000000000f0  x9  7fcc0f67c4212157  x10 0000000000000001  x11 0000000000000000
A/DEBUG:     x12 fffffff0fffffbdf  x13 ffffffffffffffff  x14 ffffffffff000000  x15 ffffffffffffffff
A/DEBUG:     x16 0000007a505028c0  x17 0000007a504de900  x18 0000007928968000  x19 0000000000007c80
A/DEBUG:     x20 0000000000007d47  x21 00000000ffffffff  x22 00000079280d0694  x23 0000000000000000
A/DEBUG:     x24 0000007950002318  x25 0000007950002270  x26 00000079280db730  x27 00000079500020b0
A/DEBUG:     x28 00000079500020c8  x29 0000007950001d30
A/DEBUG:     sp  0000007950001c70  lr  0000007a504900c4  pc  0000007a504900f0
A/DEBUG: backtrace:
A/DEBUG:       #00 pc 00000000000830f0  /apex/com.android.runtime/lib64/bionic/libc.so (abort+160) (BuildId: a6a4a6a4e20240bbe3173fe560b161af)
A/DEBUG:       #01 pc 0000000000227014  /data/app/com.officechat-hpAwhOdWGv_psSpEO-eSbg==/base.apk!libjingle_peerconnection_so.so (offset 0x3227000)
A/DEBUG:       #02 pc 00000000003195b4  /data/app/com.officechat-hpAwhOdWGv_psSpEO-eSbg==/base.apk!libjingle_peerconnection_so.so (offset 0x3227000)
A/DEBUG:       #03 pc 0000000000223ecc  /data/app/com.officechat-hpAwhOdWGv_psSpEO-eSbg==/base.apk!libjingle_peerconnection_so.so (offset 0x3227000)
A/DEBUG:       #04 pc 0000000000223e14  /data/app/com.officechat-hpAwhOdWGv_psSpEO-eSbg==/base.apk!libjingle_peerconnection_so.so (offset 0x3227000)
A/DEBUG:       #05 pc 000000000052e9e8  /data/app/com.officechat-hpAwhOdWGv_psSpEO-eSbg==/base.apk!libjingle_peerconnection_so.so (offset 0x3227000)
A/DEBUG:       #06 pc 00000000005322cc  /data/app/com.officechat-hpAwhOdWGv_psSpEO-eSbg==/base.apk!libjingle_peerconnection_so.so (offset 0x3227000) (Java_org_webrtc_PeerConnectionFactory_nativeCreatePeerConnection+88)
A/DEBUG:       #07 pc 000000000013f350  /apex/com.android.runtime/lib64/libart.so (art_quick_generic_jni_trampoline+144) (BuildId: 61f35cf0042e4f71b65c4292716a95ef)
A/DEBUG:       #08 pc 00000000001365b8  /apex/com.android.runtime/lib64/libart.so (art_quick_invoke_static_stub+568) (BuildId: 61f35cf0042e4f71b65c4292716a95ef)
A/DEBUG:       #09 pc 000000000014500c  /apex/com.android.runtime/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+276) (BuildId: 61f35cf0042e4f71b65c4292716a95ef)
A/DEBUG:       #10 pc 00000000002e281c  /apex/com.android.runtime/lib64/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+384) (BuildId: 61f35cf0042e4f71b65c4292716a95ef)
A/DEBUG:       #11 pc 00000000002deb2c  /apex/com.android.runtime/lib64/libart.so (bool art::interpreter::DoCall<true, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+692) (BuildId: 61f35cf0042e4f71b65c4292716a95ef)
A/DEBUG:       #12 pc 00000000005a593c  /apex/com.android.runtime/lib64/libart.so (MterpInvokeStaticRange+236) (BuildId: 61f35cf0042e4f71b65c4292716a95ef)
A/DEBUG:       #13 pc 0000000000130c94  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_static_range+20) (BuildId: 61f35cf0042e4f71b65c4292716a95ef)
A/DEBUG:       #14 pc 000000000035a95e  [anon:dalvik-classes4.dex extracted in memory from /data/app/com.officechat-hpAwhOdWGv_psSpEO-eSbg==/base.apk!classes4.dex] (org.webrtc.PeerConnectionFactory.createPeerConnectionInternal+46)
A/DEBUG:       #15 pc 00000000005a02b4  /apex/com.android.runtime/lib64/libart.so (MterpInvokeVirtual+1352) (BuildId: 61f35cf0042e4f71b65c4292716a95ef)
A/DEBUG:       #16 pc 0000000000130814  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_virtual+20) (BuildId: 61f35cf0042e4f71b65c4292716a95ef)
A/DEBUG:       #17 pc 000000000035a8ca  [anon:dalvik-classes4.dex extracted in memory from /data/app/com.officechat-hpAwhOdWGv_psSpEO-eSbg==/base.apk!classes4.dex] (org.webrtc.PeerConnectionFactory.createPeerConnection+2)
A/DEBUG:       #18 pc 00000000005a02b4  /apex/com.android.runtime/lib64/libart.so (MterpInvokeVirtual+1352) (BuildId: 61f35cf0042e4f71b65c4292716a95ef)
A/DEBUG:       #19 pc 0000000000130814  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_virtual+20) (BuildId: 61f35cf0042e4f71b65c4292716a95ef)
A/DEBUG:       #20 pc 000000000035a8e6  [anon:dalvik-classes4.dex extracted in memory from /data/app/com.officechat-hpAwhOdWGv_psSpEO-eSbg==/base.apk!classes4.dex] (org.webrtc.PeerConnectionFactory.createPeerConnection+2)
A/DEBUG:       #21 pc 00000000005a02b4  /apex/com.android.runtime/lib64/libart.so (MterpInvokeVirtual+1352) (BuildId: 61f35cf0042e4f71b65c4292716a95ef)
A/DEBUG:       #22 pc 0000000000130814  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_virtual+20) (BuildId: 61f35cf0042e4f71b65c4292716a95ef)
A/DEBUG:       #23 pc 00000000004a592a  [anon:dalvik-classes3.dex extracted in memory from /data/app/com.officechat-hpAwhOdWGv_psSpEO-eSbg==/base.apk!classes3.dex] (com.oney.WebRTCModule.WebRTCModule.peerConnectionInitAsync+14)
A/DEBUG:       #24 pc 00000000005a25c0  /apex/com.android.runtime/lib64/libart.so (MterpInvokeDirect+1100) (BuildId: 61f35cf0042e4f71b65c4292716a95ef)
A/DEBUG:       #25 pc 0000000000130914  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_direct+20) (BuildId: 61f35cf0042e4f71b65c4292716a95ef)
A/DEBUG:       #26 pc 00000000004a51e4  [anon:dalvik-classes3.dex extracted in memory from /data/app/com.officechat-hpAwhOdWGv_psSpEO-eSbg==/base.apk!classes3.dex] (com.oney.WebRTCModule.WebRTCModule.lambda$peerConnectionInit$1$WebRTCModule)
A/DEBUG:       #27 pc 00000000005a02b4  /apex/com.android.runtime/lib64/libart.so (MterpInvokeVirtual+1352) (BuildId: 61f35cf0042e4f71b65c4292716a95ef)
A/DEBUG:       #28 pc 0000000000130814  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_virtual+20) (BuildId: 61f35cf0042e4f71b65c4292716a95ef)
A/DEBUG:       #29 pc 00000000004a09c0  [anon:dalvik-classes3.dex extracted in memory from /data/app/com.officechat-hpAwhOdWGv_psSpEO-eSbg==/base.apk!classes3.dex] (com.oney.WebRTCModule.-$$Lambda$WebRTCModule$ZiIhWhxC_weY_Tcpg4Z2XPDHlfo.run+12)
A/DEBUG:       #30 pc 00000000005a1ad4  /apex/com.android.runtime/lib64/libart.so (MterpInvokeInterface+1788) (BuildId: 61f35cf0042e4f71b65c4292716a95ef)
A/DEBUG:       #31 pc 0000000000130a14  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_interface+20) (BuildId: 61f35cf0042e4f71b65c4292716a95ef)
A/DEBUG:       #32 pc 00000000001f98ea  /apex/com.android.runtime/javalib/core-oj.jar (java.util.concurrent.ThreadPoolExecutor.runWorker+158)
A/DEBUG:       #33 pc 00000000005a02b4  /apex/com.android.runtime/lib64/libart.so (MterpInvokeVirtual+1352) (BuildId: 61f35cf0042e4f71b65c4292716a95ef)
A/DEBUG:       #34 pc 0000000000130814  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_virtual+20) (BuildId: 61f35cf0042e4f71b65c4292716a95ef)
A/DEBUG:       #35 pc 00000000001f8698  /apex/com.android.runtime/javalib/core-oj.jar (java.util.concurrent.ThreadPoolExecutor$Worker.run+4)
A/DEBUG:       #36 pc 00000000005a1ad4  /apex/com.android.runtime/lib64/libart.so (MterpInvokeInterface+1788) (BuildId: 61f35cf0042e4f71b65c4292716a95ef)
A/DEBUG:       #37 pc 0000000000130a14  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_interface+20) (BuildId: 61f35cf0042e4f71b65c4292716a95ef)
A/DEBUG:       #38 pc 00000000000ec0f0  /apex/com.android.runtime/javalib/core-oj.jar (java.lang.Thread.run+8)
A/DEBUG:       #39 pc 00000000002b3b30  /apex/com.android.runtime/lib64/libart.so (_ZN3art11interpreterL7ExecuteEPNS_6ThreadERKNS_20CodeItemDataAccessorERNS_11ShadowFrameENS_6JValueEbb.llvm.3929369822492601747+240) (BuildId: 61f35cf0042e4f71b65c4292716a95ef)
A/DEBUG:       #40 pc 000000000059155c  /apex/com.android.runtime/lib64/libart.so (artQuickToInterpreterBridge+1032) (BuildId: 61f35cf0042e4f71b65c4292716a95ef)
A/DEBUG:       #41 pc 000000000013f468  /apex/com.android.runtime/lib64/libart.so (art_quick_to_interpreter_bridge+88) (BuildId: 61f35cf0042e4f71b65c4292716a95ef)
A/DEBUG:       #42 pc 0000000000136334  /apex/com.android.runtime/lib64/libart.so (art_quick_invoke_stub+548) (BuildId: 61f35cf0042e4f71b65c4292716a95ef)
A/DEBUG:       #43 pc 0000000000144fec  /apex/com.android.runtime/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+244) (BuildId: 61f35cf0042e4f71b65c4292716a95ef)
A/DEBUG:       #44 pc 00000000004aff10  /apex/com.android.runtime/lib64/libart.so (art::(anonymous namespace)::InvokeWithArgArray(art::ScopedObjectAccessAlreadyRunnable const&, art::ArtMethod*, art::(anonymous namespace)::ArgArray*, art::JValue*, char const*)+104) (BuildId: 61f35cf0042e4f71b65c4292716a95ef)
A/DEBUG:       #45 pc 00000000004b1024  /apex/com.android.runtime/lib64/libart.so (art::InvokeVirtualOrInterfaceWithJValues(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, jvalue const*)+416) (BuildId: 61f35cf0042e4f71b65c4292716a95ef)
A/DEBUG:       #46 pc 00000000004f19ec  /apex/com.android.runtime/lib64/libart.so (art::Thread::CreateCallback(void*)+1176) (BuildId: 61f35cf0042e4f71b65c4292716a95ef)
A/DEBUG:       #47 pc 00000000000e6890  /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+36) (BuildId: a6a4a6a4e20240bbe3173fe560b161af)
A/DEBUG:       #48 pc 0000000000084b6c  /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64) (BuildId: a6a4a6a4e20240bbe3173fe560b161af)
I/JitsiMeetSDK: [modules/RTC/BridgeChannel.js] Channel closed by server
E/JitsiMeetSDK: [modules/RTC/BridgeChannel.js] Channel closed: undefined undefined
E//system/bin/tombstoned: Tombstone written to: /data/tombstones/tombstone_02

@saghul Can you please help here ASAP? I need to put an update for the app with latest SDK.

What type of implementation of the SDK do you have? How exactly are you using it? It may help the community narrow things down.

Try to provide as much information as you can especially if your issue is urgent. That will help reduce the back and forth.

@corby I cloned the repo on 19th April having last commit 67ac48cac6c292d616729476e2515b8c1dff3711 and compiled the android SDK using release-sdk.sh provided in android/scripts directory. I didn’t change anything in the source code before compiling. Provided the local path(replaced with the old one to be precise) of the sdk release to my project’s gradle and ran the app. Though the same compiled sdk is working fine when I used it in jitsi-meet’s android project and pointed Server URL to my own jitsi installation. Something is wrong with my code which needs to be changed, but I’m unable to find out what that is. Though the same project works fine with the SDK which I compile from the jitsi-meet’s repo that was cloned around 1 year ago.

Just figured it out, I’m using another library which uses WebRTC m79 and Jitsi uses some older version I think. Thats why it was causing issues.

Jitsi uses M89.

1 Like

Oh, I see. Earlier last year when we faced some issue because of the same sdk it was because that sdk was using m79 and Jitsi was using m75 at that time. At that time I was able to make both sdks work by providing Jitsi the same m79 webrtc, but this time I’m kinda stuck, don’t know what I can do now to make the both SDKs works in a single app. Now, I’m not even sure if this is really because of this WebRTC conflict or something else. Nothing is even being used from that SDK when I connect a meeting with Jitsi. Its an sdk provided by AntMedia for live streaming and comes only in action when live steaming or joining a stream. I don’t know what to do now, please help.

@corby can you help here?