[freetds] tdspool Seg Fault libc

Brad Leininger Brad.Leininger at wausaubenefits.com
Wed Jun 30 17:51:49 EDT 2004


Hello, maybe someone can help me with this problem.

I have been working with tdspool to setup a spool for tds connections.  The
major problem I'm having is that after I run tdspool I get a core dump when
trying to connect to the pool.  I have this problem on both Solaris and
Slackware Linux.

Below is the output from the program....

root at somesystem:/usr/local/bin# tdspool ivrdbpool
Found conf file in /usr/local/etc/pool.conf reading sections
Listening on port 5551
waiting for a connect
accepting connection
waiting for a connect
Segmentation Fault (core dumped)

I did a gdb trace on tdspool, and this is the result....

(gdb) run ivrdbpool
Starting program: /usr/local/bin/./tdspool ivrdbpool
Found conf file in /usr/local/etc/pool.conf reading sections
Listening on port 5551
waiting for a connect
accepting connection
waiting for a connect

Program received signal SIGSEGV, Segmentation fault.
0xff1426c4 in t_splay () from /usr/lib/libc.so.1
(gdb) bt
#0  0xff1426c4 in t_splay () from /usr/lib/libc.so.1
#1  0xff1423a8 in t_delete () from /usr/lib/libc.so.1
#2  0xff141fac in realfree () from /usr/lib/libc.so.1
#3  0xff142880 in cleanfree () from /usr/lib/libc.so.1
#4  0xff1419b4 in _malloc_unlocked () from /usr/lib/libc.so.1
#5  0xff1418a8 in malloc () from /usr/lib/libc.so.1
#6  0xff32db28 in tds_read_string (tds=0x33250, s=0xffbef958, size=30) at
login.c:249
#7  0xff32d5cc in tds_read_login (tds=0x33250, login=0xffbef930) at
login.c:120
#8  0x130ec in pool_user_login (pool=0x24fc8, puser=0x31240) at user.c:168
#9  0x13080 in pool_process_users (pool=0x24fc8, fds=0xffbefa70) at
user.c:135
#10 0x11dfc in pool_main_loop (pool=0x24fc8) at main.c:188
#11 0x12070 in main (argc=2, argv=0xffbefbe4) at main.c:250
(gdb) quit

Below is my pool.conf, and freetds.conf

Pool.conf:

[global]
        min pool conn = 5
        max pool conn = 10
        max member age = 120

[ivrdbpool]
        server = wau-dbdev2-server
        database = ivr_db
        user = test
        password = test
        port = 5551
        min pool conn = 5
        max pool conn = 15
        max member age = 0

Freetds.conf:

#
#
#   $Id: freetds.conf,v 1.7 2002/10/17 15:11:02 castellano Exp $
#
# The freetds.conf file is a replacement for the original interfaces
# file developed by Sybase.  You may use either this or the interfaces
# file, but not both.
#
# FreeTDS will search for a conf file in the following order:
#
#     1) check if a file was set programatically via dbsetifile() and
#        is in .conf format, if so use that,
#
#     2) otherwise, if env variable FREETDSCONF specifies a properly
#        formatted config file, use it,
#
#     3) otherwise, look in ~/.freetds.conf,
#
#     4) otherwise, look in @sysconfdir@/freetds.conf
#
# If FreeTDS has found no suitable conf file it will then search for
# an interfaces file in the following order:
#
#     1) check if a file was set programatically via dbsetifile() and
#        is in interfaces format, if so use that,
#
#     2) look in ~/.interfaces
#
#     3) look in $SYBASE/interfaces (where $SYBASE is an environment
#        variable)
#
# Only hostname, port number, and protocol version can be specified
# using the interfaces format.
#
# The conf file format follows a modified Samba style layout.  There
# is a [global] section which will affect all database servers and
# basic program behaviour, and a section headed with the database
# server's name which will have settings which override the global
# ones.
#
# Note that environment variables TDSVER, TDSDUMP, TDSPORT, TDSQUERY,
# and TDSHOST will override values set by a .conf or .interfaces file.
#
# To review the processing of the above, set env variable TDSDUMPCONFIG
# to a file name to log configuration processing.
#
# Global settings, any value here may be overridden by a database
# server specific section
[global]
        # TDS protocol version
        tds version = 4.2

        initial block size = 512

        swap broken dates = no

        swap broken money = no

        # Database server login method, if both server and domain
        # logins are enabled, domain login is tried first if a domain
        # is specified, and if that fails the server login will be used.
        try server login = yes
        try domain login = no

        # The default authentication domain, can be overridden by
        # specifying a username with a domain prefix, e.g. DOMAIN\username
;       nt domain = WORKGROUP

        # If the server responds with different domain try that one?
        cross domain login = no

        # Whether to write a TDSDUMP file for diagnostic purposes
        # (setting this to /tmp is insecure on a multi-user system)
#       dump file = /tmp/freetds.log
#       debug level = 0
#       dump file append = yes

        # Command and connection timeouts
;       timeout = 10
;       connect timeout = 10

        # If you get out of memory errors, it may mean that your client
        # is trying to allocate a huge buffer for a TEXT field.
        # (Microsoft servers sometimes pretend TEXT columns are
        # 4 GB wide!)   If you have this problem, try setting
        # 'text size' to a more reasonable limit
        text size = 64512

# This is a Sybase hosted database server, if you are directly on the
# net you can use it to test.
#[JDBC]
#       host = 192.138.151.39
#       port = 4444
#       tds version = 5.0

# The same server, using TDS 4.2.  Used in configuration examples for the
# pool server, since the pool server supports only TDS 4.2.
#[JDBC_42]
#       host = 192.138.151.39
#       port = 4444
#       tds version = 4.2

# The client connecting to the pool server will use this to find its
# listening socket.  This entry assumes that the client is on the same
# system as the pool server.
#[mypool]
#       host = 127.0.0.1
#       port = 5000
#       tds version = 4.2

# A typical Microsoft SQL Server 7.0 configuration
;[MyServer70]
;       host = ntmachine.domain.com
;       port = 1433
;       tds version = 7.0

# A typical Microsoft SQL Server 7.0 configuration using domain logins
;[MyServer70]
;       host = ntmachine.domain.com
;       port = 1433
;       tds version = 7.0
;       try domain login = yes
;       try server login = no
;       nt domain = MYDOMAIN

# A typical Microsoft SQL Server 6.x configuration
;[MyServer65]
;       host = ntmachine.domain.com
;       port = 1433
;       tds version = 4.2
[ivrdbpool]
        host = localhost
        port = 5551
        tds version = 4.2
        dump file = /tmp/dbdev2_pool.log
        debug level = 0
        dump file append = yes
[wau-dbdev2-server]
        host = wau-dbdev2.wausaubenefits.com
        port = 1663
        tds version = 4.2
        emulate little endian = yes
        dump file = /tmp/dbdev2_freetds.log
        debug level = 0
        dump file append = yes


Could someone please point me in a direction that may stop this cor dump?

Many Thanks!

Bradley Leininger
Wausau Benefits, Inc.
Sr. Technical Specialist

715-841-6164 (Voice and Fax)
text pager:  8773562383 at airmessage.net
brad.leininger at wausaubenefits.com

This communication is intended only for the recipient(s) named above; may
be confidential and/or legally privileged; and, must be treated as such in
accordance with state and federal laws. If you are not the intended
recipient, you are hereby notified that any use of this communication, or
any of its contents, is prohibited. If you have received this communication
in error, please return it to Brad Leininger and delete the message from
your computer system.






More information about the FreeTDS mailing list