use*_*512 5 c++ pjsip android-ndk
SIGSEGV SEGV_MAPERR at 0x00000008
0 libpjsua2.so 0x56585a88 pj::Call::getInfo() const
1 libpjsua2.so 0x56546b44 std::allocator<pj::CallMediaInfo>::allocator()
Run Code Online (Sandbox Code Playgroud)
我正在使用pjsip作为我的一个爱好项目(符合GPL).在上方,您可以看到从crashlytics收到的堆栈跟踪.我正在为pjsip使用Java包装器.
有很多用户(50%)受此错误的影响,但是我无法在本地设备上重现它.
不确定,但我怀疑以下java调用导致错误.哪个通过JNI调用C++
public void notifyCallState(MyCall call) {
if (currentCall == null || call.getId() != currentCall.getId())
return;
CallInfo ci;
try {
ci = call.getInfo();
} catch (Exception e) {
ci = null;
}
Message m = Message.obtain(handler, MSG_TYPE.CALL_STATE, ci);
m.sendToTarget();
if (ci != null && ci.getState() == pjsip_inv_state.PJSIP_INV_STATE_DISCONNECTED) {
currentCall = null;
}
}
Run Code Online (Sandbox Code Playgroud)
代码片段来自psjua下载的示例.链接到http repo.我的代码是一样的.任何帮助高度赞赏
从堆栈跟踪看起来像是callnull,并且getId方法位于 0x8 偏移处。
如果确实如此,修复方法是确保notifyCallState不使用null参数调用,或者在方法内部检查它,即:
if (call == null || currentCall == null || call.getId() != currentCall.getId())
return;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
402 次 |
| 最近记录: |