aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2013-01-23Add testcase for oct countersPatrik Nyblom
2013-01-23Fix inet_drv _oct counters 32bit/64bit bugPatrik Nyblom
2013-01-23Merge branch 'pan/R16/redhat_workaround'Patrik Nyblom
* pan/R16/redhat_workaround: Clean up and make the fix work on windows. Add workaround for CentOS/RedHat writev bug to inet_drv OTP-10747
2013-01-23Merge branch 'pan/fdmanana/fix_efile_drv_crash'Patrik Nyblom
* pan/fdmanana/fix_efile_drv_crash: Fix efile_drv crash when using async thread pool Alternative solution to the efile_drv crash on exit OTP-10748
2013-01-23Fix efile_drv crash when using async thread poolFilipe David Borba Manana
When using the async thread pool and compressed files, when an efile driver port instance is shutdown, the efile_drv stop callback closes the file descriptor (a gzFile instance actually) - this is dangerous if at the same time there's an async thread performing an operation against the file, for example calling invoke_read(), which can result in a segmentation fault, or calling invoke_close() which double closes the gzFile and this in turn causes 2 consecutive calls to driver_free() against same gzFile instance (resulting in later unexpected crashes in erl_bestfit_alloc.c for example). The following test program makes the emulator crash when using the async thread pool: -module(t2). -export([t/1]). t(N) -> file:delete("foo.bar"), % Use of 'compressed' option, for creating/writing the file, % is irrelevant. It only matters when opening it later for % reads - a non-compressed file open with the 'compressed' % option goes through an internal gzFile handle (instead of % a plain integer fd), just like a compressed file. %{ok, Fd} = file:open("foo.bar", [raw, write, binary]), {ok, Fd} = file:open("foo.bar", [raw, write, binary, compressed]), ok = file:write(Fd, <<"qwerty">>), ok = file:close(Fd), Pid = spawn_link(fun() -> process_flag(trap_exit, true), loop(N) end), Ref = erlang:monitor(process, Pid), receive {'DOWN', Ref, _, _, _} -> ok end. loop(0) -> ok; loop(N) -> Server = self(), Pid = spawn(fun() -> {ok, Fd} = file:open("foo.bar", [read, raw, binary, compressed]), Server ! continue, % Comment the file:read/2 call to make the file:close/1 call much % more likely to crash or end up causing efile_drv to close twice % the fd (gzFile), which will make the emulator crash later in the % best fit allocator (erl_bestfit_alloc.c). _ = file:read(Fd, 5), file:close(Fd) end), receive continue -> ok end, exit(Pid, shutdown), loop(N - 1). Running this test when using the async thread pool: shell> erl +A 4 Erlang R15B03 (erts-5.9.3.1) [source] [64-bit] [smp:4:4] [async-threads:4] [hipe] [kernel-poll:false] Eshell V5.9.3.1 (abort with ^G) 1> c(t2). {ok,t2} 2> t2:t(500000). Segmentation fault (core dumped) When not using the async thread pool, there are no issues: shell> erl Erlang R15B03 (erts-5.9.3.1) [source] [64-bit] [smp:4:4] [async-threads:0] [hipe] [kernel-poll:false] Eshell V5.9.3.1 (abort with ^G) 1> c(t2). {ok,t2} 2> t2:t(500000). ok 3> An example stack trace when the crash happens because there's an ongoing read operation is: Thread 1 (Thread 0x7f021cf2c700 (LWP 10687)): #0 updatewindow (strm=0x2691bf8, out=5) at zlib/inflate.c:338 #1 0x00000000005a2ba0 in inflate (strm=0x2691bf8, flush=0) at zlib/inflate.c:1141 #2 0x000000000055c46a in erts_gzread (file=0x2691bf8, buf=0x7f0215b29e80, len=5) at drivers/common/gzio.c:523 #3 0x00000000005849ef in invoke_read (data=0x26b2228) at drivers/common/efile_drv.c:1114 #4 0x000000000050adcb in async_main (arg=0x7f021bf5cf40) at beam/erl_async.c:488 #5 0x00000000005c21a0 in thr_wrapper (vtwd=0x7fff69c6ff10) at pthread/ethread.c:106 #6 0x00007f021c573e9a in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0 #7 0x00007f021c097cbd in clone () from /lib/x86_64-linux-gnu/libc.so.6 #8 0x0000000000000000 in ?? () And when there's an ongoing close operation when the driver is stopped: Thread 1 (Thread 0x7fe5f5654700 (LWP 747)): #0 0x0000000000459b64 in bf_unlink_free_block (block=0x10b2a70, allctr=<optimized out>, flags=<optimized out>) at beam/erl_bestfit_alloc.c:792 #1 bf_unlink_free_block (flags=0, block=0x10b2a70, allctr=0x873380) at beam/erl_bestfit_alloc.c:822 #2 bf_get_free_block (allctr=0x873380, size=<optimized out>, cand_blk=<optimized out>, cand_size=<optimized out>, flags=0) at beam/erl_bestfit_alloc.c:869 #3 0x000000000044f0dd in mbc_alloc_block (alcu_flgsp=<synthetic pointer>, blk_szp=<synthetic pointer>, size=200, allctr=0x873380) at beam/erl_alloc_util.c:1198 #4 mbc_alloc (allctr=0x873380, size=200) at beam/erl_alloc_util.c:1345 #5 0x000000000045449b in do_erts_alcu_alloc (size=200, extra=0x873380, type=165) at beam/erl_alloc_util.c:3442 #6 erts_alcu_alloc_thr_pref (type=165, extra=<optimized out>, size=192) at beam/erl_alloc_util.c:3520 #7 0x000000000055c0bf in gz_open (mode=0x5d98b2 "rb", path=0x1103418 "foo.bar") at drivers/common/gzio.c:164 #8 erts_gzopen (path=0x1103418 "foo.bar", mode=0x5d98b2 "rb") at drivers/common/gzio.c:307 #9 0x0000000000584e47 in invoke_open (data=0x1103330) at drivers/common/efile_drv.c:1857 #10 0x000000000050adcb in async_main (arg=0x7fe5f698af80) at beam/erl_async.c:488
2013-01-23Alternative solution to the efile_drv crash on exitPatrik Nyblom
2013-01-23Update primary bootstrapBjörn Gustavsson
2013-01-23Merge branch 'lukas/erts/busy-port-tests/OTP-10336'Rickard Green
* lukas/erts/busy-port-tests/OTP-10336: Add testcases for strange port scheduling scenarios
2013-01-23Merge branch 'rickard/rg-default/OTP-10737'Rickard Green
* rickard/rg-default/OTP-10737: Raise default reader group limit to 64
2013-01-23Add testcases for strange port scheduling scenariosLukas Larsson
2013-01-23Merge branch 'rickard/r16/port-optimizations/OTP-10336'Rickard Green
* rickard/r16/port-optimizations/OTP-10336: Bump reductions also for immediate driver calls Add 'port_count' and 'port_limit' to system_info/1 spec Fix documentation Replace use of deprecated functions in test cases Replace use of driver_send_term() with erl_drv_send_term() Conflicts: erts/preloaded/ebin/erlang.beam
2013-01-23Bump reductions also for immediate driver callsRickard Green
2013-01-23Merge branch 'fdm/windows_file_share_delete/OTP-10727'Fredrik Gustafsson
* fdm/windows_file_share_delete/OTP-10727: Use share flags for all file operations on Windows
2013-01-23Merge branch 'fredrik/fix-dialyzer-warn-r16'Fredrik Gustafsson
* fredrik/fix-dialyzer-warn-r16: Removed deprecated functions handle_pref_algs with correct return values
2013-01-23Merge branch 'fh/shell_history_search/OTP-10739'Fredrik Gustafsson
* fh/shell_history_search/OTP-10739: Add search to Erlang shell's history
2013-01-23Update one more unused funs result as per ffe582bStavros Aronis
2013-01-23Remove pubsub and comm_layer tests from testsuiteStavros Aronis
These tests recently broke because of the deprecation of the package system. Furthermore, they included copyrighted code. Finally they were not minimized not targeted to any specific feature and had no warnings being reported.
2013-01-23Properly support functions with arbitrary arity in type specs.Stavros Aronis
Dialyzer now understands the "fun(...)" syntax in type specs.
2013-01-23Revert "Merge branch 'nox/rm-reverse-eta-conversion/OTP-10682'"Fredrik Gustafsson
This reverts commit 750ecdea08fa5fa7e32b7f3019eed96c1699427e, reversing changes made to 2cfa0466c3b3c7bd5e3621aff0f3e2ca30addb68.
2013-01-23Turn warnings to errors on selected applicationsBjörn Gustavsson
2013-01-23runtime_tools_sup: Eliminate warningBjörn Gustavsson
The warning was introduced in 3b73cabcba3ac6dcc91c7ae2b00f21d254dfdd4b.
2013-01-23inet_parse: Eliminate a compiler warningBjörn Gustavsson
The warning was introduced in e367eb44969b00cac910c8eb14e7b3ce3ee0cc91.
2013-01-23Merge branch 'fredrik/fix-merge-dialyzer/R16'Fredrik Gustafsson
* fredrik/fix-merge-dialyzer/R16: Fixed merge issue
2013-01-23Fixed merge issueFredrik Gustafsson
2013-01-23public_key: Include some PKCS-9 support needed by PKCS-10Ingela Anderton Andin
Due to some limitations in the ASN-1 compiler we inline some PKCS-9 in other specs for now. Also corrected documentation.
2013-01-23erts: Testcase doing unicode atom printout with ~wSverker Eriksson
2013-01-23Merge branch 'bjorn/compiler/binary-syntax-bug/OTP-10724'Björn Gustavsson
* bjorn/compiler/binary-syntax-bug/OTP-10724: compiler: Eliminate internal consistency failure in binary matching
2013-01-23Add a warning to discourage abuse of $handle_undefined_function/2Björn Gustavsson
2013-01-23Merge branch 'ta/fakefop/OTP-10733'Fredrik Gustafsson
* ta/fakefop/OTP-10733: make/fakefop: repair pdf structure and make content static make/fakefop: slightly change placeholder text make/fakefop: do not report what file is written make/fakefop: update copyright years make/fakefop: adapt to make/otp.mk.in changes
2013-01-23Merge branch 'sa/dialyzer-list-spec/OTP-10740'Fredrik Gustafsson
* sa/dialyzer-list-spec/OTP-10740: Report spec discrepancy on mismatching lists Properly support functions with arbitrary arity in type specs. Conflicts: lib/dialyzer/test/small_SUITE_data/results/empty_list_infimum
2013-01-23Report spec discrepancy on mismatching listsStavros Aronis
2013-01-23ssl: Too short timeout in test caseIngela Anderton Andin
2013-01-23Merge branch 'rickard/async-default/OTP-10736'Rickard Green
* rickard/async-default/OTP-10736: Use async threads by default
2013-01-23Merge branch 'rickard/sched-wakeup-other/OTP-10661'Rickard Green
* rickard/sched-wakeup-other/OTP-10661: Change proposed scheduler wakeup strategy to be the default
2013-01-23Merge branch 'rickard/+stbt/OTP-10668'Rickard Green
* rickard/+stbt/OTP-10668: Add +stbt erl command line switch
2013-01-22erl_interface: even more utf8 atom stuffSverker Eriksson
2013-01-22erts: Fix bug in analyze_utf8 causing faulty latin1 detectionSverker Eriksson
2013-01-22Add UTF-8 node name support for epmdRickard Green
2013-01-22erts: Force windows to use two-digit exponentBjörn-Egil Dahlberg
sprintf on windows uses a three-digit exponent default
2013-01-22Properly support functions with arbitrary arity in type specs.Stavros Aronis
2013-01-22Merge branch 'sa/dialyzer-list-spec/OTP-10740'Fredrik Gustafsson
* sa/dialyzer-list-spec/OTP-10740: Report spec discrepancy on mismatching lists
2013-01-22Merge branch 'fredrik/ssh/update_versions/R16'Fredrik Gustafsson
* fredrik/ssh/update_versions/R16: Fixed some specs - ssh Bumped version numbers
2013-01-22Merge branch 'ia/public_key/prepare-for-release'Ingela Anderton Andin
* ia/public_key/prepare-for-release: public_key: Prepare for R16
2013-01-22public_key: Prepare for R16Ingela Anderton Andin
2013-01-22Merge branch 'ia/ssl/prepare-for-release'Ingela Anderton Andin
* ia/ssl/prepare-for-release: ssl: Prepare for R16 release
2013-01-22Merge branch 'ae/stdlib/faster_queue/OTP-10722'Fredrik Gustafsson
* ae/stdlib/faster_queue/OTP-10722: Fix bug in queue:out/1, queue:out_r/1 that makes it O(N^2) in worst case
2013-01-22ssl: Prepare for R16 releaseIngela Anderton Andin
Remove very old and obsolete release notes, update version and appup.
2013-01-22Merge branch 'sverk/hipe-debug-compile-fix'Sverker Eriksson
* sverk/hipe-debug-compile-fix: Fix compiler error for hipe in debug emulator
2013-01-22Fixed some specs - sshFredrik Gustafsson
2013-01-22Bumped version numbersFredrik Gustafsson