gpt4 book ai didi

c++ - 如何调查和修复 libpjsua2.so 崩溃

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:43:42 28 4
gpt4 key购买 nike

SIGSEGV SEGV_MAPERR at 0x00000008

0 libpjsua2.so 0x56585a88 pj::Call::getInfo() const
1 libpjsua2.so 0x56546b44 std::allocator<pj::CallMediaInfo>::allocator()

我正在为我的爱好项目之一使用 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;
}
}

代码片段取自 psjua 下载的示例。 Link to http repo .我的代码是一样的。非常感谢任何帮助

最佳答案

从堆栈跟踪看来,call 为 null,并且 getId 方法位于 0x8 偏移处。

如果情况确实如此,解决方法是确保 notifyCallState 没有使用 null 参数调用,或者在方法内部检查它,即:

if (call == null || currentCall == null || call.getId() != currentCall.getId())
return;

关于c++ - 如何调查和修复 libpjsua2.so 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30942411/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com