haproxy public development tree
Go to file
Willy Tarreau 2c315ee75e BUG/MEDIUM: ebtree: don't set attribute packed without unaligned access support
An alignment issue on Sparc64 with ebtrees was reported in early 2017
here https://www.mail-archive.com/haproxy@formilux.org/msg25937.html and
a similar one was finally reported in issue #512.

The problem has its roots in the fact that 64-bit keys will end up being
unaligned on such archs which do not support unaligned accesses. But on
most platforms supporting unaligned accesses, dealing with smaller nodes
results in better performance.

One of the possible problems caused by attribute packed there is that it
promotes a structure both to be unaligned and unpadded, which may come
with fun if some fields of the struct itself are accessed and such a node
is placed at an unaligned location. It's not a problem for regular unaligned
accesses but may become one for atomic operations such as the CAS on leaf_p
that's used in struct task. In practice we know that this struct is properly
aligned and is a very edge case so this patch adds comments there to remind
to be careful about it.

This patch depends on previous patch "MINOR: compiler: move CPU capabilities
definition from config.h and complete them" and could be backported to all
stable branches. It fixes issues #512 and #9.
2020-02-21 16:32:57 +01:00
.github BUILD: enable ERR=1 in github cygwin builds 2020-02-15 16:32:38 +01:00
contrib MEDIUM: connection: remove the intermediary polling state from the connection 2020-02-21 11:21:12 +01:00
doc MINOR: http-ana: Match on the path if the monitor-uri starts by a / 2020-02-18 16:29:29 +01:00
ebtree BUG/MEDIUM: ebtree: don't set attribute packed without unaligned access support 2020-02-21 16:32:57 +01:00
examples
include MINOR: compiler: move CPU capabilities definition from config.h and complete them 2020-02-21 16:32:57 +01:00
reg-tests MINOR: http-ana: Match on the path if the monitor-uri starts by a / 2020-02-18 16:29:29 +01:00
scripts SCRIPTS: announce-release: use mutt -H instead of -i to include the draft 2020-02-15 15:24:28 +01:00
src BUG/MEDIUM: shctx: make sure to keep all blocks aligned 2020-02-21 13:45:58 +01:00
tests
.cirrus.yml BUILD: cirrus-ci: add ERR=1 to freebsd builds 2020-02-11 10:03:06 +01:00
.gitignore
.travis.yml BUILD: travis-ci: harden builds, add ERR=1 (warning ought to be errors) 2020-02-12 15:42:44 +01:00
BRANCHES
CHANGELOG [RELEASE] Released version 2.2-dev2 2020-02-07 04:12:19 +01:00
CONTRIBUTING
INSTALL MINOR: build: add aix72-gcc build TARGET and power{8,9} CPUs 2020-02-12 15:37:13 +01:00
LICENSE
MAINTAINERS
Makefile MINOR: build: add aix72-gcc build TARGET and power{8,9} CPUs 2020-02-12 15:37:13 +01:00
README
ROADMAP
SUBVERS
VERDATE [RELEASE] Released version 2.2-dev2 2020-02-07 04:12:19 +01:00
VERSION [RELEASE] Released version 2.2-dev2 2020-02-07 04:12:19 +01:00

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
  - BRANCHES to understand the project's life cycle and what version to use
  - 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)