I have an assignment to implement a module for something called a SIX Lock. It's basically a complex locking mechanism used for concurrent data access. In any case I'm getting a segmentation fault that I've traced to one line of code but cannot figure out why!
So I have this "class" implementing this SIXlock structure as defined below:
Code:
typedef struct
{
pthread_mutex_t mutex; /*our mutex*/
pthread_cond_t not_locked; /*cond variable */
SIXlock_mode_t groupMode; /*our overall group mode*/
pthread_t *myThreads; /*pointer to threads*/
SIXlock_mode_t *grantedMode; /*lock mode of each thread */
int numThreads; /*number of threads in array*/
} SIXlock_lock_t;
Yup...I'm using the pthreads library and that's about it.
So I have this create function which starts off like this:
Code:
/*-------------------------------------------------------------------------
/Function: SIXlock_create
/Input: Pointer to a SIXlock object
/Output: Returns parameter pointer pointing to created lock
/ Returns SIXlock_result_t notifying the user of the success/failure
-------------------------------------------------------------------------*/
SIXlock_result_t SIXlock_create(SIXlock_lock_t **lockPointer)
{
int i;
lockPointer = NULL;
/*setup memory allocation*/
lockPointer = (SIXlock_lock_t **)malloc(sizeof( SIXlock_lock_t ));
/*if error, return result*/
if(lockPointer == NULL)
return SIXLOCK_RESULT_ERROR_MALLOC;
/*initialize*/
pthread_mutex_init(&((*lockPointer)->mutex), NULL);
....
}
but when it gets to the:
pthread_mutex_init(&((*lockPointer)->mutex), NULL);
line, it throws a segmentation fault. Can someone please help????