[Mirror] Plan 9 from User Space: https://github.com/9fans/plan9port
Find a file
Russ Cox baef953da2 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.
2020-05-17 20:15:41 -04:00
acid merge 2012-03-05 16:36:31 -05:00
bin 9c, 9l: accept CC9FLAGS from config 2020-05-17 20:15:41 -04:00
dict all: remove .cvsignore files 2017-09-14 17:25:17 +02:00
dist Fix broken references to plan9.bell-labs.com/plan9 2020-02-22 20:09:40 -05:00
face faces for lp. 2005-09-13 01:24:50 +00:00
font font: s/10/11 in ascent for unicode.7x13.font 2016-04-18 18:07:22 +00:00
include lib9: use opendir/readdir to read directories 2020-05-17 20:15:41 -04:00
lib all: remove Linux 2.4 vs 2.6 detection 2020-01-19 23:04:58 -05:00
lp all: remove .cvsignore files 2017-09-14 17:25:17 +02:00
mac 9term.app: respect user-set shell instead of forcing bash 2020-05-05 09:30:39 -04:00
mail all: remove .cvsignore files 2017-09-14 17:25:17 +02:00
man 9c, 9l: accept CC9FLAGS from config 2020-05-17 20:15:41 -04:00
ndb ndb/local: remove rsc-specific entries (oops) 2008-06-04 13:28:05 -04:00
news odds and ends 2004-04-21 23:43:46 +00:00
plumb plumb/basic: avoid wrap around in file:1:2 (#158) 2018-11-13 23:59:04 -05:00
postscript all: remove .cvsignore files 2017-09-14 17:25:17 +02:00
proto forgotten files 2005-01-13 04:56:07 +00:00
sky all: remove .cvsignore files 2017-09-14 17:25:17 +02:00
src libthread: add pthreadperthread mode and use under ASAN 2020-05-17 20:15:41 -04:00
tmac tmac: fix troff -ms .KS after .1C 2020-01-13 18:26:15 -05:00
troff troff: import HB, HI and HX fonts from Plan 9 2017-06-15 19:09:58 +00:00
unix Fix broken references to plan9.bell-labs.com/plan9 2020-02-22 20:09:40 -05:00
.gitignore .gitignore: ignore files created for astro(1) and scat(1) 2018-03-23 11:54:04 +01:00
.travis.yml devdraw: cocoa metal screen updates (#215) 2019-05-17 23:17:44 -04:00
CHANGES CHANGES: add pointer to web version 2008-05-10 13:38:21 -04:00
configure For annoying people like Uriel. 2005-11-25 13:18:11 +00:00
CONTRIBUTING.md codereview: delete, now using GitHub pull requests 2017-09-01 13:25:20 -04:00
CONTRIBUTORS venti: fix venti graph on 64-bit 2017-07-23 11:11:56 +00:00
INSTALL INSTALL: build mk all the time 2020-05-17 20:15:41 -04:00
install.txt Fix broken references to plan9.bell-labs.com/plan9 2020-02-22 20:09:40 -05:00
LICENSE allow less restricted use of plan9port-specific code 2009-08-14 21:08:23 -07:00
Makefile For annoying people like Uriel. 2005-11-25 13:18:11 +00:00
rcmain rcmain: use new $termprog variable 2013-08-13 12:46:38 -04:00
README.md TODO: remove, not updated in 15 years 2020-01-13 17:04:06 -05:00

This is a port of many Plan 9 libraries and programs to Unix.

Installation

To install, run ./INSTALL. It builds mk and then uses mk to run the rest of the installation.

For more details, see install(1), at install.txt in this directory and at https://9fans.github.io/plan9port/man/man1/install.html.

Documentation

See https://9fans.github.io/plan9port/man/ for more documentation. (Documentation is also in this tree, but you need to run a successful install first. After that, "9 man 1 intro".)

Intro(1) contains a list of man pages that describe new features or differences from Plan 9.

Helping out

If you'd like to help out, great!

If you port this code to other architectures, please share your changes so others can benefit.

Git

You can use Git to keep your local copy up-to-date as we make changes and fix bugs. See the git(1) man page here ("9 man git") for details on using Git.

Status

Build Status Coverity Scan Build Status

Contact