Commit Briefs


Russ Cox

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.


rsc

stupid gcc


rsc

better exit handling



rsc

sunos fixes


rsc

add _procwakeupandunlock

to help ease locking contention on Linux 2.4.


rsc

restore old plan 9 property that when the

last thread exits the main proc, the remaining program ends up in the background and the program appears to have exited.


rsc

more freebsd work


rsc

remove debugging


rsc

better exec handling



rsc

start linux pre-2.6 port