[Bug libc/14986] pthread mutex segfaults inside C++ class thread
mdblack98 at yahoo dot com
sourceware-bugzilla@sourceware.org
Fri Dec 28 16:01:00 GMT 2012
http://sourceware.org/bugzilla/show_bug.cgi?id=14986
--- Comment #2 from mdblack98 <mdblack98 at yahoo dot com> 2012-12-28 16:00:47 UTC ---
Thanks for the fast response.
I just figured out if you change the thread function to a static declaration it
works.
But then you have to pass the mutex in as an argument to the thread of course
So this works with either using the Class format or just the function name as
the function argument
g++ -o pthread pthread.cpp -lpthread
#include <iostream>
#include <pthread.h>
using namespace std;
class MyThread {
private:
pthread_t threadid;
pthread_mutex_t mutex;
public:
MyThread();
~MyThread();
pthread_t get_threadid() {
return threadid;
};
static void *myfunc(void*);
};
MyThread::MyThread()
{
pthread_mutex_init(&mutex,NULL);
cout << "Creating thread mutex=" << &mutex << endl;
pthread_create(&threadid,NULL,(void*(*)(void*))&MyThread::myfunc,(void*)&mutex);
// this also works
//pthread_create(&threadid,NULL,(void*(*)(void*))&myfunc,(void*)&mutex);
}
MyThread::~MyThread()
{
}
void *MyThread::myfunc(void*v)
{
int n=0;
pthread_mutex_t *mutexp = (pthread_mutex_t*)v;
cout << "In thread" << endl;
while (n < 10) {
pthread_mutex_lock(mutexp);
sleep(1);
pthread_mutex_unlock(mutexp);
cout << "Testing " << ++n << endl;
}
return NULL;
}
int main(int argc, char *argv[])
{
MyThread thread;
pthread_t threadid = thread.get_threadid();
cout << argv[0] << " running" << endl;
sleep(5);
pthread_join(threadid,NULL);
return 0;
}
-----Original Message-----
From: schwab@linux-m68k.org [mailto:sourceware-bugzilla@sourceware.org]
Sent: Friday, December 28, 2012 9:44 AM
To: mdblack98@yahoo.com
Subject: [Bug libc/14986] pthread mutex segfaults inside C++ class thread
http://sourceware.org/bugzilla/show_bug.cgi?id=14986
Andreas Schwab <schwab@linux-m68k.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Resolution| |INVALID
--- Comment #1 from Andreas Schwab <schwab@linux-m68k.org> 2012-12-28 15:43:43
UTC ---
You cannot pass a member function to pthread_create.
--
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
More information about the Glibc-bugs
mailing list