This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Crash of mysql under cygwin with g++ 3.3.1


Hallo Gerrit,

Thanks for your help. I would like to ask you a few questions:

1) If I use your mysql-4.0.17 libraries, that is if I link my code against your libmysqlclient.a
then my code works OK. On the other hand, then it requires cygmysqlclient.dll also: what is
that library exactly? Is it the equivalent of mySQL.dll which is included in the mysql for windows?


2) I have now identified the bug, or at least what causes it: here is small example that
crashes when using cygwin-1-5-7.1, MYSQL 4.0.18 and GCC3.3.1 (G++):


#include <mysql.h>
#include <iostream>
using namespace std;

class Connection{
  MYSQL* mqlh;
public:
Connection(){
  mqlh = mysql_init( NULL );
  cout << "OK" << endl;
}
};

int main( int argc, char** args ){
  Connection* con = new Connection();
  // crashes here
}

As you can see, it seems that something is really wrong. It seems to be caused by new()
since removing the mysql_init() from the new() call seems to work.
I have to mention that I link only against -lmySQL which is provided in the mysql for
windows distro. Maybe that is the problem (i.e. it was build from older cygwin releases)


As I would like to ship a "clean" version, I don't know what to do. Normally, people
would install mysql-for-win, then install my code plus just the cygwin DLL.


Regards,
Fabrice



Gerrit P. Haase wrote:

Hallo Fabrice,

late reply, sorry.

Your code snippet works for me with the latest Cygwin gcc-3.3.1 and
MySQL 4.0.17 which I compiled today and which is available for testing
here: http://anfaenger.de/cygwin-1.5/mysql/

$ gcc -I/usr/include/mysql \
   -o mysql mysql.cpp \
   -L/usr/lib/mysql -lmysqlclient \
   -L/usr/lib -lstdc++

$ ./mysql

$ g++ -I/usr/include/mysql \
   -o mysql mysql.cpp \
   -L/usr/lib/mysql -lmysqlclient

$ ./mysql

No problem here.


Am Freitag, 28. November 2003 um 01:46 schriebst du:




I dont know if this is a problem of mysql, g++ or
cygwin but the following simple code keeps crashing with g++3.3.1
Platform: cygwin-1.5.5, mysql 3.23 (and mysql 4.1 as well).
Note that the code does not crash if all the mysql_ calls are
made from inside the "main()" block. GDB reports that the crash occurs
when returning from the Connection() constructor.
The code was working with former g++2.95 under cygwin.





#include "mysql.h"
#include <iostream>





using namespace std;





class Connection{
MYSQL *mysql;
public:
Connection(){
mysql = mysql_init( NULL );
if( mysql == 0 ){
cerr << "failed to init" << endl;
exit(-1); }
mysql_real_connect( mysql, "", "", "", "test", 3306, NULL, 0);
}
};





int main( int argc, char** args ){
Connection con;
}






HTH,
Gerrit




--
========================================================================
Fabrice Marchal http://www.inf.ethz.ch/~marchal fabrice.marchal@ieee.org marchal@inf.ethz.ch +41-(0)1-632-56-79
ETH Zurich, CoLab Computational Laboratory FAX:+41-(0)1-632-17-03
========================================================================




--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]