Quoting Michal Trojnara Michal.Trojnara@mirt.net:
On 2005-06-15, at 17:32, Vasil Dimov wrote:
makecontext(&ctx_cleanup, ctx_cleanup_func, 0);
Changing the currently executing context (with makecontext) does not seem very robust to me, but, however, I am not an ucontext expert (in fact I have not heard about it before beginning to experience problems with stunnel-4.10).
makecontext(3) only prepares the structure. setcontext(2) modifies the context.
I meant "Changing" in the means of alter/modify/edit/mutate, not switch/swap/replace. But however, the patch seems to work.
By "context" I mean the actual CPU state, not the structure used as a parameter to set it. 8-)
So we have "4.10 + some diagnostic code" that crashes in swapcontext() under Linux. Knowing that 4.10 does not crash under Linux we are forced to deduce that the problem is in the diagnostic code :)
The problem is solved! It was linuxthreads/ucontext conflict in glibc.
I've apparently found something else as I did a bit of testing and it was fine but within 1 minute of putting it on a production machine it sigsegv'd again.
I unfortunately can't leave it running to debug more.
brian