Re: Possible race condition when clear_old_concat_parts is called

Alexander Malysh <[email protected]>
Newsgroups gmane.comp.mobile.kannel.devel
Message-ID <[email protected]>
Hi,

sorry for delay. Patch commited to cvs...

Vincent CHAVANIS wrote:

> As no objections here,
> 
> Please commit to CVS.
> 
> Vincent.
> 
> --
> Telemaque - 06560 SOPHIA-ANTIPOLIS - (FR)
> Service Technique/Reseau - NOC
> Developpement SMS/MMS/Kiosques
> http://www.telemaque.fr/
> [email protected]
> Tel : +33 4 92 90 99 84 (fax 9142)
> ----- Original Message -----
> From: "Vincent CHAVANIS" <[email protected]>
> To: <[email protected]>
> Sent: Monday, October 15, 2007 1:42 PM
> Subject: Re: Possible race condition when clear_old_concat_parts is called
> 
> 
>>
>> Here is the patch to fix this issue (thanks Paul)
>>
>> diff -rauw /gateway-cvs/gw/bb_smscconn.c /gateway/gw/bb_smscconn.c
>> --- /gateway-cvs/gw/bb_smscconn.c       2007-06-12 16:08:15.000000000
>> +0200
>> +++ /gateway/gw/bb_smscconn.c   2007-10-15 10:40:57.000000000 +0200
>> @@ -1254,7 +1254,7 @@
>>     Octstr *key;
>>
>>     /* not initialised, go away */
>> -    if (incoming_concat_msgs != NULL)
>> +    if (incoming_concat_msgs == NULL)
>>         return;
>>
>>     debug("bb.sms.splits", 0, "clear_old_concat_parts called");
>>
>>
>> Vincent
>>
>>
>> ----- Original Message -----
>> From: "Vincent CHAVANIS" <[email protected]>
>> To: <[email protected]>
>> Cc: "Paul Bagyenda" <[email protected]>
>> Sent: Monday, October 15, 2007 1:19 AM
>> Subject: Possible race condition when clear_old_concat_parts is called
>>
>>
>>> Only when sms-combine-concatenated-mo is set to 0,
>>> I experienced a segfault in bearbox (bt full traces bellow)
>>> The line where it crashes is :  keys = dict_keys(incoming_concat_msgs)
>>> (gw/bb_smscconn.c)
>>> I've added a printf after it and it segfaults without showing my debug
>>> message,
>>> so we can be sure dict_keys segfault.
>>> Maybe we can have here a possible race condition.
>>>
>>> @Paul,Alex, have you experiencing that issue before ?
>>>
>>> Vincent.
>>>
>>> refs:
>>> 2007-10-10 15:43:50.191 [22125] [67] DEBUG: HTTP[SMS_7]: Destroying
>>> client information
>>> 2007-10-10 15:43:50.192 [22125] [101] DEBUG: boxc_receiver: got ack
>>> 2007-10-10 15:43:51.001 [22125] [93] DEBUG: clear_old_concat_parts
>>> called Erreur de segmentation (core dumped)
>>>
>>>
>>> Program terminated with signal 11, Segmentation fault.
>>> #0  0x000000000049622f in lock (dict=0x0) at gwlib/dict.c:127
>>> 127         mutex_lock(dict->lock);
>>> (gdb) bt full
>>> #0  0x000000000049622f in lock (dict=0x0) at gwlib/dict.c:127
>>>        __func__ = "lock"
>>> #1  0x0000000000496990 in dict_keys (dict=0x0) at gwlib/dict.c:355
>>>        list = (List *) 0x941a20
>>>        item = (Item *) 0x470ce2a2
>>>        i = 2049294384
>>>        j = 4858217
>>>        __func__ = "dict_keys"
>>> #2  0x0000000000417b25 in clear_old_concat_parts () at
>>> gw/bb_smscconn.c:1263
>>>        keys = (List *) 0x0
>>>        key = (Octstr *) 0x7a25c0f0
>>>        __func__ = "clear_old_concat_parts"
>>> #3  0x0000000000415d17 in sms_router (arg=0x0) at gw/bb_smscconn.c:527
>>>        msg = (Msg *) 0x0
>>>        startmsg = (Msg *) 0x0
>>>        newmsg = (Msg *) 0x0
>>>        ret = 0
>>>        concat_mo_check = 1192029069
>>> #4  0x00000000004988e4 in new_thread (arg=0x98eb40) at
>>> gwlib/gwthread-pthread.c:362
>>>        ret = 0
>>>        p = (struct new_thread_args *) 0x98eb40
>>> #5  0x0000003f312062f7 in start_thread () from /lib64/libpthread.so.0
>>> No symbol table info available.
>>> #6  0x0000003f306d0fbd in clone () from /lib64/libc.so.6
>>> No symbol table info available.
>>>
>>> --
>>> Telemaque - 06560 SOPHIA-ANTIPOLIS - (FR)
>>> Service Technique/Reseau - NOC
>>> Developpement SMS/MMS/Kiosques
>>> http://www.telemaque.fr/
>>> [email protected]
>>> Tel : +33 4 92 90 99 84 (fax 9142)
>>
>>
>>
>>

-- 
Thanks,
Alex
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.