haproxy public development tree
Go to file
Willy Tarreau c7091d89ae MEDIUM: debug/threads: implement an advanced thread dump system
The current "show threads" command was too limited as it was not possible
to dump other threads' detailed states (e.g. their tasks). This patch
goes further by using thread signals so that each thread can dump its
own state in turn into a shared buffer provided by the caller. Threads
are synchronized using a mechanism very similar to the rendez-vous point
and using this method, each thread can safely dump any of its contents
and the caller can finally report the aggregated ones from the buffer.

It is important to keep in mind that the list of signal-safe functions
is limited, so we take care of only using chunk_printf() to write to a
pre-allocated buffer.

This mechanism is enabled by USE_THREAD_DUMP and is enabled by default
on Linux 2.6.28+. On other platforms it falls back to the previous
solution using the loop and the less precise dump.
2019-05-17 17:16:20 +02:00
.github/ISSUE_TEMPLATE DOC: add github issue templates 2019-01-17 22:53:55 +01:00
contrib MINOR/DOC: spoe-server: Add documentation 2019-05-13 17:43:47 +02:00
doc MEDIUM: debug/threads: implement an advanced thread dump system 2019-05-17 17:16:20 +02:00
ebtree CLEANUP: fix typos in comments in ebtree 2018-11-18 22:23:15 +01:00
examples MEDIUM: Make 'option forceclose' actually warn 2019-05-16 18:02:03 +02:00
include MEDIUM: debug/threads: implement an advanced thread dump system 2019-05-17 17:16:20 +02:00
reg-tests REGTEST: fix tls_health_checks random failures on MacOS in Travis-CI 2019-05-13 10:47:41 +02:00
scripts BUILD: add BoringSSL to travis-ci build matrix 2019-05-10 10:39:29 +02:00
src MEDIUM: debug/threads: implement an advanced thread dump system 2019-05-17 17:16:20 +02:00
tests CLEANUP: fix a misspell in tests/filltab25.c 2018-11-18 22:23:15 +01:00
.cirrus.yml BUILD: enable freebsd builds on cirrus-ci 2019-05-16 09:27:51 +02:00
.gitignore DOC: split the README into README + INSTALL 2018-12-16 22:30:57 +01:00
.travis.yml BUILD: travis-ci: make TMPDIR global variable in travis-ci 2019-05-11 06:07:47 +02:00
CHANGELOG [RELEASE] Released version 2.0-dev3 2019-05-15 16:51:48 +02:00
CONTRIBUTING
INSTALL Revert "CLEANUP: wurfl: remove dead, broken and unmaintained code" 2019-04-23 10:34:43 +02:00
LICENSE
MAINTAINERS DOC: wurfl: added point of contact in MAINTAINERS file 2019-04-23 11:00:23 +02:00
Makefile MEDIUM: debug/threads: implement an advanced thread dump system 2019-05-17 17:16:20 +02:00
README DOC: split the README into README + INSTALL 2018-12-16 22:30:57 +01:00
ROADMAP
SUBVERS
VERDATE [RELEASE] Released version 2.0-dev3 2019-05-15 16:51:48 +02:00
VERSION [RELEASE] Released version 2.0-dev3 2019-05-15 16:51:48 +02:00

README

The HAProxy documentation has been split into a number of different files for
ease of use.

Please refer to the following files depending on what you're looking for :

  - INSTALL for instructions on how to build and install HAProxy
  - LICENSE for the project's license
  - CONTRIBUTING for the process to follow to submit contributions

The more detailed documentation is located into the doc/ directory :

  - doc/intro.txt for a quick introduction on HAProxy
  - doc/configuration.txt for the configuration's reference manual
  - doc/lua.txt for the Lua's reference manual
  - doc/SPOE.txt for how to use the SPOE engine
  - doc/network-namespaces.txt for how to use network namespaces under Linux
  - doc/management.txt for the management guide
  - doc/regression-testing.txt for how to use the regression testing suite
  - doc/peers.txt for the peers protocol reference
  - doc/coding-style.txt for how to adopt HAProxy's coding style
  - doc/internals for developer-specific documentation (not all up to date)