Re: Kannel crashes sendsms in emi2 and dlrmask=7

Andreas Fink <[email protected]>
Newsgroups gmane.comp.mobile.kannel.devel
Message-ID <[email protected]>
On Montag, Dezember 2, 2002, at 07:05  Uhr, Stipe Tolj wrote:

> Andreas Fink schrieb:
>>
>> On Montag, Dezember 2, 2002, at 06:25 Uhr, Stipe Tolj wrote:
>>
>>      João Miranda schrieb:
>>
>>           My RDBMS is Oracle, and it seems to me that the operation 
>> is list_lock().
>>
>>      have you located at which position in Kannel's code this 
>> happens?!
>>
>> I have a slightly modified version of Kannel's gwlib which modifies a 
>> lot of kannel gwlib calls with macro's passing the location where 
>> they are called from so debug calls will show the real place, not the 
>> one in gwlib. Nowadays its often not very helpful to know that 
>> octstr_xxx function has an assert without knowing which calling 
>> functions did the "bad" thing like modifying an octstr which is NULL 
>> etc.
>
> so why didn't you post a patch?! :))


Its not a patch, its a modified version of the gwlib directory which 
was copied out from the kannel cvs which I use in one of my own 
projects. I've put my current version on 
http://www.fink.org/gwlib-modif.tar.gz.

You can not simply copy it over to run with it and some very recent 
changes in gwlib might also not be in it.

What did I do? Here's an example to give you the idea:

before:
in octstr.h

	char *octstr_get_cstr(Octstr *ostr)

replaced with something like this:

	char *octstr_get_cstr_real(Octstr *ostr, const char *file, long line, 
const char *func);
	#define octstr_get_cstr(ostr) 	(octstr_get_cstr_real(ostr, __FILE__, 
__LINE__, __func__))


in octstr.c:

changed function octstr_get_cstr to:

char *octstr_get_cstr_real(Octstr *ostr, const char *file, long line,
                            const char *func)
{
     if (!ostr)
         return "(null)";
     seems_valid_real(ostr, file, line, func);
     if (ostr->len == 0)
         return "";
     return ostr->data;
}


seems_valid_real is a modified version of seems_valid which points out 
the called locations etc.
Basically all important functions pass along the calling locations from 
the place the original macro is called from.

Most functions of octstr are done this way as well as a few list 
functions. The biggest problem is octstr_format and 
octstr_format_append.


Andreas Fink
Global Networks Switzerland AG

------------------------------------------------------------------
Tel: +41-61-6666333  Fax: +41-61-6666334   Mobile: +41-79-2457333
Global Networks, Inc. Clarastrasse 3, 4058 Basel, Switzerland
Web: http://www.global-networks.ch/      [email protected]
------------------------------------------------------------------
Member of the GSM Association


Andreas Fink
Global Networks Switzerland AG

------------------------------------------------------------------
Tel: +41-61-6666333  Fax: +41-61-6666334   Mobile: +41-79-2457333
Global Networks, Inc. Clarastrasse 3, 4058 Basel, Switzerland
Web: http://www.global-networks.ch/      [email protected]
------------------------------------------------------------------
Member of the GSM Association
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.