[prev in list] [next in list] [prev in thread] [next in thread] 

List:       mysql-plusplus
Subject:    SOLVED: Problem of memory with Row ???
From:       "Rieu Nicolas" <nicolas.rieu () capgemini ! com>
Date:       2006-09-14 6:35:55
Message-ID: 03fc01c6d7c8$082150f0$1c020a0a () sudouest ! capgemini ! fr
[Download RAW message or body]


Hello.
Firstable, thanks for your help, this mailing list is very great because
it's rare to find other information elsewhere.

Then, we solved the problem of delete/free on a Row.
(Remember the following example at the end of the mail.)

In fact, the library mysql++ was compiled with gcc 3.4, but all the source
code and other librairies were compiled in gcc 4.0, but we noticed this kind
of incompatibility only yesterday.

So we compiled mysql++ with gcc4.0 and it's ok.

Stupid thing, but not easy to find out.

Nicolas

-----Message d'origine-----
De : Rieu Nicolas [mailto:nicolas.rieu@capgemini.com] 
Envoyé : jeudi 20 juillet 2006 19:05
À : plusplus@lists.mysql.com
Objet : RE: Problem of memory with Row ???


Hello Warren,
I tried to launch simple1 like this:
.../simple1 [parameters]

It's ok

Well I copied the source code from simple1.cpp to my program like this:

        // Retrieve the sample stock table set up by resetdb
        mysqlpp::Query query = con.query();
        query << "select * from stock";
        mysqlpp::Result res = query.store();

        // Display results
        if (res) {
                // Display header
                cout.setf(ios::left);
                cout << setw(21) << "Item" <<
                                setw(10) << "Num" <<
                                setw(10) << "Weight" <<
                                setw(10) << "Price" <<
                                "Date" << endl << endl;

                // Get each row in result set, and print its contents
                char buf[100];
cout<<"a:"<<endl;
                mysqlpp::Row row;
cout<<"b:"<<endl;
                mysqlpp::Row::size_type i;
cout<<"c:"<<endl;
                for (i = 0; row = res.at(i); ++i) {
cout<<"err:"<<i<<endl;
                        cout << setw(20) <<
                                        row["item"] << ' ' <<
                                        setw(9) << row["num"] << ' ' <<
                                        setw(9) << row["weight"] << ' ' <<
                                        setw(9) << row["price"] << ' ' <<
                                        setw(9) << row["sdate"] <<
                                        endl;
cout<<"bob:"<<i<<endl;
                }
        }
        else {
                cerr << "Failed to get stock table: " << query.error() <<
endl;
                return 1;
        }


And I've got the same problem: 
it crashes at the line " for (i = 0; row = res.at(i); ++i) {"

valgrind tells me that:

Invalid free() / delete / delete[]
operator delete(void*) (vg_replace_malloc.c:155)
mysqlpp::Row::~Row() new_allocator.h:86)

the features of my build environment:
compiler: gcc version 4.0.2 20051125 (Red Hat 4.0.2-8)
OS: Red Hat Enterprise Linux ES release 4 (Nahant Update 2) Kernel
2.6.9-34.0.1.ELsmp on an i686
MySQL++: 2.1.1
Mysql 5.0

Do you want more information ?

Nicolas

-----Message d'origine-----
De : Warren Young [mailto:mysqlpp@etr-usa.com] 
Envoyé : mardi 18 juillet 2006 16:19
À : MySQL++ Mailing List
Objet : Re: Problem of memory with Row ???

Rieu Nicolas wrote:
> 
> The following program (very simple) crashes at the first time it achieves
> the end (}) of the block < for > 

Your code is almost identical to the simple2 example.  Does that run 
successfully?

If so, try making the minimum necessary changes to simple2 to make it 
access your database instead of the sample database.  If it still works, 
then something is wrong with your build environment.  Otherwise, it 
suggests that there's something in your data set that MySQL++ can't cope 
with; provide the schema of the table so we can diagnose it.

If simple2 also crashes, we'll need details of your build environment to 
make any guesses.  Compiler, OS, MySQL++ and MySQL versions, etc.

-- 
MySQL++ Mailing List
For list archives: http://lists.mysql.com/plusplus
To unsubscribe:    http://lists.mysql.com/plusplus?unsub=nrieu@capgemini.fr



This message contains information that may be privileged or confidential and
is the property of the Capgemini Group. It is intended only for the person
to whom it is addressed. If you are not the intended recipient,  you are not
authorized to read, print, retain, copy, disseminate,  distribute, or use
this message or any part thereof. If you receive this  message in error,
please notify the sender immediately and delete all  copies of this message.


-- 
MySQL++ Mailing List
For list archives: http://lists.mysql.com/plusplus
To unsubscribe:    http://lists.mysql.com/plusplus?unsub=nrieu@capgemini.fr


This message contains information that may be privileged or confidential and is the \
property of the Capgemini Group. It is intended only for the person to whom it is \
addressed. If you are not the intended recipient,  you are not authorized to read, \
print, retain, copy, disseminate,  distribute, or use this message or any part \
thereof. If you receive this  message in error, please notify the sender immediately \
and delete all  copies of this message.


-- 
MySQL++ Mailing List
For list archives: http://lists.mysql.com/plusplus
To unsubscribe:    http://lists.mysql.com/plusplus?unsub=mysql-plusplus@progressive-comp.com



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic