C++ & threads crashes
I posted this a couple of days ago but not sure what happened to the original
or any replies due to mail problems & master etc.
I have a demo program which I have included below which should do
some threads, in a C++ program. It works fine on Solaris 5.6,
it works fine on bo with libc5, but on both my libc6 systems
it segfaults, and gdb says that's in pthread_mutex_lock which
sounds weird to me. Any ideas?
thanks,
hamish
#include <iostream.h>
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
const bool FALSE = 0;
const bool TRUE = 1;
class Server {
private:
pthread_t threadid;
bool active;
public:
Server();
~Server() {
if (active == TRUE) {
cout << "we are screwed" << endl;
cout.flush();
}
cout << "destroying " << threadid << endl;
cout.flush();
}
static void *Server_main(void *);
};
Server::Server()
{
active = FALSE;
int retVal = pthread_create(&threadid, NULL, Server::Server_main, this);
if (retVal == -1) {
perror("Server");
}
cout << "retVal = " << retVal << " threadid " << threadid << endl;
}
void *Server::Server_main(void *param)
{
Server *server = (Server *) param;
server->active = TRUE;
cout << "Server created threadid " << server->threadid << endl;
cout << "exiting thread " << endl;
cout.flush();
sleep(2);
server->active = FALSE;
return 0; // to shut up the compiler about returning values
}
int main()
{
cout << "About to start a server" << endl;
Server newserver;
sleep(1);
cout << "exiting main" << endl;
return(0);
}
--
Hamish Moffatt Mobile: +61 412 011 176 hamish@rising.com.au
Rising Software Australia Pty. Ltd.
Developers of music education software including Auralia & Musition.
31 Elmhurst Road, Blackburn, Victoria Australia, 3130
Phone: +61 3 9894 4788 Fax: +61 3 9894 3362 USA Toll Free: 1-888-667-7839
Internet: http://www.rising.com.au/
--
E-mail the word "unsubscribe" to debian-user-request@lists.debian.org
TO UNSUBSCRIBE FROM THIS MAILING LIST. Trouble? E-mail to listmaster@lists.debian.org
Reply to: