Address Sanitizer vs. swapcontext

Avi Kivity avi@scylladb.com
Thu Nov 19 10:24:00 GMT 2015


Hello,

I am using the swapcontext family to implement user-level threading.  
Specifically, only getcontext(), setcontext(), and makecontext() are 
used, during thread creation and teardown.  Beyond the initial switch 
into a thread, I use setjmp()/longjmp() as they are significantly faster.

This works well, except that in combination with Address Sanitizer I 
stack-buffer-overflow errors accessing variables on a user-level-thread 
stack, which, as far as I can tell, are false positives.

See for example https://github.com/scylladb/scylla/issues/533.

Is there any workaround for this?  I am willing to write an alternate 
code path for debugging.  What would work here? sigaltstack()?




More information about the Gcc-help mailing list