PeerConnection.getStats(RTCStatsCollectorCallback callback) crashes on Android

304 views
Skip to first unread message

Tomáš Paseka

unread,
Feb 22, 2018, 3:24:24 AM2/22/18
to discuss-webrtc
There are two methods for obtaining stats in PeerConnection.java
- PeerConnection.getStats(RTCStatsCollectorCallback callback)
- PeerConnection.getStats(StatsObserver observer, MediaStreamTrack track) -> This one is mark as deprecaded

Deprecated one works fine, but the preffered one - PeerConnection.getStats(RTCStatsCollectorCallback callback) is crashing.

WebRTC: v65 , git commit id: 36af4e9

Stack:
* thread #19, name = 'signaling_threa', stop reason = signal SIGABRT
  * frame #0: 0xb3176ac4 [vdso]`__kernel_vsyscall + 16
    frame #1: 0xb1186b3d libc.so`tgkill + 29
    frame #2: 0xb113004f libc.so`abort + 111
    frame #3: 0x9293efbc libjingle_peerconnection_so.so`___lldb_unnamed_symbol211$$libjingle_peerconnection_so.so + 328
    frame #4: 0x92ee9e55 libjingle_peerconnection_so.so`___lldb_unnamed_symbol26436$$libjingle_peerconnection_so.so + 381
    frame #5: 0x92eb61b4 libjingle_peerconnection_so.so`___lldb_unnamed_symbol25290$$libjingle_peerconnection_so.so + 2034
    frame #6: 0x92eb561f libjingle_peerconnection_so.so`___lldb_unnamed_symbol25288$$libjingle_peerconnection_so.so + 103
    frame #7: 0x92eb4ac0 libjingle_peerconnection_so.so`___lldb_unnamed_symbol25279$$libjingle_peerconnection_so.so + 1212
    frame #8: 0x92e85a92 libjingle_peerconnection_so.so`___lldb_unnamed_symbol23740$$libjingle_peerconnection_so.so + 78
    frame #9: 0x92eaebea libjingle_peerconnection_so.so`___lldb_unnamed_symbol25002$$libjingle_peerconnection_so.so + 50
    frame #10: 0x92a93012 libjingle_peerconnection_so.so`___lldb_unnamed_symbol5887$$libjingle_peerconnection_so.so + 56
    frame #11: 0x92eaeb7a libjingle_peerconnection_so.so`___lldb_unnamed_symbol25000$$libjingle_peerconnection_so.so + 52
    frame #12: 0x92eabaa8 libjingle_peerconnection_so.so`___lldb_unnamed_symbol24860$$libjingle_peerconnection_so.so + 116
    frame #13: 0x92e66dfb libjingle_peerconnection_so.so`Java_org_webrtc_PeerConnection_nativeNewGetStats + 124
    frame #14: 0x93295db9 base.odex`nativeNewGetStats(this=<unavailable>, (null)=<unavailable>) + 137
    frame #15: 0xae94ccd3 libart.so`art_quick_invoke_stub + 339
    frame #16: 0xae426b49 libart.so`art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*) + 233
    frame #17: 0xae637200 libart.so`art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::DexFile::CodeItem const*, art::ShadowFrame*, art::JValue*) + 368
    frame #18: 0xae62fde2 libart.so`bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) + 818
    frame #19: 0xae66334f libart.so`bool art::interpreter::DoInvoke<(art::InvokeType)1, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) + 463
    frame #20: 0xae65f1cb libart.so`art::JValue art::interpreter::ExecuteSwitchImpl<false, false>(art::Thread*, art::DexFile::CodeItem const*, art::ShadowFrame&, art::JValue, bool) + 53819
    frame #21: 0xae60a03a libart.so`art::interpreter::Execute(art::Thread*, art::DexFile::CodeItem const*, art::ShadowFrame&, art::JValue, bool) + 762
    frame #22: 0xae611edb libart.so`art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::DexFile::CodeItem const*, art::ShadowFrame*, art::JValue*) + 235
    frame #23: 0xae62fdb6 libart.so`bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) + 774
    frame #24: 0xae6615ad libart.so`bool art::interpreter::DoInvoke<(art::InvokeType)2, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) + 845
    frame #25: 0xae65f17b libart.so`art::JValue art::interpreter::ExecuteSwitchImpl<false, false>(art::Thread*, art::DexFile::CodeItem const*, art::ShadowFrame&, art::JValue, bool) + 53739
    frame #26: 0xae60a03a libart.so`art::interpreter::Execute(art::Thread*, art::DexFile::CodeItem const*, art::ShadowFrame&, art::JValue, bool) + 762
    frame #27: 0xae611edb libart.so`art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::DexFile::CodeItem const*, art::ShadowFrame*, art::JValue*) + 235
    frame #28: 0xae62fdb6 libart.so`bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) + 774
    frame #29: 0xae663de6 libart.so`bool art::interpreter::DoInvoke<(art::InvokeType)4, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) + 1638
    frame #30: 0xae65f299 libart.so`art::JValue art::interpreter::ExecuteSwitchImpl<false, false>(art::Thread*, art::DexFile::CodeItem const*, art::ShadowFrame&, art::JValue, bool) + 54025
    frame #31: 0xae60a03a libart.so`art::interpreter::Execute(art::Thread*, art::DexFile::CodeItem const*, art::ShadowFrame&, art::JValue, bool) + 762
    frame #32: 0xae611dbc libart.so`art::interpreter::EnterInterpreterFromEntryPoint(art::Thread*, art::DexFile::CodeItem const*, art::ShadowFrame*) + 140
    frame #33: 0xae922540 libart.so`artQuickToInterpreterBridge + 1376
    frame #34: 0xae952d2e libart.so`art_quick_to_interpreter_bridge + 78
    frame #35: 0xae94ccd3 libart.so`art_quick_invoke_stub + 339
    frame #36: 0xae426b49 libart.so`art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*) + 233
    frame #37: 0xae847036 libart.so`art::InvokeWithArgArray(art::ScopedObjectAccessAlreadyRunnable const&, art::ArtMethod*, art::ArgArray*, art::JValue*, char const*) + 102
    frame #38: 0xae848993 libart.so`art::InvokeVirtualOrInterfaceWithVarArgs(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, char*) + 467
    frame #39: 0xae6fd1a6 libart.so`art::JNI::CallVoidMethodV(_JNIEnv*, _jobject*, _jmethodID*, char*) + 1046
    frame #40: 0xae465b65 libart.so`art::CheckJNI::CallMethodV(char const*, _JNIEnv*, _jobject*, _jclass*, _jmethodID*, char*, art::Primitive::Type, art::InvokeType) + 1973
    frame #41: 0xae4505cc libart.so`art::CheckJNI::CallVoidMethodV(_JNIEnv*, _jobject*, _jmethodID*, char*) + 76
    frame #42: 0x9293d26c libjingle_peerconnection_so.so`___lldb_unnamed_symbol166$$libjingle_peerconnection_so.so + 48
    frame #43: 0x92e69b38 libjingle_peerconnection_so.so`___lldb_unnamed_symbol23066$$libjingle_peerconnection_so.so + 126
    frame #44: 0x92e8b20f libjingle_peerconnection_so.so`___lldb_unnamed_symbol23780$$libjingle_peerconnection_so.so + 257
    frame #45: 0x92e8e7af libjingle_peerconnection_so.so`___lldb_unnamed_symbol23818$$libjingle_peerconnection_so.so + 253
    frame #46: 0x92e895b0 libjingle_peerconnection_so.so`___lldb_unnamed_symbol23770$$libjingle_peerconnection_so.so + 250
    frame #47: 0x92e8732a libjingle_peerconnection_so.so`___lldb_unnamed_symbol23760$$libjingle_peerconnection_so.so + 892
    frame #48: 0x92e86b02 libjingle_peerconnection_so.so`___lldb_unnamed_symbol23758$$libjingle_peerconnection_so.so + 138
    frame #49: 0x92eaf07e libjingle_peerconnection_so.so`___lldb_unnamed_symbol25019$$libjingle_peerconnection_so.so + 58
    frame #50: 0x92a930b1 libjingle_peerconnection_so.so`___lldb_unnamed_symbol5888$$libjingle_peerconnection_so.so + 39
    frame #51: 0x92a930e5 libjingle_peerconnection_so.so`___lldb_unnamed_symbol5889$$libjingle_peerconnection_so.so + 33
    frame #52: 0x92aa2653 libjingle_peerconnection_so.so`___lldb_unnamed_symbol6419$$libjingle_peerconnection_so.so + 173
    frame #53: 0x92abd108 libjingle_peerconnection_so.so`___lldb_unnamed_symbol7182$$libjingle_peerconnection_so.so + 146
    frame #54: 0x92abd070 libjingle_peerconnection_so.so`___lldb_unnamed_symbol7181$$libjingle_peerconnection_so.so + 30
    frame #55: 0x92abcebe libjingle_peerconnection_so.so`___lldb_unnamed_symbol7179$$libjingle_peerconnection_so.so + 108
    frame #56: 0xb11819b6 libc.so`__pthread_start(void*) + 54
    frame #57: 0xb113150c libc.so`__start_thread + 76
    frame #58: 0xb112fda7 libc.so`__bionic_clone + 71

Sami Kalliomäki

unread,
Feb 22, 2018, 3:44:43 AM2/22/18
to discuss-webrtc
It is possible there is a problem here since I don't think the new method is exercised by any tests. Could you file a bug report with full logs?

--

---
You received this message because you are subscribed to the Google Groups "discuss-webrtc" group.
To unsubscribe from this group and stop receiving emails from it, send an email to discuss-webrtc+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/discuss-webrtc/a377def3-cb6a-4973-bedc-143b2431715d%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Harald Alvestrand

unread,
Feb 22, 2018, 6:11:22 AM2/22/18
to WebRTC-discuss
What's the version?

There was a known bug here that got fixed in 65.xxx.0.61.


Tomáš Paseka

unread,
Apr 10, 2018, 9:20:21 AM4/10/18
to discuss-webrtc
Sorry about late answer, I was busy.

I've tested it with 66 and it's been working just fine.

Thanks for info.
To unsubscribe from this group and stop receiving emails from it, send an email to discuss-webrt...@googlegroups.com.

--

---
You received this message because you are subscribed to the Google Groups "discuss-webrtc" group.
To unsubscribe from this group and stop receiving emails from it, send an email to discuss-webrt...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages