diff options
author | Hans Bolinder <[email protected]> | 2017-05-02 12:32:39 +0200 |
---|---|---|
committer | Hans Bolinder <[email protected]> | 2017-05-02 12:32:39 +0200 |
commit | 37decbb64953cd65bde2f7003ef5057dc0615ff1 (patch) | |
tree | 688444cfd1f1d4447c4216ebdaee2b838915931e /erts | |
parent | 22e7443d9df041185944a7d49b30459ba4609849 (diff) | |
parent | 0298a195873c606ac885d37f54a098eca3d7905a (diff) | |
download | otp-37decbb64953cd65bde2f7003ef5057dc0615ff1.tar.gz otp-37decbb64953cd65bde2f7003ef5057dc0615ff1.tar.bz2 otp-37decbb64953cd65bde2f7003ef5057dc0615ff1.zip |
Merge branch 'maint-19' into maint
* maint-19:
Updated OTP version
Prepare release
inets: Add missing release note
dialyzer: Fix a bug regarding unknown types
erl_mseg.c: don't use invalid indices in - > cache_powered_node[]
Fix release note for OTP-14290
Diffstat (limited to 'erts')
-rw-r--r-- | erts/doc/src/notes.xml | 41 | ||||
-rw-r--r-- | erts/emulator/sys/common/erl_mseg.c | 7 | ||||
-rw-r--r-- | erts/vsn.mk | 2 |
3 files changed, 38 insertions, 12 deletions
diff --git a/erts/doc/src/notes.xml b/erts/doc/src/notes.xml index 5d21b8fda4..11206d43e7 100644 --- a/erts/doc/src/notes.xml +++ b/erts/doc/src/notes.xml @@ -32,40 +32,52 @@ <p>This document describes the changes made to the ERTS application.</p> -<section><title>Erts 8.3.2</title> +<section><title>Erts 8.3.3</title> <section><title>Fixed Bugs and Malfunctions</title> <list> <item> <p> - The <c>+Bi</c> command line argument of <c>erl</c> - erroneously caused <c>SIGTERM</c> to be ignored by the VM - as well as of all its child processes. This bug was - introduced in erts version 8.3.</p> + Fixed memory segment cache used for multiblock carriers. + Huge (> 2GB) memory segments could cause a VM crash. + Creation of such huge memory segments used for multiblock + carriers is however very uncommon.</p> <p> - Own Id: OTP-14358 Aux Id: OTP-14085 </p> + Own Id: OTP-14360 Aux Id: ERL-401, PR-1417 </p> + </item> + <item> + <p> + Fix release note for OTP-14290 in ERTS version 8.3.1. It + was erroneously placed under "Known Bugs and Problems".</p> + <p> + Own Id: OTP-14363 Aux Id: OTP-14290 </p> </item> </list> </section> </section> -<section><title>Erts 8.3.1</title> +<section><title>Erts 8.3.2</title> <section><title>Fixed Bugs and Malfunctions</title> <list> <item> <p> - Trying to open a directory with file:read_file/1 on Unix - leaked a file descriptor. This bug has now been fixed.</p> + The <c>+Bi</c> command line argument of <c>erl</c> + erroneously caused <c>SIGTERM</c> to be ignored by the VM + as well as of all its child processes. This bug was + introduced in erts version 8.3.</p> <p> - Own Id: OTP-14308 Aux Id: ERL-383 </p> + Own Id: OTP-14358 Aux Id: OTP-14085 </p> </item> </list> </section> +</section> - <section><title>Known Bugs and Problems</title> +<section><title>Erts 8.3.1</title> + + <section><title>Fixed Bugs and Malfunctions</title> <list> <item> <p> @@ -76,6 +88,13 @@ <p> Own Id: OTP-14290</p> </item> + <item> + <p> + Trying to open a directory with file:read_file/1 on Unix + leaked a file descriptor. This bug has now been fixed.</p> + <p> + Own Id: OTP-14308 Aux Id: ERL-383 </p> + </item> </list> </section> diff --git a/erts/emulator/sys/common/erl_mseg.c b/erts/emulator/sys/common/erl_mseg.c index 882c93a83c..968f71211c 100644 --- a/erts/emulator/sys/common/erl_mseg.c +++ b/erts/emulator/sys/common/erl_mseg.c @@ -87,6 +87,7 @@ static const int debruijn[32] = { #define CACHE_AREAS (32 - MSEG_ALIGN_BITS) +/* FIXME: segment sizes > 2 GB result in bogus negative indices */ #define SIZE_TO_CACHE_AREA_IDX(S) (LOG2((S)) - MSEG_ALIGN_BITS) #define MAX_CACHE_SIZE (30) @@ -396,6 +397,9 @@ static ERTS_INLINE int cache_bless_segment(ErtsMsegAllctr_t *ma, void *seg, UWor if (MSEG_FLG_IS_2POW(flags)) { int ix = SIZE_TO_CACHE_AREA_IDX(size); + if (ix < 0) + return 0; + ASSERT(ix < CACHE_AREAS); ASSERT((1 << (ix + MSEG_ALIGN_BITS)) == size); @@ -471,6 +475,9 @@ static ERTS_INLINE void *cache_get_segment(ErtsMsegAllctr_t *ma, UWord *size_p, ASSERT(IS_2POW(size)); + if (ix < 0) + return NULL; + for( i = ix; i < CACHE_AREAS; i++) { if (erts_circleq_is_empty(&(ma->cache_powered_node[i]))) diff --git a/erts/vsn.mk b/erts/vsn.mk index 29323dd970..a83c1ab761 100644 --- a/erts/vsn.mk +++ b/erts/vsn.mk @@ -18,7 +18,7 @@ # %CopyrightEnd% # -VSN = 8.3.2 +VSN = 8.3.3 # Port number 4365 in 4.2 # Port number 4366 in 4.3 |