Windows Phone 的 Linphone 崩溃 - System.Exception:RPC 服务器不可用。 (HRESULT 异常:0x800706BA)

Linphone for Windows Phone Crash - System.Exception: The RPC server is unavailable. (Exception from HRESULT: 0x800706BA)

我得到了 Windows Phone 的 git 源代码 (linphone-wp)。我通过了自述文件中的所有步骤并成功编译了该项目。我正在使用 Visual Studio 2013。我部署了应用程序。我可以访问任何屏幕,但在我输入真实 SIP 帐户的有效连接数据并成功注册 SIP 帐户后,我收到此错误和应用程序崩溃:

   {System.Exception: The RPC server is unavailable. (Exception from HRESULT: 0x800706BA)
   at Linphone.Core.OutOfProcess.Server.get_LinphoneCore()
   at Linphone.Model.LinphoneManager.get_LinphoneCore()
   at Linphone.Dialer.IsAccountConfigured()
   at Linphone.Dialer.BuildLocalizedApplicationBar()
   at Linphone.Dialer.OnNavigatedTo(NavigationEventArgs e)
   at Microsoft.Phone.Controls.PhoneApplicationPage.InternalOnNavigatedTo(NavigationEventArgs e)
   at Microsoft.Phone.Controls.PhoneApplicationPage.Microsoft.Phone.Controls.IPhoneApplicationPage.InternalOnNavigatedToX(NavigationEventArgs e)
   at System.Windows.Navigation.NavigationService.RaiseNavigated(Object content, Uri uri, NavigationMode mode, Boolean isNavigationInitiator, IPhoneApplicationPage existingContentPage, IPhoneApplicationPage newContentPage)
   at System.Windows.Navigation.NavigationService.CompleteNavigation(DependencyObject content, NavigationMode mode)
   at System.Windows.Navigation.NavigationService.<>c__DisplayClass7.<NavigateCore_StartNavigation>b__4()}

启用本机代码调试模式后:

First-chance exception at 0x6B319D91 (libantlr3c.dll) in HeadlessHost.exe: 0xC0000005: Access violation reading location 0x00000034.
Unhandled exception at 0x6B319D91 (libantlr3c.dll) in HeadlessHost.exe: 0xC0000005: Access violation reading location 0x00000034.

调用堆栈:

libantlr3c.dll!toStringSS(ANTLR3_TOKEN_STREAM_struct * ts, unsigned int start, unsigned int stop) Line 569  C
libantlr3c.dll!toStringTT(ANTLR3_TOKEN_STREAM_struct * ts, ANTLR3_COMMON_TOKEN_struct * start, ANTLR3_COMMON_TOKEN_struct * stop) Line 584  C
belle-sip_no_tunnel.dll!synpred1_belle_sip_message_fragment(belle_sip_messageParser_Ctx_struct * ctx) Line 202429   C
belle-sip_no_tunnel.dll!synpred1_belle_sip_message(belle_sip_messageParser_Ctx_struct * ctx) Line 203391    C
belle-sip_no_tunnel.dll!dfa2_sst(belle_sip_messageParser_Ctx_struct * ctx, ANTLR3_BASE_RECOGNIZER_struct * recognizer, ANTLR3_INT_STREAM_struct * is, ANTLR3_CYCLIC_DFA_struct * dfa, int s) Line 58555 C
libantlr3c.dll!antlr3dfapredict(void * ctx, ANTLR3_BASE_RECOGNIZER_struct * rec, ANTLR3_INT_STREAM_struct * is, ANTLR3_CYCLIC_DFA_struct * cdfa) Line 99    C
belle-sip_no_tunnel.dll!common_request(belle_sip_messageParser_Ctx_struct * ctx) Line 165724    C
belle-sip_no_tunnel.dll!message_raw(belle_sip_messageParser_Ctx_struct * ctx, unsigned int * length) Line 165540    C
belle-sip_no_tunnel.dll!belle_sip_message_parse_raw(const char * buff, unsigned int buff_length, unsigned int * message_length) Line 133    C
belle-sip_no_tunnel.dll!belle_sip_channel_parse_stream(belle_sip_channel * obj, int end_of_stream) Line 509 C
belle-sip_no_tunnel.dll!belle_sip_channel_process_stream(belle_sip_channel * obj, int eos) Line 543 C
belle-sip_no_tunnel.dll!belle_sip_channel_process_read_data(belle_sip_channel * obj) Line 576   C
belle-sip_no_tunnel.dll!belle_sip_channel_process_data(belle_sip_channel * obj, unsigned int revents) Line 598  C
belle-sip_no_tunnel.dll!on_udp_data(belle_sip_udp_listening_point * lp, unsigned int events) Line 190   C
belle-sip_no_tunnel.dll!belle_sip_main_loop_iterate(belle_sip_main_loop * ml) Line 448  C
belle-sip_no_tunnel.dll!belle_sip_main_loop_run(belle_sip_main_loop * ml) Line 478  C
belle-sip_no_tunnel.dll!belle_sip_main_loop_sleep(belle_sip_main_loop * ml, int milliseconds) Line 490  C
belle-sip_no_tunnel.dll!belle_sip_stack_sleep(belle_sip_stack * stack, unsigned int milliseconds) Line 200  C
LibLinphone_no_tunnel.dll!sal_iterate(Sal * sal) Line 745   C
LibLinphone_no_tunnel.dll!linphone_core_iterate(_LinphoneCore * lc) Line 2608   C
Linphone.Core.dll!Linphone::Core::LinphoneCore::IterateEnabled::set::__l12::<lambda>(Windows::Foundation::IAsyncAction ^ action) Line 1533  C++
Linphone.Core.dll!Platform::Details::__abi_FunctorCapture1<void <lambda>(Windows::Foundation::IAsyncAction ^),void,Windows::Foundation::IAsyncAction ^>::Invoke(Windows::Foundation::IAsyncAction ^ __arg0) Line 857    C++
[External Code] 
[Frames below may be incorrect and/or missing, no symbols loaded for THREADPOOLWINRT.DLL]

我在模拟器和真实设备 (Lumia 640 XL WP8.1 Update 2) 上都试过了,但我得到了同样的错误。

phone 上的日志不包含任何错误消息。

如果我输入密码错误,则会收到 "bad credentials" 消息。只有在 SIP 服务器上注册成功后才会发生崩溃。

请帮我解决这个问题。欢迎任何建议。

经过长时间的调试,我找到了问题的原因。该问题与

中配置的推送通知功能有关

linphone-wp\Linphone\App.xaml.cs

// Initialize the push channel 
InitPushChannel();

// Initialize the task to listen to incoming call notifications on the push channel 
InitHttpNotificationTask();

我没有使用推送通知服务,所以我评论了上面的代码并解决了问题。