Hi,

Valgrind's memcheck will report suspected leaks and corruprions. Some of them 
lie in system libraries, like your invalid delete, which kannel can do nothing 
about. In such a case you should run it and if experiencing runtime issues look 
for updates or fora for the suspected library. Some of them may be just 
constructs that valgrind doesn't understand, especially in uninitialized jumps. 

Kannel is regularly checked against valgrind, but as you know it depends 
heavily on the scenario you use. Therefore, it would be helpful to:

1) Descibe command line execution (component + arguments).
2) Describe scenario used (i.e. http://localhost:port/cgi-bin/sendsms) so that 
it can be recreated.
3) Include all the relevant valgrind lines, not only where the uninitialized 
jump occurs, but also where the unitialization is created.

BR,
Nikos
  ----- Original Message ----- 
  From: angela86 walczak 
  To: Kannel Devel 
  Sent: Tuesday, October 13, 2009 6:16 PM
  Subject: Memory leaks in OCIEnvCreate()


  Hi, 

  I'm using Centos x64,  CPU Xeon, and gateway-1.4.3 with oracle DLR, 
sqlbox-0.7.2 on oracle, and OCI version: 
  oracle-instantclient-basic-10.2.0.3-1.x86_64.rpm 
  oracle-instantclient-devel-10.2.0.3-1.x86_64.rpm 
  oracle-instantclient-jdbc-10.2.0.3-1.x86_64.rpm 
  oracle-instantclient-sqlplus-10.2.0.3-1.x86_64.rpm 

  Application after compiling with OCI has a lot of memory leaks configure 
attached at the end of an e-mail 
  The application works by not communicating the problems but its size is 
increased from 12mb to 200mb for example, within a week.
  This case is the same as http://www.orafaq.com/forum/t/62399/0/ 
  Tested valgrind bearerbox sqlbox smsbox.

  When the test turned off using the applications 
http://127.0.0.1:13000/shutdown?password=bar
  Request for help how to compile applications that properly had no memory 
problems. 

  Itself after a long time I do not find a solution, once again please help can 
you met with such a problem once already.


  /etc/init.d/kannel 
  #!/bin/sh

  # Configuration file
  CONF=/etc/kannel/kannel.conf
  CONFSQL=/etc/kannel/sqlbox.conf
  # Kannel boxes
  BEARERBOX=/usr/local/sbin/bearerbox
  SMSBOX=/usr/local/sbin/smsbox
  SQLBOX=/usr/local/sbin/sqlbox

  # Debug level: 0..4
  DEBUGLEVEL=1

  # Kannel user account
  USER=kannel

  # Check that boxes and config are ok
  [ -x $BEARERBOX ] || exit 0
  [ -x $SMSBOX ] || exit 0
  [ -x $SQLBOX ] || exit 0
  [ -f $CONF ] || exit 0

  case "$1" in
  start)
         ulimit -n 8192
         echo -n "Starting bearerbox... "
         #$BEARERBOX -v $DEBUGLEVEL --daemonize --user $USER $CONF &
         valgrind --tool=memcheck --log-file=/val/1.out -v $BEARERBOX -v 
$DEBUGLEVEL --user $USER $CONF &
         echo "done"
         echo -n
         sleep 5

         echo -n "Starting sqlbox... "
         #$SMSBOX -v $DEBUGLEVEL --daemonize --user $USER $CONF &
         valgrind --tool=memcheck --log-file=/val/2.out -v $SQLBOX -v 
$DEBUGLEVEL --user $USER $CONFSQL & 

         echo "done"
         echo -n
         sleep 7

         echo -n "Starting smsbox... "
         #$SMSBOX -v $DEBUGLEVEL --daemonize --user $USER $CONF &
         valgrind --tool=memcheck --log-file=/val/3.out -v $SMSBOX -v 
$DEBUGLEVEL --user $USER $CONF &

         echo "done"

         ;;
  stop)

         echo -n "Shutting down sqlbox... "
         killall sqlbox
         echo "done"
         echo -n "Shutting down smsbox... "
         killall smsbox

  Summary of large logs have made a valgrind below.

  EOF . 1.out

  ==12915== 
  ==12915== 860 errors in context 255 of 255:
  ==12915== Conditional jump or move depends on uninitialised value(s)
  ==12915==    at 0x644907A: CMP_BitLengthOfCMPInt (in 
/usr/lib/oracle/10.2.0.3/client64/lib/libnnz10.so)
  ==12915==    by 0x644ADB7: CMP_CMPIntToFixedLenOctetStr (in 
/usr/lib/oracle/10.2.0.3/client64/lib/libnnz10.so)
  ==12915==    by 0x6446067: A_X931RandomGenerateBytes (in 
/usr/lib/oracle/10.2.0.3/client64/lib/libnnz10.so)
  ==12915==    by 0x5503D21: ztcr2rnd (in 
/usr/lib/oracle/10.2.0.3/client64/lib/libclntsh.so.10.1)
  ==12915==    by 0x559577D: ztcsh (in 
/usr/lib/oracle/10.2.0.3/client64/lib/libclntsh.so.10.1)
  ==12915==    by 0x5207FB4: kpusattr (in 
/usr/lib/oracle/10.2.0.3/client64/lib/libclntsh.so.10.1)
  ==12915==    by 0x51BC959: kpulon (in 
/usr/lib/oracle/10.2.0.3/client64/lib/libclntsh.so.10.1)
  ==12915==    by 0x52EAA3F: OCILogon (in 
/usr/lib/oracle/10.2.0.3/client64/lib/libclntsh.so.10.1)
  ==12915==    by 0x4727D1: oracle_open_conn (dbpool_oracle.c:199)
  ==12915==    by 0x471689: dbpool_increase (dbpool.c:186)
  ==12915==    by 0x471AF3: dbpool_create (dbpool.c:152)
  ==12915==    by 0x41C683: dlr_init_oracle (dlr_oracle.c:470)
  ==12915== 
  --12915-- 
  --12915-- used_suppression:      7 dl-hack3
  ==12915== 
  ==12915== ERROR SUMMARY: 9369 errors from 255 contexts (suppressed: 7 from 7)


  EOF 2.out

  ==12917== 303 errors in context 254 of 254:
  ==12917== Conditional jump or move depends on uninitialised value(s)
  ==12917==    at 0x644907A: CMP_BitLengthOfCMPInt (in 
/usr/lib/oracle/10.2.0.3/client64/lib/libnnz10.so)
  ==12917==    by 0x644ADB7: CMP_CMPIntToFixedLenOctetStr (in 
/usr/lib/oracle/10.2.0.3/client64/lib/libnnz10.so)
  ==12917==    by 0x6446067: A_X931RandomGenerateBytes (in 
/usr/lib/oracle/10.2.0.3/client64/lib/libnnz10.so)
  ==12917==    by 0x5503D21: ztcr2rnd (in 
/usr/lib/oracle/10.2.0.3/client64/lib/libclntsh.so.10.1)
  ==12917==    by 0x559577D: ztcsh (in 
/usr/lib/oracle/10.2.0.3/client64/lib/libclntsh.so.10.1)
  ==12917==    by 0x5207FB4: kpusattr (in 
/usr/lib/oracle/10.2.0.3/client64/lib/libclntsh.so.10.1)
  ==12917==    by 0x51BC959: kpulon (in 
/usr/lib/oracle/10.2.0.3/client64/lib/libclntsh.so.10.1)
  ==12917==    by 0x52EAA3F: OCILogon (in 
/usr/lib/oracle/10.2.0.3/client64/lib/libclntsh.so.10.1)
  ==12917==    by 0x41AA41: oracle_open_conn (dbpool_oracle.c:199)
  ==12917==    by 0x4198F9: dbpool_increase (dbpool.c:186)
  ==12917==    by 0x419D63: dbpool_create (dbpool.c:152)
  ==12917==    by 0x40B01D: sqlbox_init_oracle (sqlbox_oracle.c:302)
  ==12917== 
  --12917-- 
  --12917-- used_suppression:      7 dl-hack3
  ==12917== 
  ==12917== ERROR SUMMARY: 3735 errors from 254 contexts (suppressed: 7 from 7)


  EOF 3.out

  ==12930== LEAK SUMMARY:
  ==12930==    definitely lost: 0 bytes in 0 blocks
  ==12930==    indirectly lost: 0 bytes in 0 blocks
  ==12930==      possibly lost: 0 bytes in 0 blocks
  ==12930==    still reachable: 2,064 bytes in 35 blocks
  ==12930==         suppressed: 0 bytes in 0 blocks
  ==12930== Rerun with --leak-check=full to see details of leaked memory
  ==12930== 
  ==12930== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 4 from 4)
  ==12930== 
  ==12930== 1 errors in context 1 of 1:
  ==12930== Invalid free() / delete / delete[]
  ==12930==    at 0x4A05A31: free (vg_replace_malloc.c:325)
  ==12930==    by 0x3959109B6A: ??? (in /lib64/libc-2.5.so)
  ==12930==    by 0x3959109761: ??? (in /lib64/libc-2.5.so)
  ==12930==    by 0x48024E8: _vgnU_freeres (vg_preloaded.c:62)
  ==12930==    by 0x3959033324: exit (in /lib64/libc-2.5.so)
  ==12930==    by 0x395901D97A: (below main) (in /lib64/libc-2.5.so)
  ==12930==  Address 0x62b05a0 is not stack'd, malloc'd or (recently) free'd
  ==12930== 
  --12930-- 
  --12930-- used_suppression:      4 dl-hack3
  ==12930== 
  ==12930== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 4 from 4)


  ./configure --with-oracle 
--with-oracle-includes=/usr/include/oracle/10.2.0.3/client64 
--with-oracle-libs=/usr/lib/oracle/10.2.0.3/client64/lib --enable-ssl 
--enable-start-stop-daemon --enable-debug

  Configuring for Kannel gateway version 1.4.3 ...

  Running system checks ...
  checking build system type... x86_64-unknown-linux-gnu
  checking host system type... x86_64-unknown-linux-gnu
  checking for gcc... gcc
  checking for C compiler default output file name... a.out
  checking whether the C compiler works... yes
  checking whether we are cross compiling... no
  checking for suffix of executables... 
  checking for suffix of object files... o
  checking whether we are using the GNU C compiler... yes
  checking whether gcc accepts -g... yes
  checking for gcc option to accept ISO C89... none needed
  checking for gcc option to accept ISO C99... -std=gnu99
  checking for a BSD-compatible install... /usr/bin/install -c
  checking for ranlib... ranlib
  checking for bison... no
  checking for byacc... no
  checking for flex... no
  checking for lex... no
  checking for ar... ar
  checking for convert... /usr/bin/convert
  checking for perl... /usr/bin/perl
  checking for inline... inline
  checking for special C compiler options needed for large files... no
  checking for _FILE_OFFSET_BITS value needed for large files... no
  checking how to run the C preprocessor... gcc -std=gnu99 -E
  checking for grep that handles long lines and -e... /bin/grep
  checking for egrep... /bin/grep -E
  checking for ANSI C header files... yes
  checking for sys/types.h... yes
  checking for sys/stat.h... yes
  checking for stdlib.h... yes
  checking for string.h... yes
  checking for memory.h... yes
  checking for strings.h... yes
  checking for inttypes.h... yes
  checking for stdint.h... yes
  checking for unistd.h... yes
  checking size of short... 2
  checking size of int... 4
  checking size of long... 8
  checking size of long long... 8
  checking for log in -lm... yes
  checking for accept in -lsocket... no
  checking for inet_ntoa in -lnsl... yes
  checking for inet_ntop in -lresolv... yes
  checking for inet_ntop in -lbind... no
  checking for pthread_exit in -lpthread... yes
  checking for libiconv in -liconv... yes
  checking for ANSI C header files... (cached) yes
  checking sys/ioctl.h usability... yes
  checking sys/ioctl.h presence... yes
  checking for sys/ioctl.h... yes
  checking sys/time.h usability... yes
  checking sys/time.h presence... yes
  checking for sys/time.h... yes
  checking for sys/types.h... (cached) yes
  checking for unistd.h... (cached) yes
  checking sys/poll.h usability... yes
  checking sys/poll.h presence... yes
  checking for sys/poll.h... yes
  checking pthread.h usability... yes
  checking pthread.h presence... yes
  checking for pthread.h... yes
  checking getopt.h usability... yes
  checking getopt.h presence... yes
  checking for getopt.h... yes
  checking syslog.h usability... yes
  checking syslog.h presence... yes
  checking for syslog.h... yes
  checking iconv.h usability... yes
  checking iconv.h presence... yes
  checking for iconv.h... yes
  checking zlib.h usability... yes
  checking zlib.h presence... yes
  checking for zlib.h... yes
  checking execinfo.h usability... yes
  checking execinfo.h presence... yes
  checking for execinfo.h... yes
  checking for stdlib.h... (cached) yes
  checking sys/socket.h usability... yes
  checking sys/socket.h presence... yes
  checking for sys/socket.h... yes
  checking sys/sockio.h usability... no
  checking sys/sockio.h presence... no
  checking for sys/sockio.h... no
  checking netinet/in.h usability... yes
  checking netinet/in.h presence... yes
  checking for netinet/in.h... yes
  checking for net/if.h... yes
  checking for gettimeofday... yes
  checking for select... yes
  checking for socket... yes
  checking for strdup... yes
  checking for getopt_long... yes
  checking for localtime_r... yes
  checking for gmtime_r... yes
  checking for backtrace... yes
  checking for srandom... yes
  checking for getopt... yes
  checking for gethostbyname_r... yes
  checking for which type of gethostbyname_r... 6
  checking for socklen_t in <sys/socket.h>... yes
  checking for getopt in <stdio.h>... no
  checking for getopt in <unistd.h>... yes
  checking regex.h usability... yes
  checking regex.h presence... yes
  checking for regex.h... yes
  checking for regcomp... yes

  Checking for POSIX threads support ...
  checking for working pthreads... yes
  checking for pthread_spinlock support... yes
  checking for pthread_rwlock support... yes
  checking for sem_init in -lrt... yes
  checking for semaphore support... yes

  Checking for libxml2 support ...
  checking for xml2-config... /usr/bin/xml2-config
  checking libxml version... 2.6.26

  Configuring for PCRE support ...
  checking whether to compile with PCRE support... disabled

  Configuring DocBook support ...
  checking for jade... no
  checking for jadetex... no
  checking for pdfjadetex... pdfjadetex
  checking for dvips... dvips
  checking for fig2dev... no
  checking for convert... /usr/bin/convert
  checking for 
/usr/lib/sgml/stylesheet/dsssl/docbook/nwalsh/html/docbook.dsl... no
  checking for /usr/lib/sgml/stylesheets/nwalsh-modular/html/docbook.dsl... no
  checking for 
/usr/share/sgml/docbook/dsssl-stylesheets-1.79/html/docbook.dsl... yes
  checking for 
/usr/lib/sgml/stylesheet/dsssl/docbook/nwalsh/print/docbook.dsl... no
  checking for /usr/lib/sgml/stylesheets/nwalsh-modular/print/docbook.dsl... no
  checking for 
/usr/share/sgml/docbook/dsssl-stylesheets-1.79/print/docbook.dsl... yes
  Not building documentation.

  Configuring parameters ...
  checking which malloc to use... native malloc
  enabling WMLScript compiler debugging
  enabling local time
  enabling cookies
  enabling HTTP/1.1 keep-alive

  Configuring OpenSSL support ...
  checking whether to compile with SSL support... trying /usr/lib64 
/usr/include/openssl
  checking for openssl... /usr/bin/openssl
  checking for CRYPTO_lock in -lcrypto... yes
  checking for SSL_library_init in -lssl... yes
  checking for SSL_connect in -lssl... yes
  checking openssl/x509.h usability... yes
  checking openssl/x509.h presence... yes
  checking for openssl/x509.h... yes
  checking openssl/rsa.h usability... yes
  checking openssl/rsa.h presence... yes
  checking for openssl/rsa.h... yes
  checking openssl/crypto.h usability... yes
  checking openssl/crypto.h presence... yes
  checking for openssl/crypto.h... yes
  checking openssl/pem.h usability... yes
  checking openssl/pem.h presence... yes
  checking for openssl/pem.h... yes
  checking openssl/ssl.h usability... yes
  checking openssl/ssl.h presence... yes
  checking for openssl/ssl.h... yes
  checking openssl/err.h usability... yes
  checking openssl/err.h presence... yes
  checking for openssl/err.h... yes
  checking openssl/hmac.h usability... yes
  checking openssl/hmac.h presence... yes
  checking for openssl/hmac.h... yes
  checking whether the OpenSSL library is multithread-enabled... yes
  checking whether to compile with SSL support... yes

  Configuring DB support ...
  checking whether to compile with MySQL support... disabled
  checking whether to compile with LibSDB support... disabled
  checking whether to compile with SQLite2 support... disabled
  checking whether to compile with SQLite3 support... disabled
  checking whether to compile with Oracle support... searching
  checking for oci.h ... yes
  checking for OCIEnvCreate in -lclntsh... yes
  checking for wtcstu in -lwtc8... no
  checking for wtcstu in -lwtc9... no
  checking whether to compile with Oracle support... yes
  checking whether to compile with PostgresSQL support... disabled

  Generating output files ...
  configure: creating ./config.status
  config.status: creating gwlib/gw_uuid_types.h
  config.status: creating Makefile
  config.status: creating gw-config.h
  config.status: gw-config.h is unchanged

  License information ...
  +--------------------------------------------------------------------+
  | License:                                                           |
  | This software is subject to the Kannel Software License, available |
  | in this distribution in the file LICENSE. By continuing this       |
  | installation process, you are bound by the terms of this license   |
  | agreement. If you do not agree with the terms of this license, you |
  | must abort the installation process at this point.                 |
  |                                                                    |
  |                      The Kannel Group <http://www.kannel.org/>     |
  +--------------------------------------------------------------------+

Reply via email to