xcomp@xxxxxxxx wrote: > Hi all, > I have written a small test case which simply creates a new context, swaps to it and returns to the main function. I am allocating memory for the ucontext_t structures and the stack on which the context is executed using malloc. Because of this I also want to deallocate the memory again using free. The problem is I can't deallocate the memory after swapping back. It runs only if all three free() calls are commented out. Otherwise a segmentation fault occurs. Does swapcontext handle this on its own? Can anyone explain this behavior? I didn't find anything concerning this problem in the web. > I am running this program on Ubuntu 8.04 with the following system information: Linux ubuntu8041 2.6.24-23-generic #1 SMP i686 GNU/Linux (...) > main_context = (ucontext*) malloc(sizeof(ucontext)); > thread_context = (ucontext*) malloc(sizeof(ucontext)); changing: main_context = (ucontext_t*) malloc(sizeof(ucontext_t)); thread_context = (ucontext_t*) malloc(sizeof(ucontext_t)); and compiling with free() I got: #./a.out start Allocated memory: main_context: 0x804b008 thread_context: 0x804b168 thread_stack: 0x804b2c8 thread_function was called... swapcontext() returned. Freeing memory starts now... thread_stack was deallocated... thread_context was deallocated... main_context was deallocated... I'm using glibc version 2.8. --tm -- To unsubscribe from this list: send the line "unsubscribe linux-c-programming" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html