Thread: Segmentation fault

  1. #1
    Registered User
    Join Date
    Aug 2009
    Posts
    70

    Segmentation fault

    Why is this code getting a segmentation fault? how do i fix this?

    Code:
    void *producer(void* cb)
    {
            printf("testing\n");
            bufferQueue *cbuffer = (bufferQueue *)cb;
            put_buffer(cbuffer, 17);
            destroy_buffer(cbuffer);
            return cb;
    }
    
    int main(void)
    {
            semaphore sem;
            bufferQueue cbuffer;
            pthread_t thread;
    
            init_sem(&sem);
            init_buffer(&cbuffer, sem, 0, 5);
    
            pthread_create(&thread, NULL, producer, (void*)(&cbuffer));
    
            pthread_join(thread, NULL);
            return EXIT_SUCCESS;
    }
    Code:
    void init_buffer(bufferQueue *b, semaphore s, int min, int max)
    {
    
            b = malloc(sizeof(bufferQueue));
            b->buffer_array = malloc(max*sizeof(int));
            b->in = 0;
            b->out = 0;
            b->min_buffer_size = min;
            b->max_buffer_size = max;
            b->sem = s;
    
    }
    Code:
    void put_buffer(bufferQueue *b, int v)
    {
    
            if((b->in+1)%b->max_buffer_size == b->out)
            {
    
                    semWait(&(b->sem));
    
            }
    
            b->buffer_array[b->in] = v;
            b->in = (b->in+1)%b->max_buffer_size;
            semSignal(&(b->sem));
    
    }

  2. #2
    Registered User
    Join Date
    Dec 2008
    Location
    Black River
    Posts
    128
    Code:
    b = malloc(sizeof(bufferQueue));
    This is not necessary and is making the init_buffer function modify a chunk of memory that is never used. Thus, cbuffer is left uninitialized.

    Also, depending on what init_sem, semWait and semSignal do, you may be getting segmentation faults there.

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. segmentation fault... first time with unix...
    By theMethod in forum C Programming
    Replies: 16
    Last Post: 09-30-2008, 02:01 AM
  2. Segmentation fault
    By bennyandthejets in forum C++ Programming
    Replies: 7
    Last Post: 09-07-2005, 05:04 PM
  3. Segmentation fault
    By NoUse in forum C Programming
    Replies: 4
    Last Post: 03-26-2005, 03:29 PM
  4. Locating A Segmentation Fault
    By Stack Overflow in forum C Programming
    Replies: 12
    Last Post: 12-14-2004, 01:33 PM
  5. Segmentation fault...
    By alvifarooq in forum C++ Programming
    Replies: 14
    Last Post: 09-26-2004, 12:53 PM