aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2014-02-28Delay patching of closures to eliminate a race conditionBjörn Gustavsson
The loader of native code tries to avoid race condition by bringing down the system to a single scheduler. Unfortunately, that will not completely avoid race conditions beacuse other processes may still run while the code is being loaded. Therefore, we must still make sure that native code has been fully fixed up before it can be executed. Under unlucky circumstances, it was possible for the global name register process to call a fun in native code before the native code for the fun had been fully fixed up. The run-time system would crash when running the not-fully-fixed-up code. Here is a way to make the bug 100% reproducible. First add this function to the 'global' module: silly_looper(List) -> lists:foreach(fun(E) -> put(any_atom, E) end, List), silly_looper(List). Then insert the following code at the beginning of the init/1 function in the 'global' module: spawn_link(fun() -> silly_looper(lists:seq(1, 100)) end), The run-time system will crash during start up when the native code for the 'global' module is being loaded. What will happen is that lists:foreach/2 (which runs in native code) will call the native code for the fun in silly_looper/1 before the reference to 'any_atom' has been changed from a 0 to the proper tagged atom value. The put/2 BIF will exit when attempting to calculate the hash value for the illegal value 0 (it is not properly tagged). To eliminate this race condition, we must delay patching the native code addresses for a fun into the fun entry until the native code has been fully fixed up. We will use the new BIFs introduced in the previous commit. While we are at it, we will also make sure that we erase any temporary variables in the process dictionary used by the hipe_unified_loader module.
2014-02-28hipe: Break apart hipe_bif:make_fe/3 into two BIFsBjörn Gustavsson
This commit is a preparation for eliminating a race condition loading the native code for modules whose BEAM code has already been loaded. Here we introduce two new BIFs so that looking up a fun entry is separate from setting the native address in the fun entry.
2014-02-26Merge branch 'rickard/xcomp-readme'OTP_17.0-rc2Rickard Green
* rickard/xcomp-readme: Let xcomp/README.md refer to HOWTO/INSTALL-CROSS.md
2014-02-26Merge branch 'bjorn/erts/fp-exceptions-on-osx'Björn Gustavsson
* bjorn/erts/fp-exceptions-on-osx: Disable accidentally enabled floating point exceptions on MacOS X
2014-02-26Update preloaded and primary bootstrapRickard Green
2014-02-26Let xcomp/README.md refer to HOWTO/INSTALL-CROSS.mdRickard Green
2014-02-26Disable accidentally enabled floating point exceptions on MacOS XBjörn Gustavsson
In c7ddafbe, which disabled floating point exceptions on Linux, floating point exceptions were accidentally enabled on MacOS X.
2014-02-26Merge branch 'rel-fixes'Hans Nilsson
2014-02-26ssh: Add appup file correctionsHans Nilsson
2014-02-25Merge branch 'ia/ssl/fix-warnings'Ingela Anderton Andin
* ia/ssl/fix-warnings: ssl: Fix compiler warnings ssl: Fix appup regexps and instructions
2014-02-25ssl: Fix compiler warningsIngela Anderton Andin
2014-02-25ssl: Fix appup regexps and instructionsIngela Anderton Andin
2014-02-25Merge branch 'rel-fixes'Hans Nilsson
2014-02-25eldap: Prepare for releaseHans Nilsson
2014-02-25Merge branch 'rel-fixes'Hans Nilsson
2014-02-25ssh: Prepare for releaseHans Nilsson
2014-02-25inets: Prepare for releaseHans Nilsson
2014-02-25eldap: Prepare for releaseHans Nilsson
2014-02-25Merge branch 'sverk/hipe-disable-gc-bug'Sverker Eriksson
* sverk/hipe-disable-gc-bug: erts: Fix heap overwrite by hipe "trap frames" when GC is disabled ASSERT that GC is not tried with "need" when GC is disabled
2014-02-25erts: Fix heap overwrite by hipe "trap frames" when GC is disabledSverker Eriksson
by trapping BIFs like term_to_binary and binary_to_term.
2014-02-25Merge branch 'ia/ssl/prepare-for-release'Ingela Anderton Andin
* ia/ssl/prepare-for-release: ssl: Prepare for release
2014-02-25ssl: Prepare for releaseIngela Anderton Andin
2014-02-25Merge branch 'kostis/hipe-tests-bs/OTP-11748'Henrik Nord
* kostis/hipe-tests-bs/OTP-11748: Up the time limit (globally) for some slow machines Add check so that tests are skipped if HiPE is not available Add a Makefile for the HiPE tests Add tests for the HiPE compiler (Part 1: binaries and bitstrings)
2014-02-25Merge branch 'hb/syntax_tools/correct_igor_contract'Hans Bolinder
* hb/syntax_tools/correct_igor_contract: Correct a contract in the igor module
2014-02-25Correct a contract in the igor moduleHans Bolinder
Thanks Kostis.
2014-02-24Merge branch 'maint'Hans Nilsson
2014-02-24Merge branch 'anders/diameter/grouped_decode/OTP-11675'Anders Svensson
* anders/diameter/grouped_decode/OTP-11675: Be lenient with the M-bit in Grouped AVPs
2014-02-24Updated OTP version to 17.0-rc2Rickard Green
2014-02-24Be lenient with the M-bit in Grouped AVPsAnders Svensson
RFC 6733 says this, in 4.4: Receivers of a Grouped AVP that does not have the 'M' (mandatory) bit set and one or more of the encapsulated AVPs within the group has the 'M' (mandatory) bit set MAY simply be ignored if the Grouped AVP itself is unrecognized. The rule applies even if the encapsulated AVP with its 'M' (mandatory) bit set is further encapsulated within other sub-groups, i.e., other Grouped AVPs embedded within the Grouped AVP. The first sentence is mangled but take it to mean this: An unrecognized AVP of type Grouped that does not set the 'M' bit MAY be ignored even if one of its encapsulated AVPs sets the 'M' bit. This is a bit of a non-statement since if the AVP is unrecognized then its type is unknown. We therefore don't know that its data bytes contain encapsulated AVPs, so can't but ignore any of those that set the M-bit. Doing anything else when the type *is* known would be inconsistent. OTP-11087 (commit 066544fa) caused the M-bit on any unrecognized AVP to be regarded as an error, unrecognized being taken to mean "not explicitly defined as a member of its container". (That is, an AVP that can't be packed into a dedicated record field, which is slightly stronger than "not defined".) This fixed the original intention for top-level AVPs but broke the required leniency for Grouped AVPs whose type is known. This commit restores the leniency. Note that dictionary files need to be recompiled for the commit to have effect. Thanks to Rory McKeown for reporting the problem.
2014-02-24Merge branch 'rickard/otp_version/OTP-11615'Rickard Green
* rickard/otp_version/OTP-11615: Update OTP version documentation
2014-02-24Up the time limit (globally) for some slow machinesKostis Sagonas
2014-02-24Add check so that tests are skipped if HiPE is not availableKostis Sagonas
2014-02-24Add a Makefile for the HiPE testsKostis Sagonas
2014-02-24Merge branch 'lukas/erts/float_encoding/OTP-11738'Lukas Larsson
* lukas/erts/float_encoding/OTP-11738: erts: Set default external enc to use new float scheme
2014-02-24Merge branch 'maint-r16' into maintHans Nilsson
2014-02-24Update OTP version documentationRickard Green
2014-02-24Merge branch 'hans/ssh/maint-r16/patch_1261' into maint-r16Hans Nilsson
2014-02-24Merge branch 'bjorn/gs/warnings'Björn Gustavsson
* bjorn/gs/warnings: gs: Turn compiler warnings into errors gs: Eliminate a compiler warning
2014-02-24Add tests for the HiPE compiler (Part 1: binaries and bitstrings)Kostis Sagonas
Create tests for the HiPE native code compiler. This is the first part of the effort and contains tests that check that the native code produced by the HiPE compiler for binaries and bitstrings is OK and behaves similarly to the code produced by the BEAM compiler.
2014-02-24gs: Turn compiler warnings into errorsBjörn Gustavsson
2014-02-24Merge branch 'lukas/ose/master/OTP-11334'Lukas Larsson
* lukas/ose/master/OTP-11334: (71 commits) erts: Fix unix efile assert ose: Use -O2 when building ose: Expand OSE docs ose: Add dummy ttsl driver ose: Cleanup cleanup of mutex selection defines ose: Polish mmap configure checks ose: Add ose specific x-compile flags ose: Updating fd_driver and spawn_driver for OSE ose: Updating event and signal API for OSE ose: Cleanup of mutex selection defines win32: Compile erl_log.exe ose: Remove uneccesary define ose: Fix ssl configure test for osx erts: Fix sys_msg_dispatcher assert ose: Fix broken doc links ose: Thread priorities configurable from lmconf ose: Yielding the cpu is done "the OSE" way ose: Start using ppdata for tse key ose: Do not use spinlocks on OSE ose: Fix support for crypto ... Conflicts: lib/crypto/c_src/crypto.c
2014-02-24gs: Eliminate a compiler warningBjörn Gustavsson
We don't want to introduce a potential incompatibility in a deprecated application, so we will fix the warning by removing the dead code that causes the warning.
2014-02-24Merge branch 'egil/fix-syntax_tools-doc'Björn-Egil Dahlberg
* egil/fix-syntax_tools-doc: syntax_tools: Fix broken doc links for Maps
2014-02-24Merge branch 'byaruhaf/add-books/OTP-11754'Henrik Nord
* byaruhaf/add-books/OTP-11754: Updated Copyright year and recent Erlang books
2014-02-24Merge branch 'efine/eldap-IPv6-connections/OTP-11753'Henrik Nord
* efine/eldap-IPv6-connections/OTP-11753: Add support for IPv6 connections
2014-02-24Merge branch 'Vagabond/adt-faster-io_lib_pretty/OTP-11752'Henrik Nord
* Vagabond/adt-faster-io_lib_pretty/OTP-11752: Use lists:keyfind in io_lib_pretty as it is faster
2014-02-24Merge branch 'tuncer/update-deprecation-message/OTP-11751'Henrik Nord
* tuncer/update-deprecation-message/OTP-11751: compiler: update 'asm' deprecation message
2014-02-24Merge branch 'sgolovan/check_if_ftp_path_is_sane/OTP-11750'Henrik Nord
* sgolovan/check_if_ftp_path_is_sane/OTP-11750: lib/inets/src/ftp/ftp.erl: Check the filenames, usernames, passwords etc. for <CR> and <LF> in them and return error if these offending chars are found. See http://erlang.org/pipermail/erlang-bugs/2014-January/003998.html for details. lib/inets/test/ftp_suite_lib.erl: Added checks for <CR><LF> in file and directory names.
2014-02-24Merge branch 'fenollp/yecc-bad-example-code/OTP-11749'Henrik Nord
* fenollp/yecc-bad-example-code/OTP-11749: Replace fixed-length list-nodes by tuple-nodes
2014-02-24Merge branch 'fenollp/otp-edoc-usage-fixes'Henrik Nord
* fenollp/otp-edoc-usage-fixes: Fix edoc usage errors OTP-11702