Commits


libthread: handle spurious _procsleep wakeups, fix $LIBTHREAD handling


libthread: add pthreadperthread mode and use under ASAN ASAN can't deal with the coroutine stacks. In theory we can call into ASAN runtime to let it know about them, but ASAN still has problems with fork or exit happening from a non-system stack. Bypass all possible problems by just having a full OS thread for each libthread thread. The threads are still cooperatively scheduled within a proc (in thos mode, a group of OS threads). Setting the environment variable LIBTHREAD=pthreadperthread will enable the pthreadperthread mode, as will building with CC9FLAGS='-fsanitize=address' in $PLAN9/config. This solution is much more general than ASAN - for example if you are trying to find all the thread stacks in a reproducible crash you can use pthreadperthread mode with any debugger that knows only about OS threads.


libthread: comment stack border a bit more


libthread: use mmap to allocate OpenBSD stacks Should fix faults on OpenBSD. Fixes #218. Fixes #226.


libthread: fix fault in teardown of proc Fixes #332.


libthread: run first thread in proc on system stack For pthread systems that are fussy about which stack is used, this makes sure that threadmain runs on a system stack. If you only use proccreate (never threadcreate), all threads run on system stacks.


Trivial changes: whitespace and modes. Remote whitespace at the ends of lines. Remove blank lines from the ends of files. Change modes on source files so that they are not executable. Signed-off-by: Dan Cross <cross@gajendra.net>


libthread: Lion context routines


build: OS X 64-bit build R=rsc http://codereview.appspot.com/4838047


libthread: make page work on OS X


libthread: work around gcc warning on FreeBSD


libthread: correct sysfatal handler prototype


libthread: add proper sysfatal


libthread: abort on single-threaded lock contention


libthread: fix 64-bit bug in threadstart (Nathaniel Filardo)