Hi,

 

I've been hunting a memory error in publish handling the last couple of days.

The error is on our old but good 3.1.x presence server.

Using memory debug, I located the memory leak in modules/presence/hash.c, function insert_phtable, line 492 (in trunk):

p= (pres_entry_t*)shm_malloc(size);

 

As far I can see there are two errors when deleting publish htable entries

1. When calling delete_phtable pres.event->type is used instead of pres.event->evp->type

 

2. When creating publish hashtable, p->publ_count is not set. (defaults to 0)

In delete_phtable, the following code is present

p->publ_count--;

if(p->publ_count== 0)

p->publ_count is probably decremented to -1 (unless the user have two active dialogs)

 

I attach a patch, which I would carefully test in a test environment :-)

 

Regards,

Kristian Høgh

Uni-tel

 

 

On Monday 12 January 2015 15:39:27 Nuno Reis wrote:

> Hello all.

>

> I'm consistently watching a memory increase in kamailio when dealing with

> PRESENCE events, namely SIP PUBLISH events. The system eventually hangs

> running out of memory.

> This behavior is seen at least in kamailio 4.1 and 4.2. I'm currently using

> the latest stable 4.2.2.

> If I disable the SIP PUBLISH handling in kamailio i don't observe the issue

> anymore but as a side effect I don't have presence (name BLFs) also.

> What do you think can be the right approach here? Should I open an issue in

> github for this? Should I run kamailio under valgrind for some time? Are

> there any other possible debug hints here?

> Please find attached a code snippet with the presence related parts I'm

> using right now.

> Looking forward to hear from you.

>

> Best Regards,

>

> --

>

> *Nuno Miguel Reis* | *Unified Communication** Systems*

> M. +351 913907481 | nreis@wavecom.pt

> WAVECOM-Soluções Rádio, S.A.

> Cacia Park | Rua do Progresso, Lote 15

> 3800-639 AVEIRO | Portugal

> T. +351 309 700 225 | F. +351 234 919 191

> *GPS

> <http://maps.google.com/maps/ms?msa=0&msid=202333747613191340808.0004b4b227a6144f0df88>

> | www.wavecom.pt <http://www.wavecom.pt/>** <http://www.wavecom.pt/>*

>

> [image: Description: Description: WavecomSignature]

> <http://www.wavecom.pt/pt/wavecom/premios.php>

>

> [image: Publicity] <http://www.wavecom.pt/pt/mail_eventos.php>