Commit Graph

52 Commits

Author SHA1 Message Date
Steve Murphy
1985be224e This patch is relevant to:
ABE-1628 and RYM-150398 and AST-103 in internal Digium 
bug trackers.

These fixes address a really subtle memory corruption
problem that would happen in machines heavily loaded
in production environments. The corruption would
always take the form of the STMT object getting
nulled out and one of the unixODBC calls would
crash trying to access statement->connection.

It isn't fully proven yet, but the server has
now been running 2.5 days without appreciable
memory growth, or any gain of %cpu, and no 
crashes. Whether this is the problem or not
on that server, these fixes are still warranted.

As it turns out, **I** introduced these errors
unwittingly, when I corrected another crash earlier.
I had formed the build_query routine, and failed
to remove mutex_unlock calls in 3 places in the
transplanted code. These unlocks would only
happen in error situations, but unlocking the
mutex early set the code up for a catastrophic
failure, it appears. It would happen only once
every 100K-200K or more calls, under heavy load... 
but that is enough.

If another crash occurs, with the same MO, 
I'll come back and remove my confession from the log, and
we'll keep searching, but the fact that we
have Asterisk dying from an asynchronous
wiping of the STMT object, only on some connection
error, and that the server has lived for 2.5
days on this code without a crash, sure make
it look like this was the problem!

Also, in several points, Statement handles are
set to NULL after SQLFreeHandle. This was mainly
for insurance, to guarantee a crash. As it turns
out, the code does not appear to be attempting
to use these freed pointers.

Asterisk owes a debt of gratitude to Federico Alves
and Frediano Ziglio for their untiring efforts in
finding this bug, among others.




git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@150056 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-10-16 15:26:10 +00:00
Steve Murphy
b7a9ab7203 In at least one machine, we noted that the timestr
was not getting set in the STMT; it was coming out,
usually, as binary garbage to an mssql server.
These changes fixed the problem. The only thing
I can venture forth as a guess, is that the pointer
is being stored in the interface, not a copy of the
string. Because we ripped the build process into a 
subroutine, the timestr became a temp. stack variable,
and between the time the STMT got built and the
time it was executed on the server, the string being
pointed to was damaged. At any rate, even if this
theory is false, and some mechanism was at fault,
this fix worked reliably where it didn't before.

Why this bug didn't bite last week, I have no idea.
This change basically defines the timestr buffer
in the calling function, extending the life of the
buffer to cover both the STMT's building and
processing to the server.



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@143964 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-09-23 14:22:10 +00:00
Steve Murphy
fc6f84e9e9 This fix comes from a debugging session on a test box that has been getting hung channels when the mssqlserver bounces. All the connections then become invalid, and must be reconnected. The cdr_odbc backend had code to do it, but depended on re-establishing the connection, but re-using the STMT that had been built. By trial and error, we determined that the STMT could not be re-used after the connection was re-established. and must be rebuilt. These changes accomplish this.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@143674 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-09-19 21:07:05 +00:00
Russell Bryant
cbdc6b5b2d To prevent 92138749238754 more reports of "I have unixodbc installed, but
still can't build *_odbc.so!", check for ltdl directly, instead of just listing
it as another library to include in the unixodbc check in the configure script.
This also makes ltdl show up as a dependency in menuselect so people know what
to go install.  (related to issue #9989, patch by me)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@69702 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-06-18 16:35:02 +00:00
Kevin P. Fleming
ae82d97c6d use ast_localtime() in every place localtime_r() was being used
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@69392 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-06-14 21:50:40 +00:00
Tilghman Lesher
55ccc79050 Merged revisions 59301 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.2

........
r59301 | tilghman | 2007-03-29 11:04:46 -0500 (Thu, 29 Mar 2007) | 3 lines

Issue 9415 - No point to getting a diagnostic field if we aren't doing anything with the information.
(Plus, it tends to crash the Postgres ODBC driver.)

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@59302 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-03-29 16:07:05 +00:00
Joshua Colp
7a0a5b1480 Merged revisions 45927 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.2

........
r45927 | file | 2006-10-22 20:25:28 -0400 (Sun, 22 Oct 2006) | 2 lines

Don't leak memory mmmk?

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@45928 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-10-23 00:27:39 +00:00
Tilghman Lesher
70af28270d Constify the result of a config retrieval function, to avoid mutilation (issue 7983).
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@43364 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-09-20 20:40:39 +00:00
Matt O'Gorman
05a695af72 everything that loads a config that needs a config file to run
now reports AST_MODULE_LOAD_DECLINE when loading if config file
is not there, also fixed an error in res_config_pgsql where it 
had a non static function when it should.


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@41633 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-08-31 21:00:20 +00:00
Kevin P. Fleming
0a27d8bfe5 merge new_loader_completion branch, including (at least):
- restructured build tree and makefiles to eliminate recursion problems
  - support for embedded modules
  - support for static builds
  - simpler cross-compilation support
  - simpler module/loader interface (no exported symbols)



git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@40722 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-08-21 02:11:39 +00:00
Kevin P. Fleming
472c1ca282 simplify autoconfig include mechanism (make tholo happy he can use lint again :-)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@32846 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-06-07 18:54:56 +00:00
Kevin P. Fleming
574e14cbea Thanks to the fine work of Russell Bryant and Dancho Lazarov, we now have autoconf and menuselect tools for Asterisk!
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@22267 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-04-24 17:11:45 +00:00
Tilghman Lesher
efc4a4708c Merged revisions 21597 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.2

........
r21597 | tilghman | 2006-04-19 13:43:17 -0500 (Wed, 19 Apr 2006) | 2 lines

Bug 6553 - plug memory leaks when ODBC connection is down

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@21600 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-04-19 18:56:38 +00:00
Tilghman Lesher
b8317169d0 Compatibility fixes for loader changes
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@20075 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-04-14 18:44:24 +00:00
Kevin P. Fleming
f10f427d49 since the module API is changing, it's a good time to const-ify the description() and key() return values
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@18552 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-04-08 22:01:19 +00:00
Tilghman Lesher
c6f691fbcc Merged revisions 11503 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.2

........
r11503 | tilghman | 2006-03-01 11:41:52 -0600 (Wed, 01 Mar 2006) | 2 lines

Bug 6615 - Fix 64bit conversion errors by using a long int

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@11504 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-01 17:53:05 +00:00
Kevin P. Fleming
2c65582b66 remove extraneous svn:executable properties
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@7221 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-11-29 18:24:39 +00:00
Russell Bryant
31a804b97c issue #5605
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6979 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-11-06 15:09:47 +00:00
Russell Bryant
6324072247 more doxygenification (issue #5513)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6852 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-10-26 13:03:17 +00:00
Russell Bryant
c3c96a7461 fix reload problem - unload_module was not setting connected to 0 (issue #5498)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6843 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-10-22 15:28:56 +00:00
Kevin P. Fleming
5da915dcfd update MANY more files with proper copyright/license info (thanks Ian!)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6596 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-09-14 20:46:50 +00:00
Kevin P. Fleming
f77779b4fc more Cygwin portability (issue #4678)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6548 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-09-08 02:21:24 +00:00
Russell Bryant
1d731c6d2a clarify comment
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6128 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-07-14 20:08:31 +00:00
Kevin P. Fleming
be9d72b11d remove complex malloc-avoidance (bug #4601)
remove resetting of variables during unload that will only be freed or set to known values on reload


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6085 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-07-11 21:06:27 +00:00
Kevin P. Fleming
2b8338cb52 more file version tags
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@5866 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-06-06 22:12:19 +00:00
Kevin P. Fleming
005e436b57 another round of version tag updates, along with 'show version files' pattern filtering
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@5865 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-06-06 21:09:59 +00:00
Kevin P. Fleming
236c05fc59 let ODBC username/password default to the ones in odbc.ini (bug #4470)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@5854 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-06-06 02:43:01 +00:00
Kevin P. Fleming
1f9ab2380a use double-quotes instead of angle-brackets for non-system include files (bug #4058)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@5490 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-04-21 06:02:45 +00:00
Mark Spencer
403d010294 Optionally store CDR's in GM time (bug #3500, with mods)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@4962 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-02-04 05:52:45 +00:00
Mark Spencer
5f726ad8c7 Merge config updates (bug #3406)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@4889 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-01-25 06:10:20 +00:00
Mark Spencer
26a40258cc ODBC CDR fixes for bizarre error conditions and small performance improvement (bug #3340)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@4799 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-01-15 09:01:52 +00:00
Mark Spencer
ea8e10e8bc Fix types for character (bug #3255, take 3)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@4765 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-01-11 21:25:21 +00:00
Mark Spencer
820d525ac6 Make ODBC storage as int configurable to be string or int (bug #3255)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@4763 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-01-11 18:56:57 +00:00
Mark Spencer
6097648bf0 Make cdr_odbc store disposition as string not integer (thus matching documentation in doc/cdr.txt) (bug #3255)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@4687 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-01-05 23:25:34 +00:00
Russell Bryant
4bbdbf3a79 make table configurable for cdr_odbc (bug #2755)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@4416 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2004-12-10 11:59:43 +00:00
Russell Bryant
5a18fe243c fix mem leak (bug #2940)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@4333 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2004-11-25 06:13:29 +00:00
James Golovich
1a2ba48fa1 Formatting fix and use ast_true in cdr_odbc.c (bug 2569) Thanks bkw_
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@3911 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2004-10-05 01:05:30 +00:00
Mark Spencer
044ad2e2e7 Merge remaining audit patch (save dlfcn.c)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@3436 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2004-07-14 13:57:15 +00:00
Mark Spencer
65fc87b245 Merge bkw_'s ODBC patch
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@3395 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2004-07-08 13:18:04 +00:00
Mark Spencer
727abcdec7 Merge FreeBSD locking fixes (bug #1411)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@3176 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2004-06-09 01:45:08 +00:00
Jeremy McNamara
41c995dd18 Fix FreeTDS/MSSQL from bkw
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@3031 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2004-05-21 00:40:02 +00:00
Mark Spencer
4393076c6c ODBC fix for PPC (bug #895)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@2056 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2004-01-22 21:27:07 +00:00
Jeremy McNamara
93567dffb6 change warning into notice.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@1992 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2004-01-13 00:03:34 +00:00
Jeremy McNamara
be056ad723 Log cdr user data, if enabled
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@1931 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2004-01-11 06:01:02 +00:00
Jeremy McNamara
d4b69a2f24 prevent deadlock if no config file
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@1889 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2004-01-04 05:11:53 +00:00
Jeremy McNamara
5dc45a0046 fix a small memory leak, from brian
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@1880 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2003-12-24 03:05:03 +00:00
Mark Spencer
a8d8f70335 Brian's ODBC patches
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@1878 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2003-12-24 00:04:33 +00:00
Jeremy McNamara
64e4031fb7 stop seg when no loguniqueid is set in config file. From bkw
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@1845 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2003-12-09 19:17:41 +00:00
Jeremy McNamara
64d595c1c0 fix a minor typo from brian
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@1837 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2003-12-07 19:25:30 +00:00
Mark Spencer
cb161e634c More updates from Brian
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@1836 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2003-12-07 17:12:39 +00:00