Well -- just doing a simple test connect and disconnect eat up nearly 1,000 items (multiple connects and disconnects have no effect on the qty of items eaten, at this point -- so, I'm "guessing" that some of this is due to autoloading and just loading the modules to be used), but selecting no rows only eats up 6. Inserting a number into a simple table doesn't eat any SVs. That's if I'm using it right.
Jeff -----Original Message----- From: Gary Gauthier [mailto:[EMAIL PROTECTED]] Sent: Tuesday, July 30, 2002 1:41 PM To: [EMAIL PROTECTED] Subject: RE: Apparent memory leak in DBI v1.30 I'll see what I can do. For you to run it, I'll need to get you a copy of the database and some data. I have to switch to something else here for balance of today, so I'll see about doing it first thing tomorrow. Did note, however, that I dropped by a count of 22 (reported by Leak) when I explicity set the recordset pointer to 'undef', even though it was defined as a 'my' variable. Will see if i can figure out why. Sounds like a scoping issue. Regards; Gary >>> "Jeff Urlwin" <[EMAIL PROTECTED]> 07/30/2002 12:34:35 PM >>> If you can wrap the small test up for me, I may be able to get to it, I just don't want to promise it :) Jeff -----Original Message----- From: Gary Gauthier [mailto:[EMAIL PROTECTED]] Sent: Tuesday, July 30, 2002 12:30 PM To: [EMAIL PROTECTED] Subject: RE: Apparent memory leak in DBI v1.30 Jeff; I am also on vacation for a week beginning Thursday evening, so it wouldn't matter anyway. Thanks for letting me know. By the way; I constructed a small program to do some testing, and it is still showing leakage. I'll see what I can find out, and I'll wait to hear from you when you get back. Have a good vacation. Regards; Gary >>> "Jeff Urlwin" <[EMAIL PROTECTED]> 07/30/2002 12:00:40 PM >>> Gary -- I don't know if anyone has DEBUGGING turned on. That's an interesting question. I haven't gotten around to the memory leak testing yet. I may just have to have a debugging version of perl, which is a pain and large and slow. I don't blame you for not doing it! I'm not sure I will be able to look into memory leaks further until I get back from Vacation next week. I leave on Thursday with lots to do between now and then. Regards, Jeff -----Original Message----- From: Gary Gauthier [mailto:[EMAIL PROTECTED]] Sent: Tuesday, July 30, 2002 10:57 AM To: [EMAIL PROTECTED] Subject: RE: Apparent memory leak in DBI v1.30 Jeff; You may not believe it, but I had a feeling such a thing might happen with a Microsoft product, and I designed the modules to allow me to specify a handle or a connection string for each level in the process. I changed it over to separate connections and ran it. While the program worked, the Devel::Leak showed a count of 52046 before and 53333 after a short test of 11 queries in total. Do you know of anyone who has a copy of the Ativestate Perl with the Debugging turned on? I understand that the Leak detector gives more diagnostic info, if that is enabled. The reason I don't build it myself is that I'm trying to use 'tried and true' versions where possible, to cut the number of degreees of freedom in the problem-space. Regards; Gary >>> "Jeff Urlwin" <[EMAIL PROTECTED]> 07/30/2002 10:21:31 AM >>> > > DBD::ODBC::st execute failed: [Microsoft][ODBC SQL Server > Driver]Connection is b > usy with results for another hstmt (SQL-S1000)(DBD: > st_execute/SQLExecute err=-1 > ) at TestStep_Record.pm line 410, <STDIN> line 1. > > Am I to understand from this that ODBC connections do not permit nested > queries to use the same connection handle? I'm sure ADO does. The > code queries > the database, then uses the result of each record to launch > another query on a second table. Gary -- That's VERY database dependant and, no, technically, SQL Server doesn't support it. Oracle does, for example. There is a way, though, to get it to work for SQL Server. See the perldoc DBD::ODBC for the full description in the section on DBD::ODBC 0.29. However: I remember an e-mail I received from someone with *STRONG* knowledge on this and I believe the e-mail indicated that you can actually put your SQL Server in a "spin loop" where you have to restart the machine. Don't quote me on that, but it sounded like there could be a problem. I can't find it, but I remember reading something about it. Use it at your own risk...:) Regards, Jeff > > Regards; > Gary > > > >>> Tim Bunce <[EMAIL PROTECTED]> 07/30/2002 8:51:25 AM >>> > On Tue, Jul 30, 2002 at 08:21:39AM -0400, Gary Gauthier wrote: > > Jeff and Tim; > > > > The program only uses non-parameterized SELECT statements, > > accesses an SQL2000 database using DBD:ODBC, > > and data is always read using bound variables. Unfortunately; > > it is a VERY large application, all object-oriented, and doesn't > > lend itself to being made smaller to test for leaks. > > You could try going in the other direction... write a small script > that does the same kind of thing and see if it leaks. > > If it doesn't then we're likely to point the finger at your application. > > Probably worth trying it with an older version of the DBI as a check. > And/or with an older DBD::ODBC version. > > > How does one use the Devel::Leak module to the best advantage? > > Read the docs. It's not too complicated > http://search-beta.cpan.org/author/NI-S/Devel-Leak/Leak.pm > > Tim. > > > It may be the easiest way to check it out. > > > > Regards; > > Gary > > > > > > >>> Tim Bunce <[EMAIL PROTECTED]> 07/29/2002 4:38:39 PM >>> > > On Mon, Jul 29, 2002 at 09:52:33AM -0400, Jeff Urlwin wrote: > > > Gary -- it's more likely in DBD::ODBC than DBI. > > > > But not by much :) > > > > Probably worth trying it with an older version of the DBI as a check. > > > > > If you can create a > > > self-contained sample, it would be greatly appreciated and > looked at faster > > > :) > > > > Yes, a _small_ simple self-contained example script is a big help. > > Copy the problem script and keep cutting away at it till the leak > > goes away, or it gets so small it's obvious where the problem is. > > > > > You didn't indicate if the loop is a set of inserts, queries, > etc. Does it > > > have longs? What's the LongReadLen value? > > > > > > If you can, include a drop table and create table statement > at the top, > > > insert test data, then run through something similar to your > loop that's > > > leaking. > > > > > > Tim -- if you have suggestions as to how to approach this > with Perl, I'd be > > > very appreciative! > > > > The "keep making the sample code smaller" approach usually works well. > > > > The Devel::Leak module may be useful: > > http://search-beta.cpan.org/author/NI-S/Devel-Leak-0.02/Leak.pm > > > > Another approach is to let the process grow huge (many MB) then > > core dump it and look through the binary (using less or other viewer > > that can read binary) and look for clues/patterns in the leaked memory. > > > > Tim. > > > > > Regards, > > > > > > Jeff > > > > > > > > Tim; > > > > > > > > I'm using DBI v1.30 and DBD-ODBC v0.43. My database(SQL2000) app > > > > is invoked about 40,000 times over the course of about 2 days to > > > > generate test scripts for some automated test equipment. I've > > > > been noticing the memory usage creeping up over the course of the > > > > runs (up to Meg per loop at times). I have seen a report on the > > > > developers mail list regarding this problem in recent versions. > > > > Have you done any tests to check for leaks, or have you had any > > > > reports of leaks? Perhaps there is some peculiarity of SQL2000, > > > > that requires explicit releasing of handles or buffer space? > > > > > > > > Any help would be appreciated. > > > > > > > > Regards; > > > > Gary > > > > > > > > > > >
