Re: Possible race condition when clear_old_concat_parts is called
"Vincent CHAVANIS" <[email protected]>
| Newsgroups | gmane.comp.mobile.kannel.devel |
|---|---|
| Message-ID | <090301c80f20$82b095c0$9600a8c0@vince> |
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)