[freetds] tdsdump SIGSEGV with mt apps
Frediano Ziglio
freddyz77 at tin.it
Fri Apr 15 11:29:42 EDT 2005
Il giorno ven, 15-04-2005 alle 19:17 +1000, liam at inodes.org ha scritto:
> On Wed, Apr 13, 2005 at 10:37:43AM -0400, James K. Lowden wrote:
>
> > but what we really lack is someone steeped in unix tcp/ip idiom.
>
> It's not only just that, things like 'timeout' and 'query timeout'
> specified in the configuration are not even passed into TDSSOCKET.
>
> I've set 'timeout = 5' and 'query timeout = 5' both globally and
> for each DSN in freetds.conf. Looking in goodread() I have:
>
> (gdb) inspect tds->timeout
> There is no member named timeout.
> (gdb) inspect tds->query_timeout
> $3 = 0
>
> This information appears to be gathered from tds_read_config_info()
> at dblib.c:946 but then promptly destroyed at dblib.c:971 without
> transfering it to TDSSOCKET or DBPROCESS!
>
I think problem is query_timeout_func/query_timeout_param, dblib should
set TDSCONNECTION, not TDSSOCKET...
Also tds_connect should at the end set query_timeout to TDSCONNECTION-
>query_timeout...
At this point timeout in freetds.conf should be query_timeout and
timeout member in TDSCONNECTION should be removed... Does this should
correct?
I think that a test for timeout in dblib could help...
> If you're happy for me to go through and amend all this, please
> let me know and I'll send through a patch.
>
> Thanks.
Well.. I changed this code some time ago. There were 3 timeout:
- connect_timeout
- query_timeout
- timeout
not easy to handle... So now in libTDS there is only a single timeout.
If you want to handle timeout on connection set query_timeout on
TDSCONNECTION, if you want to set timeout on query use query_timeout. If
you want to poll in libTDS setup up query_timeout with polling interval
and increment it when timeout raise.
freddy77
More information about the FreeTDS
mailing list