Age | Commit message (Collapse) | Author |
|
|
|
* sverker/ets_compress/OTP-8922:
ETS 'compressed' option.
|
|
* sverker/crypto_aes_ctr_cmac/OTP-8752:
Fix nif_SUITE to not assume that it is the only one loading NIFs.
crypto CTR support
|
|
The compressed format is using a slighty modified variant of the extern format
(term_to_binary). To not worsen key lookup's too much, the top tuple itself
and the key element are not compressed. Table objects with only immediate
non-key elements will therefor not gain anything (but actually consume one
extra word for "alloc_size").
|
|
|
|
* rickard/thr-spec-inet-buf/OTP-8916:
Remove tight restrictions on some options
Thread specific inet driver buffer stack
|
|
Remove tight restrictions on the high_watermark, low_watermark, and
buffer options.
|
|
The inet driver internal buffer stack implementation
has been rewritten in order to reduce lock contention.
|
|
* rickard/cpu-groups/OTP-8861:
Generalize reader groups
Move cpu topology functionality into erl_cpu_topology.[ch]
Do not use more reader groups for schedulers than schedulers
Conflicts:
erts/emulator/beam/erl_init.c
|
|
Reader groups have been generalized to cpu groups which can be
used for implementing reader groups, but also for implementing
other functionality in the future.
|
|
|
|
When the runtime system had fewer schedulers than logical processors,
the system could get an unnecessarily large amount reader groups.
|
|
* rickard/sys_schedule_debug:
Verify that no outstanding I/O exist when checking for I/O in debug build
|
|
|
|
* pg/fix-system_info-cpu_topology-segfault:
Fix crash with erlang:system_info({cpu_topology,junk})
OTP-8914
|
|
* rickard/sched-misc/OTP-8932:
Fix erts_schedule_misc_op() so it can be called from arbitrary threads
|
|
* rickard/halfword-fix/OTP-8910:
Fix ERL_DRV_INT and ERL_DRV_UINT in halfword emulator
|
|
* rickard/dist/OTP-8901:
Be less eager to set dist entry in busy state
|
|
* rickard/tsd-get/OTP-8889:
Fix erl_drv_tsd_get() and enif_tsd_get()
|
|
Tracing to port could cause an emulator crash when unloading the
trace driver.
|
|
|
|
|
|
|
|
This patch fixes building error of SCTP in FreeBSD 7.1 and later.
See
http://www.erlang.org/cgi-bin/ezmlm-cgi?2:mss:1257:200904:hppnfialjjdlgecdiehe
for the details.
R13A patch for solving a compilation error when building
erts/emulator/drivers/common/inet_drv.c
by Kenji Rikitake 12-APR-2009
Symptom solved by this patch:
When building R13A in FreeBSD 7.1-RELEASE,
the compiler flag
HAVE_STRUCT_SCTP_PADDRPARAMS_SPP_SACKDELAY
is NOT enabled.
Some code in
erts/emulator/drivers/common/inet_drv.c
incorrectly assumes
HAVE_STRUCT_SCTP_PADDRPARAMS_SPP_SACKDELAY
is always true when
HAVE_STRUCT_SCTP_PADDRPARAMS_SPP_FLAGS
is true in config.h.
This assumption causes a compilation error.
|
|
The runtime system is now less eager to suspend
processes sending messages over the distribution. The
default value of the distribution buffer busy limit
has also been increased from 128 KB to 1 MB. This in
order to improve throughput.
|
|
Id: OTP-8912
This patch creates a new family of flags with the "+z" prefix. It
further creates a new configuration option called "dbbl" (which is the
first letter of the name dist_buf_busy_limit). Example usage of this
flag would be "+zdbbl 1048576".
This patch creates an adjustable buffer limit for the amount of data
that may be buffered by the erlang distribution code (in dist.c
specifically). Before this patch, this hard-coded constant was used:
#define ERTS_DE_BUSY_LIMIT (128*1024)
When large binaries are transmitted between nodes (or simply a lot of
medium-sized binaries), it is very easy to hit the old 128KB limit.
Processes that use the erlang:system_monitor() BIF to monitor system
events can be spammed by {monitor, busy_dist_port, ...} message tuples
at rates of tens to even hundreds of messages/second.
A larger buffer limit will allow processes to buffer more outgoing
messages over the distribution. When the buffer limit has been
reached, sending processes will be suspended until the buffer size has
shrunk. The buffer limit is per distribution channel. A higher limit
will give lower latency and higher throughput at the expense of
higher memory usage.
A variation of this patch has been in commercial production use in at
least two companies that the author is aware of. Larger buffer values
can reduce the number of {monitor, busy_dist_port, ...} system
messages drastically, lower overall messaging latencies, and prevent
false timeouts and 'nodedown' messages in extremely busy Mnesia systems.
Test suite: there are two tests:
a. In erlexec_SUITE.erl to test basic set & get of the value
b. In distribution_SUITE.erl, to verify that setting +zdbbl very
low will actually change behavior.
|
|
|
|
A bug in erl_drv_tsd_get() and enif_tsd_get() could cause an
emulator crash. These functions are currently not used in OTP.
That is, the crash only occur on systems with user implemented
NIF libraries or drivers that use one of these functions.
|
|
* rickard/halfword-bug:
Fix newly introduced halfword emulator bugs
|
|
|
|
* mp/fix-hipe-write:
fix 64-bit writes to 32-bit struct field in HiPE runtime
OTP-8877
|
|
There is a bug in system_info BIF causing a crash if
erts_get_cpu_topology_term fails. The fix comes with a non-regression
test.
|
|
Make sure that an update to erts/emulator/tools/make_tables will
force all generated files to be re-generated.
|
|
It seems to work (at least on a little-endian architecture)
by sheer luck.
|
|
In the HiPE part of the runtime system's Process struct
there is a state field which is 32 bits wide even on 64-bit
machines.
There is a single instruction in the HiPE AMD64 runtime
where this field is incorrectly written with a 64-bit store.
Luckily the extraneous 32 bits are written as zeros to 4
bytes of tail-padding at the end of the struct, so nothing
should have broken because of this.
The same bug exists in the HiPE PowerPC64 runtime (in
development), but on the big-endian PPC64 the effect is
to write the actual value to the tail-padding and zero
to the struct field, which potentially breaks TRAPs from
BIFs (depending on BIF arities and how many parameter
registers the runtime has been configured to use).
Thanks to Paul Guyot for noticing the oversized write on AMD64.
|
|
In a70159b33f20a26b2674d7cf777617c5f0261a5c, the _VOID_ macro
was eliminated, but one use of it inside an "#ifdef DEBUG"
was forgotten.
|
|
* rickard/timer-wheel/OTP-8835:
Use mutex instead of rwlock
|
|
|
|
* pan/binary-bif-valgrind-leak/OTP-8823:
Teach erl_bif_binary not leak memory by doing malloc(0)
|
|
Use mutex instead of rwlock since the read lock is more or less
unused and it can be quite contended.
|
|
* bjorn/http-packet-error/OTP-8831:
Make gen_tcp:recv/2 consistent with ssl:recv/2
|
|
* rickard/rwmtx-spin/OTP-8819:
Fix deadlock in reader optimized rwlock implementation
Remove unused variables
Increase spincount with many schedulers
Re-enable spin wait on ethreads rwlocks
|
|
When the HTTP packet mode has been enabled for a socket,
the ssl and gen_tcp modules have different error indications
when there is an error while parsing the HTTP header:
ssl:recv(SSLSocket, 0) -> {ok, {http_error, _Str}}
gen_tcp:recv(Socket, 0) -> {error, {http_error, _Str}}
We have decided to change gen_tcp:recv/2 to behave the same
way as ssl:recv/2. That means that there will be always be
an ok tuple if data could be succefully read from the socket,
and an error tuple if there was a read error at the socket level.
|
|
Spin wait on most ethread rwlocks used by the runtime system was
unintentionally disabled during development. Spin wait has now been enabled
again. This bug appeared in commit 59ee2a593090e7d53c97ceba63cbd300d1b9657e,
i.e., it has not been seen in any released versions.
|
|
|
|
* pg/fix-hipe-crash-in-gc_after_bif:
Fix call to erts_gc_after_bif_call in hipe glue
|
|
* mk/net-dragonfly-bsd-patches:
Remove unused variables
Use proper install method
Add support for DragonFly BSD
Add support for NetBSD
|
|
* ms/inet-bug-fixes:
inet: support retrieving MAC address on BSD
inet: fix getservbyname buffer overflow
inet: fix ifr_name buffer overflow
inet: null terminate ifr_name buffer
OTP-8816
|
|
R12B-0 changed the signature of erts_gc_after_bif_call and it now
takes 4 parameters instead of 2 in R11B-5. Yet, the glue code was not
updated accordingly. As a result, the function erts_gc_after_bif_call
was called with garbage and would randomly cause a crash later in the
garbage collector code.
The fix consists in passing NULL and 0 for the third and fourth
parameters, since there is no term to add to rootset, recovering the
behaviour of R11B-5
(see otp_src_R11B-5/erts/emulator/beam/erl_gc.c, line 314).
(Includes assembly language fixes and code style improvements
suggested by Mikael Pettersson.)
|
|
The make_term_n function in nif_SUITE.c created resources that never
got released, creating valgrind memcheck Definitely Lost warnings.
|