Hi Ilan,

Ilan Aelion wrote:

> Hi David, all,
> 
> I had the same problem more or less on a x86_64 (Intel Xeon). I run
> configure with or without --with-cflags=-m64 flag, then compile (and
> receive a few ominous warnings) and finally try to run the bearer box,
> which crashes immediately.
> 
> The compiler issues warnings that seem word width related for
> * gw/bb_boxc.c
> * gw/smsc/smsc_at.c
> * gwlib/octstr.c
> 
> Here's a tiny patch for octstr.c that eliminates the SEGV (as well as the
> compiler warnings for this file) on x86_64:
> 
> Index: octstr.c
> ===================================================================
> RCS file: /home/cvs/gateway/gwlib/octstr.c,v
> retrieving revision 1.163
> diff -u -r1.163 octstr.c
> --- octstr.c    11 Aug 2004 16:41:29 -0000      1.163
> +++ octstr.c    31 Dec 2004 12:02:37 -0000
> @@ -79,7 +79,7 @@
>   * Unfortunately some platforms base va_list an an array type
>   * which makes passing of the &args a bit tricky
>   */
> -#if defined(__linux__) && (defined(__powerpc__) || defined(__s390__))
> +#if defined(__linux__) && (defined(__powerpc__) || defined(__s390__) ||
> defined(__x86_64))
>  #define VARGS(x)   (x)
>  #define VALPARM(y) va_list y
>  #define VALST(z)   (z)
> 

commited to cvs. Thanks!

> If you want to try the same thing for your platform, you'll need to add a
> test
> using  the correct macro for AMD64 rather than x86_64. If you're not sure
> what it is, check what predefined macros you have. To get a list of
> predefined macros, try
> 
> $ echo blah | cpp -dM
> 
> 
> This still doesn't fix the warnings for the other two files, perhaps
> kannel gurus might be able to fix those as well? Here is the compiler
> output:
> 
> gw/bb_boxc.c: In function `run_smsbox':
> gw/bb_boxc.c:584: warning: cast from pointer to integer of different size
> gw/bb_boxc.c: In function `run_wapbox':
> gw/bb_boxc.c:677: warning: cast from pointer to integer of different size
> gw/bb_boxc.c: In function `wait_for_connections':
> gw/bb_boxc.c:918: warning: cast to pointer from integer of different size
> gw/bb_boxc.c: In function `smsboxc_run':
> gw/bb_boxc.c:937: warning: cast from pointer to integer of different size
> gw/bb_boxc.c: In function `wapboxc_run':
> gw/bb_boxc.c:995: warning: cast from pointer to integer of different size
> 
> - figures, since sizeof(void *) != sizeof(int) on a 64 bit OS. But why are
> the file descriptors being passed as void pointers in the first place?
> 

patch will follow on ML...

> 
> gw/smsc/smsc_at.c: In function `at2_read_buffer':
> gw/smsc/smsc_at.c:192: warning: comparison is always false due to limited
> range of data type
> gw/smsc/smsc_at.c:193: warning: overflow in implicit constant conversion
> 
> - SSIZE_MAX is LONG_MAX rather than INT_MAX on a 64 bit OS. But since an
> int can't be greater than INT_MAX, the condition would never be true
> anyway.

fixed in cvs.

> 
> cheers,
> - Ilan
> 
>>
>> Date: Sat, 4 Dec 2004 16:38:06 +0000
>> From: David Blackburn <[EMAIL PROTECTED]>
>> Subject: AMD64 Segmentation fault
>> To: devel@kannel.org
>> Message-ID: <[EMAIL PROTECTED]>
>> Content-Type: text/plain; charset=US-ASCII
>> 
>> Hi
>> 
>> Is anyone running kannel on a AMD64 processor ? I have recompiled
>> kannel using the same parameters as on my AMD XP and I keep getting
>> seg faults when I try and start the bearerbox.  I have tried with a
>> cut down config ( see below ) and still gets no further that below.
>> 
>> Any help would be greatly apreciated.
>> 
>> Regards
>> Dave
>> 
>> 
>> # ./bearerbox
>> 2004-12-04 16:33:26 [12947] [0] INFO: Debug_lvl = -1, log_file =
>> <none>, log_lvl = 0
>> 2004-12-04 16:33:26 [12947] [0] WARNING: DLR: using default 'internal'
>> for storage type.
>> 2004-12-04 16:33:26 [12947] [0] INFO: DLR using storage type: internal
>> Segmentation fault
>> 
>> kannel.conf
>> group = core
>> admin-port = 13000
>> admin-password = bar
>> 
>> Build Parametters.
>> ./configure --prefix=/test/ktest --disable-ssl
>> --with-mysql-dir=/usr/lib64/mysql/
>> 
>> 
>> 
>>

-- 
Thanks,
Alex


Reply via email to