Re: swapcontext and free memory
Tiago Maluta <[email protected]>
| Newsgroups | org.kernel.vger.linux-c-programming |
|---|---|
| Message-ID | <[email protected]> |
[email protected] 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