SIGSEGV SEGV_MAPERR at 0x00000008
0 libpjsua2.so 0x56585a88 pj::Call::getInfo() const
1 libpjsua2.so 0x56546b44 std::allocator<pj::CallMediaInfo>::allocator()
Tôi đang sử dụng pjsip cho một trong các dự án sở thích của mình (tuân thủ GPL). Ở trên bạn có thể thấy stacktrace nhận được từ crashlytics. Tôi đang sử dụng Java wrapper cho pjsip.Cách điều tra và khắc phục sự cố libpjsua2.so
Có rất nhiều người dùng (50%) bị ảnh hưởng bởi lỗi này, tuy nhiên tôi không thể tạo lại trên thiết bị cục bộ của mình.
Không chắc chắn nhưng tôi nghi ngờ rằng cuộc gọi java sau dẫn đến lỗi. Mà gọi C++ thông qua JNI
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;
}
}
đoạn mã được lấy từ ví dụ mà đến từ psjua download. Link to http repo. Mã của tôi là như nhau. Bất kỳ trợ giúp nào được đánh giá cao
Vui lòng sửa thẻ từ c sang C++ hoặc bất kỳ ngôn ngữ nào. Nó không phải là C. –
Dấu vết SIGSEGV của bạn là C++. C không có std :: allocator. –
Đã sửa lỗi. Thật vậy pjsua2 được viết trên C++ – user12384512