swapcontext() and Segmentation Fault


 
Thread Tools Search this Thread
Top Forums Programming swapcontext() and Segmentation Fault
# 1  
Old 11-25-2006
swapcontext() and Segmentation Fault

I am in the process of trying to analysing a code snippet I just wrote, and am facing a segmentation fault when I try to swap context an a point...

I get a segmentation fault when I call swapcontext() function...

Please guide me.

Last edited by jacques83; 11-25-2006 at 05:25 PM..
# 2  
Old 11-27-2006
Can you post the code snippet where you call the "swapcontext" function?
# 3  
Old 12-05-2006
I'm having the same problem-here's my code:

Code:
//code snippet from main:
/* context names for scheduler and threads, TODO maybe set up threads as an array? */
ucontext_t sched;
ucontext_t T1;


  /* Set up context and memory for threads, not sure what
   * the flags do
   */
    if(DEBUG){ printf("create context and memory for threads\n");}
    getcontext(&T1);
    if ((T1.uc_stack.ss_sp = malloc(THREAD_STK)) == NULL){
        perror("T1 malloc"), exit(1);      
    }
    T1.uc_stack.ss_flags = 0;
    T1.uc_link = &sched;
    makecontext(&T1, produce_sm, 0);
           
   
    
    /* save main, swap to a thread */
    if(DEBUG){ printf("save sched, swap to T1\n");}
    if(getcontext(&sched) == -1){ /* save main */
        perror("sched get error");
    }

    if ((sched.uc_stack.ss_sp = malloc(THREAD_STK)) == NULL){ /* main stack space */
        die("sched malloc");      
    }
//FAILS HERE
    if(swapcontext(&sched, &T1) == -1){ /* swap to T1 */
        die("sched swap error");
    }

this is the function it's supposed to swap to:
Code:
void produce_sm(){
   printf("I'm T1\n"); 
    
   
   printf("swap from T1 to sched\n");
   if(swapcontext(&T1, &sched) == -1){die("T1 swap");}
}

If I ever get this right, its supposed to be a threaded implementation of the
producer-consumer problem. This is my first venture into threads, I'd appreciate any advice.
# 4  
Old 12-05-2006
gebuh, what OS are you using? Most OS'es these days have kernel support for threads. If your kernel does, it will have allocated a thread for you to use. And it looks like you are trying to implement your own user-level threads within that kernel thread. Why take this approach rather than just using pthreads?
# 5  
Old 12-06-2006
I'm on redhat linux, its a class project- we're supposed to implement our own threads, we're limited to make/set/getcontext or set/longjump.

Quote:
Originally Posted by Perderabo
gebuh, what OS are you using? Most OS'es these days have kernel support for threads. If your kernel does, it will have allocated a thread for you to use. And it looks like you are trying to implement your own user-level threads within that kernel thread. Why take this approach rather than just using pthreads?
# 6  
Old 12-06-2006
Quote:
Originally Posted by gebuh
I'm on redhat linux, its a class project- we're supposed to implement our own threads, we're limited to make/set/getcontext or set/longjump.
We have some rules here and one of them is:
(6) Do not post classroom or homework problems.


But once in a while we bend the rule a bit, so try setting ss_size when you define the stack.
# 7  
Old 12-06-2006
duly chastened [walk of shame]gonna go read the rules now[/end walk of shame]

Quote:
Originally Posted by Perderabo
We have some rules here and one of them is:
(6) Do not post classroom or homework problems.


But once in a while we bend the rule a bit, so try setting ss_size when you define the stack.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Programming

C. To segmentation fault or not to segmentation fault, that is the question.

Oddities with gcc, 2.95.3 for the AMIGA and 4.2.1 for MY current OSX 10.14.1... I am creating a basic calculator for the AMIGA ADE *NIX emulator in C as it does not have one. Below are two very condensed snippets of which I have added the results inside the each code section. IMPORTANT!... (11 Replies)
Discussion started by: wisecracker
11 Replies

2. Homework & Coursework Questions

Segmentation Fault

this is a network programming code to run a rock paper scissors in a client and server. I completed it and it was working without any error. After I added the findWinner function to the server code it starts giving me segmentation fault. -the segmentation fault is fixed Current problem -Also... (3 Replies)
Discussion started by: femchi
3 Replies

3. Programming

Using gdb, ignore beginning segmentation fault until reproduce environment segmentation fault

I use a binary name (ie polo) it gets some parameter , so for debugging normally i do this : i wrote script for watchdog my app (polo) and check every second if it's not running then start it , the problem is , if my app , remain in state of segmentation fault for a while (ie 15 ... (6 Replies)
Discussion started by: pooyair
6 Replies

4. Programming

Segmentation fault in C

i have this code int already_there(char *client_names, char *username) { int i; for(i = 0; i<NUM; i++) { printf("HERE\n"); if (strcmp(client_names, username)==0) return(1); } return(0); } and i get a segmentation fault, whats wrong here? (7 Replies)
Discussion started by: omega666
7 Replies

5. Programming

segmentation fault

What is segmentation fault(core dumped) (1 Reply)
Discussion started by: gokult
1 Replies

6. Programming

segmentation fault

Hi, I am having this segmentation fault not in the following program, bt. in my lab program . My lab program is horrible long so cannot post it here bt. I am using the following logic in my program which is giving the segmentation fault. Bt. if I run this sample program as it is it dosen't give... (3 Replies)
Discussion started by: mind@work
3 Replies

7. UNIX for Dummies Questions & Answers

Segmentation Fault

Hi, While comparing primary key data of two tables thr bteq script I am getting this Error. This script is a shell script. *** Error: The following error was encountered on the output file. Script.sh: 3043492 Segmentation fault(coredump) Please let me know how to get through it. ... (5 Replies)
Discussion started by: monika
5 Replies

8. Programming

Why not a segmentation fault??

Hi, Why I don't receive a segmentation fault in the following sample. int main(void) { char buff; sprintf(buff,"Hello world"); printf("%s\n",buff); } If I define a buffer of 10 elements and I'm trying to put inside it twelve elements, Should I receive a sigsev... (22 Replies)
Discussion started by: lagigliaivan
22 Replies

9. Programming

segmentation fault

ive written my code in C for implementation of a simple lexical analyser using singly linked list hence am making use of dynamic allocation,but when run in linux it gives a segmentation fault is it cause of the malloc function that ive made use of????any suggestions as to what i could do??? thank... (8 Replies)
Discussion started by: rockgal
8 Replies

10. UNIX for Dummies Questions & Answers

Segmentation Fault

hello all, I tried a program on an array to intialise array elements from the standard input device.it is an integer array of 5 elements.but after entering the 4th element it throws a message called "Segmentation Fault" and returns to the command prompt without asking for the 5th element. ... (3 Replies)
Discussion started by: compbug
3 Replies
Login or Register to Ask a Question