Linphone падает, когда сетевое соединение потеряно - объект освобожден дважды или поврежден - PullRequest
0 голосов
/ 30 марта 2020

Я использую библиотеку Linphone для приложения, чтобы обмениваться некоторой информацией с SIP-сервером. Все работает нормально, регистрация пользователя на SIP-сервере выполняется правильно, а сообщения (между SIP-сервером и приложением) обмениваются как следует. Однако, когда устройство теряет соединение с сетью (мобильные данные и Wi-Fi), приложение вылетает со следующими журналами:

I/myAppLyn: Changing [client] [REGISTER] transaction [0xc8574720], from state [COMPLETED] to [TERMINATED]  
Client internal REGISTER transaction [0xc8574720] terminated  
transaction [0xc8574720]: ending transaction background task with id=[2e62].  
I/myAppLyn: bellesip_wake_lock_release(): Android wake lock released [ref=0x2e62]  
I/27032020: No available network!  
I/myAppLyn: [Platform Helper] [Network Manager 26] A network has been lost  
I/myAppLyn: [Platform Helper] No connectivity: setting network unreachable  
I/myAppLyn: SIP network reachability state is now [DOWN]  
I/myAppLyn: Refresher [0xe17c0300] stopped.  
Destroying op [0xc5160c80] of type [SalOpRegister]  
Refresher [0xe17c0300] stopped.  
Transaction [0xc8574720] deleted  
I/myAppLyn: Transaction [0xc3cdb480] deleted  
**E/myAppLyn: Object [0xc3e0ad00] freed twice or corrupted !**  
Object type might be [belle_sip_header_address_t]  
A/myAppLyn: Fatal object error encountered, aborting.  
A/: Aborting  
A/libc: Fatal signal 6 (SIGABRT), code -6 (SI_TKILL) in tid 22455 (ndroid.myApp), pid 22455 (ndroid.myApp)  
Process 22455 terminated.  

Обратите внимание, что cra sh происходит только при регистрации в SIP сервер был выполнен раньше. Произошла только одна регистрация (почему объект освобожден дважды?). Если не было зарегистрировано ни одной регистрации, и приложение теряет соединение с сетью, проблема не возникает / cra sh (появляется диалоговое окно, информирующее об отсутствии соединения с сетью) ... Я проверил, что в библиотеке есть OnNetworkReachable метод и я попытался вручную остановить выполнение библиотеки Linphone, установив
core.setNetworkReachable (false);
, а затем снова вручную установите его в значение true при восстановлении соединения. Я также попробовал это с android методами для прослушивателей изменений подключения ... но проблема остается ... Должен ли я уничтожить ядро ​​и воссоздать его после того, как сеть достижима? Почему он выделил два объекта? Не могли бы вы дать совет?

Заранее благодарим за помощь,

...