unispeech / unimrcp

Open source cross-platform implementation of MRCP protocol
http://www.unimrcp.org
Apache License 2.0
380 stars 167 forks source link

Segmentation fault when Receive SIP Event [nua_i_ack] Status 200 OK #236

Closed yule2001 closed 5 years ago

yule2001 commented 5 years ago

When I use FreeSwitch and unimrcp , it happened a "Segmentation fault" error. The sever log is: 2019-04-28 11:41:32:502787 [INFO] Receive SIP Event [nua_i_invite] Status 100 Trying [SIP-Agent-1] 2019-04-28 11:41:32:502798 [INFO] Receive SIP Event [nua_i_state] Status 100 Trying [SIP-Agent-1] 2019-04-28 11:41:32:502803 [NOTICE] SIP Call State [received] 2019-04-28 11:41:32:502816 [INFO] Create Session 0x7f86ac001b68 [uni2] 2019-04-28 11:41:32:502821 [INFO] Remote SDP 0x7f86ac001b68 v=0 o=FreeSWITCH 4861052720458623237 3284218537139164615 IN IP4 10.0.0.109 s=- c=IN IP4 10.0.0.109 t=0 0 m=application 9 TCP/MRCPv2 1 a=setup:active a=connection:new a=resource:speechrecog a=cmid:1 m=audio 4090 RTP/AVP 0 8 96 a=rtpmap:0 PCMU/8000 a=rtpmap:8 PCMA/8000 a=rtpmap:96 L16/8000 a=sendonly a=mid:1

2019-04-28 11:41:32:502894 [NOTICE] Add Session 2019-04-28 11:41:32:502901 [INFO] Receive Offer 0x7f86ac001b68 [c:1 a:1 v:0] 2019-04-28 11:41:32:502907 [INFO] Found MRCP Engine [Aliyun-Recog-1] for Resource [speechrecog] 0x7f86ac001b68 2019-04-28 11:41:32:502956 [INFO] Add Pending Control Channel ed15866bb09549ea@speechrecog [1] 2019-04-28 11:41:32:511870 [INFO] Enable RTP Session 10.0.0.109:5002 2019-04-28 11:41:32:511939 [INFO] Open RTP Receiver 10.0.0.109:5002 <- 10.0.0.109:4090 playout [50 ms] bounds [0 - 600 ms] adaptive [1] skew detection [1] 2019-04-28 11:41:32:511945 [INFO] Media Path 0x7f86ac001b68 Source->[PCMU/8000/1]->Decoder->[LPCM/8000/1]->Bridge->[LPCM/8000/1]->Sink 2019-04-28 11:41:32:511958 [INFO] [Luckyai] start recog. 2019-04-28 11:41:32:512021 [INFO] Send Answer 0x7f86ac001b68 [c:1 a:1 v:0] Status OK 2019-04-28 11:41:32:512034 [INFO] Local SDP 0x7f86ac001b68 v=0 o=UniMRCPServer 0 0 IN IP4 10.0.0.109 s=- c=IN IP4 10.0.0.109 t=0 0 m=application 1544 TCP/MRCPv2 1 a=setup:passive a=connection:new a=channel:ed15866bb09549ea@speechrecog a=cmid:1 m=audio 5002 RTP/AVP 0 a=rtpmap:0 PCMU/8000 a=recvonly a=mid:1

2019-04-28 11:41:32:512267 [INFO] Receive SIP Event [nua_i_state] Status 200 OK [SIP-Agent-1] 2019-04-28 11:41:32:512274 [NOTICE] SIP Call State 0x7f86ac001b68 [completed] 2019-04-28 11:41:32:512684 [NOTICE] Accepted TCP/MRCPv2 Connection 10.0.0.109:1544 <-> 10.0.0.109:41208 2019-04-28 11:41:32:512866 [INFO] Receive SIP Event [nua_i_ack] Status 200 OK [SIP-Agent-1] 2019-04-28 11:41:32:512873 [INFO] Segmentation fault

This error did not occurred every time. So how do I avoid to it?

unimrcp version : 1.6.0 FreeSwitch version : 1.6.20~64bit system : CentOS Linux release 7.4.1708

achaloyan commented 5 years ago

I would assume the problem is encountered only when a 3-rd party plugin is used such as Aliyun-Recog-1. Try to run unimrcpserver under valgrind or collect a coredump and analyze backtrace.

Otherwise, there is nothing wrong in the provided logs and the same scenario has been used millions of times with other plugins without any problems.