aboutsummaryrefslogtreecommitdiffstats
path: root/erts
AgeCommit message (Collapse)Author
2011-09-16Merge branch 'pan/erl-bif-types/OTP-9496' into devBjörn-Egil Dahlberg
* pan/erl-bif-types/OTP-9496: Cleanup ETS bif's in hipe:erl_bif_types.erl (for dialyzer)
2011-09-16Merge branch 'pan/win_erlsrv_stop/OTP-9344' into devBjörn-Egil Dahlberg
* pan/win_erlsrv_stop/OTP-9344: Move init of smp rw mutex from init to sys_args to make sure that it is initialized before the first erts_sys_getenv call Move erts_sys_env_init() to erts_sys_pre_init() Remove _DEBUG from start_erl.c Spelling correction in erlsrv doc Convert windows start_erl to take rootdir on command line Add command start_disabled to erlsrv Add global lock for erlsrv to avoid races Change start order so that service_event gets initialized before it's used
2011-09-16Merge branch 'pan/win_symbolic_link_fixes/OTP-9279' into devBjörn-Egil Dahlberg
* pan/win_symbolic_link_fixes/OTP-9279: Add error code for cyclic symbolic links and make directory links readable
2011-09-16Merge branch 'pan/erts_printf_term/OTP-9435' into devBjörn-Egil Dahlberg
* pan/erts_printf_term/OTP-9435: Correct return values from write-functions in erl_printf
2011-09-13Merge branch 'ta/werror' into devHenrik Nord
* ta/werror: snmp: extend warnings_as_errors test systools: add warnings_as_errors option asn1ct: add warnings_as_errors option leex: optimize werror/1 yecc: optimize werror/1 yecc: use more descriptive name: 'werror' leex: use more descriptive name: 'werror' compile: optimize werror/1 compile: log warnings as errors if -Werror is enabled yecc: log warnings as errors if -Werror is enabled leex: log warnings as errors if -Werror is enabled yecc: honour -Werror passed from erlc leex: honour -Werror passed from erlc Do not write beam file if Werr and warnings /= [] parsetools: test if warnings_as_errors writes file OTP-9536
2011-09-12Make sure we have a run_queueBjörn-Egil Dahlberg
* In rare cases we could have no run_queue in schedule misc ops
2011-09-12Cleanup ETS bif's in hipe:erl_bif_types.erl (for dialyzer)Patrik Nyblom
2011-09-10Merge branch 'bjorn/erts/fix-autoimports-testcase' into devBjörn Gustavsson
* bjorn/erts/fix-autoimports-testcase: erts: Add a sanity check to autoimport_SUITE erts: Fix failing autoimport test case
2011-09-08Merge branch 'fm/enif_compare-64-to-32bits-cast' into devHenrik Nord
* fm/enif_compare-64-to-32bits-cast: Fix enif_compare on 64bits machines OTP-9533
2011-09-08Merge branch 'dc/fix_win32_static_crypto' into devHenrik Nord
* dc/fix_win32_static_crypto: Fix win32 OpenSSL static linking broken in 20c9d6e OTP-9532
2011-09-08Merge branch 'hw/detect-cpus-on-irix' into devHenrik Nord
* hw/detect-cpus-on-irix: Detect the available CPUs on IRIX OTP-9531
2011-09-08Merge branch 'fm/external_size_2' into devHenrik Nord
* fm/external_size_2: Add erlang:external_size/2 BIF OTP-9528
2011-09-08Merge branch 'hw/ignore-empty-epmd-address' into devHenrik Nord
* hw/ignore-empty-epmd-address: Let epmd ignore empty ERL_EPMD_ADDRESS OTP-9525
2011-09-08compile: log warnings as errors if -Werror is enabledTuncer Ayaz
2011-09-08erts: Add a sanity check to autoimport_SUITEBjörn Gustavsson
If we fail to parse out any functions from erlang.xml, make sure that we fail.
2011-09-08erts: Fix failing autoimport test caseBjörn Gustavsson
The autoimport_SUITE:autoimport/1 test case would interpret data type definitions as function calls. Fix this by skipping to the <funcs> tag before starting to collect function names.
2011-09-08Merge branch 'bjorn/erts/fix-erlc_SUITE-arg_overflow' into devBjörn Gustavsson
* bjorn/erts/fix-erlc_SUITE-arg_overflow: erlc_SUITE: Fix arg_overflow/1 test case
2011-09-03erlc_SUITE: Fix arg_overflow/1 test caseBjörn Gustavsson
In commit be8759e68b337524c056b8bb757ea68c9996d863, a buffer overflow was fixed in erlc and the erlc_SUITE:arg_overflow/1 test case was added. That test cases invokes erlc with 10000 -D options, which will result in 'erl' being invoked with more than 30000 arguments. On some platforms, the test case will fail for the wrong reason: * 64-bit Linux kernels before 2.6.23 limit the number of arguments in an excvp() call to 16383. (See "Number of arguments and maximum length of one argument" in http://www.in-ulm.de/~mascheck/various/argmax/.) * The command shell in Windows limits the size of the command line to 8191 characters. Depending on the platform, pass a different number of -D options to erlc. Since the size of the options does not matter for this test case, make the options as short as possible by generating numbers in base 36.
2011-09-02Update documentation and specifications of some of the zlib functionsHans Bolinder
The functions zlib:deflateSetDictionary/2 and zlib:inflateSetDictionary/2 accept iodata() as Dictionary. The functions zlib:crc32/2,3, zlib:adler32/2,3, zlib:compress/1, zlib:uncompress/1, zlib:zip/1, and zlib:unzip/1 accept iodata() as data.
2011-09-02Fix enif_compare on 64bits machinesFilipe David Manana
In 64bits machines the Sint type has a size of 8 bytes, while on 32bits machines it has a 4 bytes size. enif_compare was ignoring this and therefore returning incorrect values when the result of the CMP function (which returns a Sint value) doesn't fit in 4 bytes. For example, passing the operands -1294536544000 and -1178704800000 to enif_compare would trigger the bug.
2011-09-01Merge branch 'ta/configure-fdatasync' into devHenrik Nord
* ta/configure-fdatasync: Document fdatasync -lrt requirement (SunOS <= 5.10) Move fdatasync autoconf checks to proper place OTP-9512
2011-08-30Merge branch 'ms/epmd-fix-compiler-warnings' into devHenrik Nord
* ms/epmd-fix-compiler-warnings: epmd: fix compiler warnings OTP-9500
2011-08-27Add erlang:external_size/2 BIFFilipe David Manana
This BIF's second parameter is a list of options. Currently the only allowed option is {minor_version, Version} where version is either 0 (default) or 1.
2011-08-25Add erlang:check_old_code/1Björn Gustavsson
Add erlang:check_old_code/1 to quickly check whether a module has old code. If there is no old code, there is no need to call erlang:check_process_code/2 for all processes, which will save some time if there are many processes.
2011-08-25check_process_code/2: Quickly return 'false' if there is no old codeBjörn Gustavsson
There is no need to suspend the process if the module has no old code. Measurements show that this change will make erlang:check_process_code/2 in an SMP emulator about four times faster if the module has no old code.
2011-08-24Merge branch 'rc/r14-gc-fix' into devHenrik Nord
* rc/r14-gc-fix: fix 64-bit issues in the garbage collection OTP-9488
2011-08-15erts: use a union to avoid strict aliasing issuesTuncer Ayaz
Use a union for pointer type conversion to avoid compiler warnings about strict-aliasing violations with gcc-4.1. gcc >= 4.2 does not emit the warning. TODO: Reconsider use of union once gcc-4.1 is obsolete?
2011-08-15erts: adapt matrix_nif to R14 erl_nif API changesTuncer Ayaz
2011-08-15fix 64-bit issues in the garbage collectionRichard Carlsson
We discovered that if a single Erlang process tried to grow above 32 GB (i.e., more 64-bit words than can be counted by a 32-bit number), the VM failed to find the next larger heap size, even though there were plenty more heap sizes left to pick from and even though we had a lot more memory available on the machine. (Obviously, this is only applicable on 64-bit Erlang.) It turned out to be due to some 'int' variables in the heap resizing parts of erl_gc.c not being properly updated to 'Uint' or 'Sint'. Once that was fixed, I got segfaults instead as soon as the heap got larger than 2^32 words, due to even more 'int' declarations in the same file, but now in the GC code. After fixing this as well, I successfully ran an Erlang node in which a single Erlang process had a heap so large that I'm not at liberty to divulge the exact size, but I think the scientific term is "humongous", and I'm confident that there are no further immediate problems with very very large individual process heaps.
2011-08-11Fix win32 OpenSSL static linking broken in 20c9d6eDave Cottlehuber
2011-08-08Merge branch 'ms/inet-socket-domain-error' into devHenrik Nord
* ms/inet-socket-domain-error: inet: error if fd does not match socket domain OTP-9455
2011-08-08Merge branch 'cg/fix-constant-logical-operand' into devHenrik Nord
* cg/fix-constant-logical-operand: Fix use of logical operator && with constant operand instead of bitwise &. OTP-9454
2011-08-08Merge branch 'pg/fix-freebsd-dualcore-detection' into devHenrik Nord
* pg/fix-freebsd-dualcore-detection: Fix bug in FreeBSD topology detection code OTP-9453
2011-08-08Merge branch 'pg/fix-hibernate-scheduling-with-hipe' into devHenrik Nord
* pg/fix-hibernate-scheduling-with-hipe: Fix bug related to hibernate and HiPE (clear F_HIBERNATE_SCHED flag) OTP-9452
2011-08-03Fix binary construction with huge literal sizesBjörn Gustavsson
Constructing binaries using the bit syntax with literals sizes that would not fit in an Uint will either cause an emulator crash or the loading to be aborted. Use the new TAG_o tag introduced in the previous commit to make sure that the attempt to create huge binary literals will generate a system_limit exception at run-time.
2011-08-03beam_load.c: Add overflow check of tag valuesBjörn Gustavsson
The handling of large values for other tags than TAG_i (integer) is buggy. Any tag value equal to or greater than 2^40 (5 bytes) will abort loading. Tag values fitting in 5 bytes will be truncated to 4 bytes values. Those bugs cause real problems because the bs_init2/6 and bs_init_bits/6 instructions unfortunately use TAG_u to encode literal sizes (using TAG_i would have been a better choice, but it is too late to change that now). Any binary size that cannot fit in an Uint should cause a system_limit exception at run-time, but instead the buggy handling will either cause an emulator crash (for values in the range 2^32 to 2^40-1) or abort loading. In this commit, implement overflow checking of tag values as a preparation for fixing the binary construction instructions. If any tag value cannot fit in an Uint (except for TAG_i), change the tag to the special TAG_o overflow tag.
2011-08-03beam_makeops: Add some sanity checksBjörn Gustavsson
We want to make sure that a tag/type name is not defined more than once and that we don't define too many primitive tags. Primitive tags must be named with lowercase letters (or they will be confused with variable names in transformations in the ops.tab file).
2011-08-03Fix construction of <<0:((1 bsl 32)-1)>>Björn Gustavsson
Attempting to construct <<0:((1 bsl 32)-1)>>, the largest bitstring allowed in a 32 bit emulator, would cause an emulator crash because of integer overflow. Fix the problem by using an Uint64 to avoid integer overflow. Do not attempt to handle construction of <<0:((1 bsl 64)-1>> in a 64-bit emulator, because that will certainly cause the emulator to terminate anyway because of insufficient memory.
2011-07-29Merge branch 'sverker/allocator-aoff/OTP-9424' into devSverker Eriksson
* sverker/allocator-aoff/OTP-9424: New allocator: Address order first fit (aoff)
2011-07-27Merge branch 'sverker/fun_SUITE-refc_dist-gcfix' into devSverker Eriksson
* sverker/fun_SUITE-refc_dist-gcfix: Fix test case fun_SUITE:refc_dist
2011-07-27Merge branch 'sverker/epmd-vxworks-select-bug/OTP-9427' into devSverker Eriksson
* sverker/epmd-vxworks-select-bug/OTP-9427: Fix epmd crash on vxworks caused by faulty argument to select
2011-07-27Fix epmd crash on vxworks caused by faulty argument to selectSverker Eriksson
The first argument g->max_conn to select() in epmd_srv.c seems to be wrong as it excludes the listening socket(s). Instead we keep track of the highest fd seen. However I still don't understand why select() started to fail for vxworks with R14B03 when the feature of more than one listening socket was introduced. The default is still 1 listening socket (num_sockets=1), which would make the first argument to select() unchanged.
2011-07-26Merge branch 'sverker/testcase/OTP-9422' into devSverker Eriksson
* sverker/testcase/OTP-9422: Test case for OTP-9422
2011-07-26Fix test case fun_SUITE:refc_distSverker Eriksson
It failed sometimes depending on GC invocation.
2011-07-22Test case for OTP-9422Sverker Eriksson
2011-07-20Small fixups for rickard/sbmbc/OTP-9339Sverker Eriksson
alloc_no of sbmbc_low_alloc was set to ERTS_ALC_A_STANDARD_LOW
2011-07-18New allocator: Address order first fit (aoff)Sverker Eriksson
2011-07-13Correct return values from write-functions in erl_printfPatrik Nyblom
2011-07-13Let epmd ignore empty ERL_EPMD_ADDRESSHolger Weiß
If the environment variable ERL_EPMD_ADDRESS is set to the empty string, empd now behaves like it does by default when ERL_EPMD_ADDRESS is unset. That is, in this case, epmd now listens on all available interfaces instead of using only the loopback interface, which happened because epmd added the loopback address to the (in this case empty) list of addresses specified via ERL_EPMD_ADDRESS. Also, epmd now ignores ERL_EPMD_ADDRESS if it contains only separator characters (comma and space). The same applies to epmd's -address option.
2011-07-13Merge branch 'sverker/enif_make_int64-halfword/OTP-9394' into devSverker Eriksson
* sverker/enif_make_int64-halfword/OTP-9394: Fix halfword bug in enif_make_int64