missed INVITEs & memory leak

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



  Hi All,

I'm working on a project using the simple pjsip interface.  The basic 
function is to act as a redirect server.  Everything works well until I 
get to about 250 CPS.  At that point, I start getting timeouts for a few 
of the INVITEs, and the endpoint pool starts growing, specifically, the 
udp and ua pools:

before:
10/19/10 08:55:13.134 17075:17077 sip_endpoint.c  pjsip_endpt_dump()
10/19/10 08:55:13.134 17075:17077 sip_endpoint.c  Dumping endpoint 
0x8a44b6c:
10/19/10 08:55:13.134 17075:17077       cachpool   Dumping caching pool:
10/19/10 08:55:13.134 17075:17077       cachpool     Capacity=0, 
max_capacity=0, used_cnt=6
10/19/10 08:55:13.134 17075:17077       cachpool    Dumping all active 
pools:
10/19/10 08:55:13.134 17075:17077       cachpool        
pept0x8a44b08:    46564 of    48096 (96%) used
10/19/10 08:55:13.134 17075:17077       cachpool         
udp0x8a50b50:      760 of     1024 (74%) used
10/19/10 08:55:13.134 17075:17077       cachpool         
rtd0x8a50f60:     6976 of    12096 (57%) used
10/19/10 08:55:13.134 17075:17077       cachpool             
tsxlayer:     4332 of     5120 (84%) used
10/19/10 08:55:13.134 17075:17077       cachpool          
ua0x8a552c0:     2320 of     3072 (75%) used
10/19/10 08:55:13.134 17075:17077       cachpool                
evsub:      780 of     1024 (76%) used
10/19/10 08:55:13.134 17075:17077       cachpool    Total     61732 
of     70432 (87 %) used!
10/19/10 08:55:13.134 17075:17077 sip_endpoint.c   Endpoint pool 
capacity=48096, used_size=46564

after 1641 failed calls:
10/19/10 08:57:48.527 17075:17077 sip_endpoint.c  pjsip_endpt_dump()
10/19/10 08:57:48.527 17075:17077 sip_endpoint.c  Dumping endpoint 
0x8a44b6c:
10/19/10 08:57:48.527 17075:17077       cachpool   Dumping caching pool:
10/19/10 08:57:48.527 17075:17077       cachpool     Capacity=0, 
max_capacity=0, used_cnt=6
10/19/10 08:57:48.527 17075:17077       cachpool    Dumping all active 
pools:
10/19/10 08:57:48.527 17075:17077       cachpool        
pept0x8a44b08:    46564 of    48096 (96%) used
10/19/10 08:57:48.528 17075:17077       cachpool         
udp0x8a50b50:    12100 of    12800 (94%) used <-- grew
10/19/10 08:57:48.528 17075:17077       cachpool         
rtd0x8a50f60:     6976 of    12096 (57%) used
10/19/10 08:57:48.528 17075:17077       cachpool             
tsxlayer:     4332 of     5120 (84%) used
10/19/10 08:57:48.528 17075:17077       cachpool          
ua0x8a552c0:    27152 of    28672 (94%) used <-- grew
10/19/10 08:57:48.528 17075:17077       cachpool                
evsub:      780 of     1024 (76%) used
10/19/10 08:57:48.528 17075:17077       cachpool    Total     97904 
of    107808 (90 %) used!
10/19/10 08:57:48.528 17075:17077 sip_endpoint.c   Endpoint pool 
capacity=48096, used_size=46564

A few more clues:
1) When the timeouts occur, I see the INVITE is retransmitted 4 times, 
but my application never receives notification.
2) The Call-ID of a missing INVITE never shows up in my application or 
the pjsip logs.
3) Other calls complete successfully during the time some are timing out.
4) Traffic is generated using SIPp.
5) The memory leak will grow to the point that the system becomes 
sluggish and all calls fail.
6) I'm using pjlb version 1.8, but have also verified this behavior with 
version 1.3.
7) This is a linux system.
8) I don't see anything that look like error messages or warnings in the 
pjsip log.

My assumption is that the 1st INVITE has been passed to my 
on_rx_request() callback function, but something (race condition?) 
prevents it from being passed to my application.  The library then 
ignores the retransmitted INVITEs because it thinks the first one is 
already being handled.

Any suggestions for sorting this out would be greatly appreciated.

Thanks,
--Mike




[Index of Archives]     [Asterisk Users]     [Asterisk App Development]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [Linux API]
  Powered by Linux