![]() | |
![]() |
| | Thread Tools | Display Modes |
#1
| |||
| |||
|
#2
| |||
| |||
|
|
Thanks Alex for the quick response. I see end of "end of results" message being dumped out. I can that it cycle through all the possible rows and collect the data. But catching "end of results"? and the leak? Any ideas. Thanks, Garyc --- Alex Burton <alexibu (AT) mac (DOT) com> wrote: substitute cout << er.what() << endl; for cout << "Failed Dude! " << endl; and you might know what the exception was On 30/12/2006, at 9:58 AM, gary clark wrote: Hello, Running mysqlpp 2.1.1 on Windows XP and 5.0 mysql. Been trying tracking down what appears to be a leak. A wee bit bizarre. I have a column in a mysql database called messageData is a VARCHAR(4096). I have the following code extract: mysqlpp::Query query = _con.query(); mysqlpp::ResUse res = query.use(); mysqlpp::Row row; try { if (res) { while(row=res,fetch_row()) { } } } catch (exception & er) { cout << "Failed Dude! " << endl; return 0; } Seems straightforward. It always ends up going to "Failed Dude". It then pops a leak. I commented out the above code and it no longer leaks. Can somebody be so kind to enlighten me on what I assume to be misuse of the above so I can avoid the leak. Thanks, Garyc -- MySQL++ Mailing List For list archives: http://lists.mysql.com/plusplus To unsubscribe: http://lists.mysql.com/plusplus? unsub=alexibu (AT) mac (DOT) com |
#3
| |||
| |||
|
|
--- gary clark <burslem2001 (AT) yahoo (DOT) com> wrote: Thanks Alex for the quick response. I see end of "end of results" message being dumped out. I can that it cycle through all the possible rows and collect the data. But catching "end of results"? and the leak? Any ideas. Thanks, Garyc --- Alex Burton <alexibu (AT) mac (DOT) com> wrote: substitute cout << er.what() << endl; for cout << "Failed Dude! " << endl; and you might know what the exception was On 30/12/2006, at 9:58 AM, gary clark wrote: Hello, Running mysqlpp 2.1.1 on Windows XP and 5.0 mysql. Been trying tracking down what appears to be a leak. A wee bit bizarre. I have a column in a mysql database called messageData is a VARCHAR(4096). I have the following code extract: mysqlpp::Query query = _con.query(); mysqlpp::ResUse res = query.use(); mysqlpp::Row row; try { if (res) { while(row=res,fetch_row()) { } } } catch (exception & er) { cout << "Failed Dude! " << endl; return 0; } Seems straightforward. It always ends up going to "Failed Dude". It then pops a leak. I commented out the above code and it no longer leaks. Can somebody be so kind to enlighten me on what I assume to be misuse of the above so I can avoid the leak. Thanks, Garyc -- MySQL++ Mailing List For list archives: http://lists.mysql.com/plusplus To unsubscribe: http://lists.mysql.com/plusplus? unsub=alexibu (AT) mac (DOT) com |
#4
| |||
| |||
|
|
Hello, 5> I still believe there is a small leak. I see 8K increments not everytime the below code is called. It sounds like a race condition in mysqlpp. Has anyone attempted to 'purify' this code to validate whether the methods leak? When the 'use' statement is not used and I dont cycle through the table rows which results in an eventual exception 'end of results' then there is no leak. I'm going to try to get a version of purify next week and run this code through it. Thanks, Garyc --- gary clark <burslem2001 (AT) yahoo (DOT) com> wrote: --- gary clark <burslem2001 (AT) yahoo (DOT) com> wrote: Thanks Alex for the quick response. I see end of "end of results" message being dumped out. I can that it cycle through all the possible rows and collect the data. But catching "end of results"? and the leak? Any ideas. Thanks, Garyc --- Alex Burton <alexibu (AT) mac (DOT) com> wrote: substitute cout << er.what() << endl; for cout << "Failed Dude! " << endl; and you might know what the exception was On 30/12/2006, at 9:58 AM, gary clark wrote: Hello, Running mysqlpp 2.1.1 on Windows XP and 5.0 mysql. Been trying tracking down what appears to be a leak. A wee bit bizarre. I have a column in a mysql database called messageData is a VARCHAR(4096). I have the following code extract: mysqlpp::Query query = _con.query(); mysqlpp::ResUse res = query.use(); mysqlpp::Row row; try { if (res) { while(row=res,fetch_row()) { } } } catch (exception & er) { cout << "Failed Dude! " << endl; return 0; } Seems straightforward. It always ends up going to "Failed Dude". It then pops a leak. I commented out the above code and it no longer leaks. Can somebody be so kind to enlighten me on what I assume to be misuse of the above so I can avoid the leak. Thanks, Garyc -- MySQL++ Mailing List For list archives: http://lists.mysql.com/plusplus To unsubscribe: http://lists.mysql.com/plusplus? unsub=alexibu (AT) mac (DOT) com -- MySQL++ Mailing List For list archives: http://lists.mysql.com/plusplus To unsubscribe: http://lists.mysql.com/plusplus?unsu...ahoo (DOT) com |
#5
| |||
| |||
|
|
Hello, Not sure what is going on but I think I have found the memory leak when running on windows using the purify tool from IBM. I see Memory leak when calling the below code. new(UINT) [f:\rtm\vctools\crt_bld\self_x86\crt\src\xiosbase.5 14] std::ios_base::Init(void)[f:\rtm\vctools\crt_bld\self_x86\crt\src\xiobase std::basic_ios<char,char_traits<char>::std>::init( basic_streambuf(char,char_traits<char>::std>::std *,bool) Ok this is why the leak occurred. I was using the below statement. mysqlpp::Query query = con.query(); The query is being created every time which inturn creates an ostream which results in a leak. The query object I now pass as a reference and then reset the blighter which avoids the leak since only instantiated once. Thanks, Garyc |
#6
| |||
| |||
|
|
Hi Gary, This sounds like the leak Alex and myself looked at a while ago (see thread at http://lists.mysql.com/plusplus/5767 ). Warren implemented a patch for it (see thread at http://lists.mysql.com/plusplus/6012 ). I'm not sure it's been released yet, but it's available from svn. Regards, Matt. gary clark wrote: Hello, Not sure what is going on but I think I have found the memory leak when running on windows using the purify tool from IBM. I see Memory leak when calling the below code. new(UINT) [f:\rtm\vctools\crt_bld\self_x86\crt\src\xiosbase.5 14] std::ios_base::Init(void)[f:\rtm\vctools\crt_bld\self_x86\crt\src\xiobase std::basic_ios<char,char_traits<char>::std>::init( basic_streambuf(char,char_traits<char>::std>::std *,bool) Ok this is why the leak occurred. I was using the below statement. mysqlpp::Query query = con.query(); The query is being created every time which inturn creates an ostream which results in a leak. The query object I now pass as a reference and then reset the blighter which avoids the leak since only instantiated once. Thanks, Garyc -- MySQL++ Mailing List For list archives: http://lists.mysql.com/plusplus To unsubscribe: http://lists.mysql.com/plusplus?unsu...ahoo (DOT) com |
#7
| |||
| |||
|
|
Hi Gary, This sounds like the leak Alex and myself looked at a while ago (see thread at http://lists.mysql.com/plusplus/5767 ). Warren implemented a patch for it (see thread at http://lists.mysql.com/plusplus/6012 ). I'm not sure it's been released yet, but it's available from svn. Regards, Matt. gary clark wrote: Hello, Not sure what is going on but I think I have found the memory leak when running on windows using the purify tool from IBM. I see Memory leak when calling the below code. new(UINT) [f:\rtm\vctools\crt_bld\self_x86\crt\src\xiosbase.5 14] std::ios_base::Init(void)[f:\rtm\vctools\crt_bld\self_x86\crt\src\xiobase std::basic_ios<char,char_traits<char>::std>::init( basic_streambuf(char,char_traits<char>::std>::std *,bool) Ok this is why the leak occurred. I was using the below statement. mysqlpp::Query query = con.query(); The query is being created every time which inturn creates an ostream which results in a leak. The query object I now pass as a reference and then reset the blighter which avoids the leak since only instantiated once. Thanks, Garyc -- MySQL++ Mailing List For list archives: http://lists.mysql.com/plusplus To unsubscribe: http://lists.mysql.com/plusplus?unsu...ahoo (DOT) com |
#8
| |||
| |||
|
|
Ok what I see now is that when the applications stops no leak occurs when using purify. However, the application is still growing during runtime when each query action is made. |
#9
| |||
| |||
|
|
gary clark wrote: Ok what I see now is that when the applications stops no leak occurs when using purify. However, the application is still growing during runtime when each query action is made. Is this with v2.1.1, or with the svn version? -- MySQL++ Mailing List For list archives: http://lists.mysql.com/plusplus To unsubscribe: http://lists.mysql.com/plusplus?unsu...ahoo (DOT) com |
#10
| |||
| |||
|
|
Its with the 2.1.1 version. |
![]() |
| Thread Tools | |
| Display Modes | |
| |