X-Original-To: alpine-aports@mail.alpinelinux.org Delivered-To: alpine-aports@mail.alpinelinux.org Received: from mail.alpinelinux.org (dallas-a1.alpinelinux.org [127.0.0.1]) by mail.alpinelinux.org (Postfix) with ESMTP id 5CF35DC0672 for ; Thu, 1 Oct 2015 17:23:35 +0000 (UTC) Received: from mail-qk0-f176.google.com (mail-qk0-f176.google.com [209.85.220.176]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mail.alpinelinux.org (Postfix) with ESMTPS id 1A4CCDC03A2 for ; Thu, 1 Oct 2015 17:23:34 +0000 (UTC) Received: by qkcf65 with SMTP id f65so32113425qkc.3 for ; Thu, 01 Oct 2015 10:23:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:subject:date:message-id; bh=nltbYPL41ucZ/skIwB76050S2XurHNCSLdbO3ARBPgU=; b=pTcf5sE3Nd59bdqbCLqOOKku042M3W6IruqNOYcXbPYBBvcVlkpmlI0ReBsGtV6uiF RH7AtWwFWZRGrweRKcQXsnz2EXeAkqgZPdRs70Q8UUiHszeppoFRTagM7vlmHZtcBMP+ WsCKXIqylm6FsPRnDFm84TErVHrJACtrt0LNoKmG7Ziquy1H6dqT2aPLP9kbFglXs0q8 HaGvWeif9Eu+todu58uHzlFSHNRgYklB2DahMtYKbQmdhO+DMxgcEzQNnUfUKzz7z5a2 4KVx4nYEz4jz6Pn6mJMfdow7BrT6GQaNccOAGWMdIL1Xgmll4lWP2xQraqrUFy0xskuo qSdA== X-Received: by 10.55.195.66 with SMTP id a63mr13635801qkj.67.1443720213696; Thu, 01 Oct 2015 10:23:33 -0700 (PDT) Received: from localhost.localdomain ([179.180.229.126]) by smtp.gmail.com with ESMTPSA id 4sm2779764qhr.33.2015.10.01.10.23.30 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 01 Oct 2015 10:23:32 -0700 (PDT) From: Marlus Saraiva To: alpine-aports@lists.alpinelinux.org Subject: [alpine-aports] [PATCH] main/erlang: Enabling hipe Date: Thu, 1 Oct 2015 17:23:18 +0000 Message-Id: <1443720198-2019-1-git-send-email-marlus.saraiva@gmail.com> X-Mailer: git-send-email 2.4.1 X-Virus-Scanned: ClamAV using ClamSMTP X-Mailinglist: alpine-aports Precedence: list List-Id: Alpine Development List-Unsubscribe: List-Post: List-Help: List-Subscribe: --- .../0006-Do-not-install-erlang-sources.patch | 224 ------ main/erlang/0040-otp-update-version-18.0.1.patch | 86 --- main/erlang/0050-otp-update-version-18.0.2.patch | 839 --------------------- main/erlang/0070-hipe_x86_signal-fix.patch | 21 + main/erlang/APKBUILD | 22 +- 5 files changed, 34 insertions(+), 1158 deletions(-) delete mode 100644 main/erlang/0040-otp-update-version-18.0.1.patch delete mode 100644 main/erlang/0050-otp-update-version-18.0.2.patch create mode 100644 main/erlang/0070-hipe_x86_signal-fix.patch diff --git a/main/erlang/0006-Do-not-install-erlang-sources.patch b/main/erlang/0006-Do-not-install-erlang-sources.patch index 9b7f421..a79dbba 100644 --- a/main/erlang/0006-Do-not-install-erlang-sources.patch +++ b/main/erlang/0006-Do-not-install-erlang-sources.patch @@ -744,230 +744,6 @@ $(INSTALL_DIR) "$(RELSYSDIR)/ebin" $(INSTALL_DATA) $(BEHAVIOUR_TARGET_FILES) $(TARGET_FILES) $(APP_TARGET) \ $(APPUP_TARGET) "$(RELSYSDIR)/ebin" ---- /dev/null -+++ otp_src_18.1-fixed/lib/ssh/src/Makefile.orig -@@ -0,0 +1,221 @@ -+# -+# %CopyrightBegin% -+# -+# Copyright Ericsson AB 2004-2013. All Rights Reserved. -+# -+# Licensed under the Apache License, Version 2.0 (the "License"); -+# you may not use this file except in compliance with the License. -+# You may obtain a copy of the License at -+# -+# http://www.apache.org/licenses/LICENSE-2.0 -+# -+# Unless required by applicable law or agreed to in writing, software -+# distributed under the License is distributed on an "AS IS" BASIS, -+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -+# See the License for the specific language governing permissions and -+# limitations under the License. -+# -+# %CopyrightEnd% -+# -+ -+# -+include $(ERL_TOP)/make/target.mk -+include $(ERL_TOP)/make/$(TARGET)/otp.mk -+ -+# ---------------------------------------------------- -+# Application version -+# ---------------------------------------------------- -+include ../vsn.mk -+VSN=$(SSH_VSN) -+ -+# ---------------------------------------------------- -+# Release directory specification -+# ---------------------------------------------------- -+RELSYSDIR = $(RELEASE_PATH)/lib/ssh-$(VSN) -+ -+# ---------------------------------------------------- -+# Common Macros -+# ---------------------------------------------------- -+ -+# Behaviour (api) modules are first so they are compiled when -+# the compiler reaches a callback module using them. -+BEHAVIOUR_MODULES= \ -+ ssh_sftpd_file_api \ -+ ssh_channel \ -+ ssh_daemon_channel \ -+ ssh_client_key_api \ -+ ssh_server_key_api -+ -+MODULES= \ -+ ssh \ -+ ssh_sup \ -+ sshc_sup \ -+ sshd_sup \ -+ ssh_connection_sup \ -+ ssh_connection \ -+ ssh_connection_handler \ -+ ssh_shell \ -+ ssh_system_sup \ -+ ssh_subsystem_sup \ -+ ssh_channel_sup \ -+ ssh_acceptor_sup \ -+ ssh_acceptor \ -+ ssh_app \ -+ ssh_auth\ -+ ssh_bits \ -+ ssh_cli \ -+ ssh_file \ -+ ssh_io \ -+ ssh_info \ -+ ssh_message \ -+ ssh_no_io \ -+ ssh_sftp \ -+ ssh_sftpd \ -+ ssh_sftpd_file\ -+ ssh_transport \ -+ ssh_xfer -+ -+HRL_FILES = -+ -+ERL_FILES= \ -+ $(MODULES:%=%.erl) \ -+ $(BEHAVIOUR_MODULES:%=%.erl) -+ -+ -+TARGET_FILES= $(MODULES:%=$(EBIN)/%.$(EMULATOR)) -+ -+BEHAVIOUR_TARGET_FILES= $(BEHAVIOUR_MODULES:%=$(EBIN)/%.$(EMULATOR)) -+ -+APP_FILE= ssh.app -+APPUP_FILE= ssh.appup -+ -+APP_SRC= $(APP_FILE).src -+APP_TARGET= $(EBIN)/$(APP_FILE) -+ -+APPUP_SRC= $(APPUP_FILE).src -+APPUP_TARGET= $(EBIN)/$(APPUP_FILE) -+ -+INTERNAL_HRL_FILES = ssh_auth.hrl ssh_connect.hrl ssh_transport.hrl ssh.hrl ssh_userauth.hrl ssh_xfer.hrl -+ -+# ---------------------------------------------------- -+# FLAGS -+# ---------------------------------------------------- -+EXTRA_ERLC_FLAGS = +warn_unused_vars -+ERL_COMPILE_FLAGS += -I$(ERL_TOP)/lib/kernel/src \ -+ -pz $(EBIN) \ -+ -pz $(ERL_TOP)/lib/public_key/ebin \ -+ $(EXTRA_ERLC_FLAGS) -+ -+ -+# ---------------------------------------------------- -+# Targets -+# ---------------------------------------------------- -+ -+$(TARGET_FILES): $(BEHAVIOUR_TARGET_FILES) -+ -+debug opt: $(TARGET_FILES) $(APP_TARGET) $(APPUP_TARGET) -+ -+clean: -+ rm -f $(TARGET_FILES) $(APP_TARGET) $(APPUP_TARGET) $(BEHAVIOUR_TARGET_FILES) -+ rm -f errs core *~ -+ -+$(APP_TARGET): $(APP_SRC) ../vsn.mk -+ $(vsn_verbose)sed -e 's;%VSN%;$(VSN);' $< > $@ -+ -+$(APPUP_TARGET): $(APPUP_SRC) ../vsn.mk -+ $(vsn_verbose)sed -e 's;%VSN%;$(VSN);' $< > $@ -+ -+ -+docs: -+ -+# ---------------------------------------------------- -+# Release Target -+# ---------------------------------------------------- -+include $(ERL_TOP)/make/otp_release_targets.mk -+ -+release_spec: opt -+ $(INSTALL_DIR) "$(RELSYSDIR)/src" -+ $(INSTALL_DATA) $(INTERNAL_HRL_FILES) $(ERL_FILES) "$(RELSYSDIR)/src" -+ $(INSTALL_DIR) "$(RELSYSDIR)/ebin" -+ $(INSTALL_DATA) $(BEHAVIOUR_TARGET_FILES) $(TARGET_FILES) $(APP_TARGET) \ -+ $(APPUP_TARGET) "$(RELSYSDIR)/ebin" -+ $(INSTALL_DIR) "$(RELSYSDIR)/include" -+ -+ -+release_docs_spec: -+ -+ -+deps: -+ erlc -M $(ERL_FILES) \ -+ | sed 's@$(ERL_TOP)/lib@../..@g' \ -+ | sed 's/\.$(EMULATOR)/\.$$\(EMULATOR\)/' \ -+ | sed 's@^ssh_@$$(EBIN)/ssh_@' -+ -+ssh.$(EMULATOR): ssh.erl ssh.hrl ssh_connect.hrl \ -+ ../../public_key/include/public_key.hrl \ -+ ../../public_key/include/OTP-PUB-KEY.hrl \ -+ ../../public_key/include/PKCS-FRAME.hrl \ -+ ../../kernel/include/file.hrl -+$(EBIN)/ssh_sup.$(EMULATOR): ssh_sup.erl -+sshc_sup.$(EMULATOR): sshc_sup.erl -+sshd_sup.$(EMULATOR): sshd_sup.erl ssh.hrl -+$(EBIN)/ssh_connection_sup.$(EMULATOR): ssh_connection_sup.erl -+$(EBIN)/ssh_connection.$(EMULATOR): ssh_connection.erl ssh.hrl ssh_connect.hrl \ -+ ssh_transport.hrl -+$(EBIN)/ssh_connection_handler.$(EMULATOR): ssh_connection_handler.erl ssh.hrl \ -+ ssh_transport.hrl ssh_auth.hrl ssh_connect.hrl -+$(EBIN)/ssh_shell.$(EMULATOR): ssh_shell.erl ssh_connect.hrl -+$(EBIN)/ssh_system_sup.$(EMULATOR): ssh_system_sup.erl ssh.hrl -+$(EBIN)/ssh_subsystem_sup.$(EMULATOR): ssh_subsystem_sup.erl -+$(EBIN)/ssh_channel_sup.$(EMULATOR): ssh_channel_sup.erl -+$(EBIN)/ssh_acceptor_sup.$(EMULATOR): ssh_acceptor_sup.erl ssh.hrl -+$(EBIN)/ssh_acceptor.$(EMULATOR): ssh_acceptor.erl ssh.hrl -+$(EBIN)/ssh_app.$(EMULATOR): ssh_app.erl -+$(EBIN)/ssh_auth.$(EMULATOR): ssh_auth.erl \ -+ ../../public_key/include/public_key.hrl \ -+ ../../public_key/include/OTP-PUB-KEY.hrl \ -+ ../../public_key/include/PKCS-FRAME.hrl \ -+ ssh.hrl ssh_auth.hrl ssh_transport.hrl -+$(EBIN)/ssh_bits.$(EMULATOR): ssh_bits.erl ssh.hrl -+$(EBIN)/ssh_cli.$(EMULATOR): ssh_cli.erl ssh.hrl ssh_connect.hrl -+$(EBIN)/ssh_file.$(EMULATOR): ssh_file.erl \ -+ ../../public_key/include/public_key.hrl \ -+ ../../public_key/include/OTP-PUB-KEY.hrl \ -+ ../../public_key/include/PKCS-FRAME.hrl \ -+ ../../kernel/include/file.hrl ssh.hrl -+$(EBIN)/ssh_io.$(EMULATOR): ssh_io.erl ssh.hrl -+$(EBIN)/ssh_info.$(EMULATOR): ssh_info.erl -+$(EBIN)/ssh_message.$(EMULATOR): ssh_message.erl \ -+ ../../public_key/include/public_key.hrl \ -+ ../../public_key/include/OTP-PUB-KEY.hrl \ -+ ../../public_key/include/PKCS-FRAME.hrl \ -+ ssh.hrl ssh_connect.hrl ssh_auth.hrl ssh_transport.hrl -+$(EBIN)/ssh_no_io.$(EMULATOR): ssh_no_io.erl ssh_transport.hrl -+$(EBIN)/ssh_sftp.$(EMULATOR): ssh_sftp.erl \ -+ ../../kernel/include/file.hrl ssh.hrl \ -+ ssh_xfer.hrl -+$(EBIN)/ssh_sftpd.$(EMULATOR): ssh_sftpd.erl \ -+ ../../kernel/include/file.hrl ssh.hrl \ -+ ssh_xfer.hrl -+$(EBIN)/ssh_sftpd_file.$(EMULATOR): ssh_sftpd_file.erl -+$(EBIN)/ssh_transport.$(EMULATOR): ssh_transport.erl \ -+ ../../public_key/include/public_key.hrl \ -+ ../../public_key/include/OTP-PUB-KEY.hrl \ -+ ../../public_key/include/PKCS-FRAME.hrl \ -+ ../../kernel/include/inet.hrl \ -+ ssh_transport.hrl ssh.hrl -+$(EBIN)/ssh_xfer.$(EMULATOR): ssh_xfer.erl ssh.hrl ssh_xfer.hrl -+$(EBIN)/ssh_sftpd_file_api.$(EMULATOR): ssh_sftpd_file_api.erl -+$(EBIN)/ssh_channel.$(EMULATOR): ssh_channel.erl ssh_connect.hrl -+$(EBIN)/ssh_daemon_channel.$(EMULATOR): ssh_daemon_channel.erl -+$(EBIN)/ssh_client_key_api.$(EMULATOR): ssh_client_key_api.erl \ -+ ../../public_key/include/public_key.hrl \ -+ ../../public_key/include/OTP-PUB-KEY.hrl \ -+ ../../public_key/include/PKCS-FRAME.hrl \ -+ ssh.hrl -+$(EBIN)/ssh_server_key_api.$(EMULATOR): ssh_server_key_api.erl \ -+ ../../public_key/include/public_key.hrl \ -+ ../../public_key/include/OTP-PUB-KEY.hrl \ -+ ../../public_key/include/PKCS-FRAME.hrl \ -+ ssh.hrl -+ --- otp_src_18.1-orig/lib/ssl/src/Makefile +++ otp_src_18.1-fixed/lib/ssl/src/Makefile @@ -141,7 +141,7 @@ diff --git a/main/erlang/0040-otp-update-version-18.0.1.patch b/main/erlang/0040-otp-update-version-18.0.1.patch deleted file mode 100644 index b35daab..0000000 --- a/main/erlang/0040-otp-update-version-18.0.1.patch +++ /dev/null @@ -1,86 +0,0 @@ ---- a/OTP_VERSION -+++ b/OTP_VERSION -@@ -1 +1 @@ --18.0 -+18.0.1 ---- a/erts/doc/src/notes.xml -+++ b/erts/doc/src/notes.xml -@@ -31,6 +31,22 @@ - -

This document describes the changes made to the ERTS application.

- -+
Erts 7.0.1 -+ -+
Fixed Bugs and Malfunctions -+ -+ -+

-+ Fix a rare hanging of the VM seen to happen just after -+ emulator start. Bug exists since R14.

-+

-+ Own Id: OTP-12859 Aux Id: seq12882

-+
-+
-+
-+ -+
-+ -
Erts 7.0 - -
Fixed Bugs and Malfunctions ---- a/erts/emulator/sys/common/erl_poll.c -+++ b/erts/emulator/sys/common/erl_poll.c -@@ -431,7 +431,7 @@ static ERTS_INLINE int - is_interrupted_reset(ErtsPollSet ps) - { - #if defined(USE_THREADS) || ERTS_POLL_ASYNC_INTERRUPT_SUPPORT -- return (erts_atomic32_xchg_nob(&ps->wakeup_state, ERTS_POLL_NOT_WOKEN) -+ return (erts_atomic32_xchg_acqb(&ps->wakeup_state, ERTS_POLL_NOT_WOKEN) - == ERTS_POLL_WOKEN_INTR); - #else - return 0; -@@ -442,7 +442,7 @@ static ERTS_INLINE void - woke_up(ErtsPollSet ps) - { - #if defined(USE_THREADS) || ERTS_POLL_ASYNC_INTERRUPT_SUPPORT -- erts_aint32_t wakeup_state = erts_atomic32_read_nob(&ps->wakeup_state); -+ erts_aint32_t wakeup_state = erts_atomic32_read_acqb(&ps->wakeup_state); - if (wakeup_state == ERTS_POLL_NOT_WOKEN) - (void) erts_atomic32_cmpxchg_nob(&ps->wakeup_state, - ERTS_POLL_WOKEN, -@@ -469,14 +469,9 @@ wake_poller(ErtsPollSet ps, int interrupted, int async_signal_safe) - wakeup_state = erts_atomic32_cmpxchg_relb(&ps->wakeup_state, - ERTS_POLL_WOKEN, - ERTS_POLL_NOT_WOKEN); -- else { -- /* -- * We might unnecessarily write to the pipe, however, -- * that isn't problematic. -- */ -- wakeup_state = erts_atomic32_read_nob(&ps->wakeup_state); -- erts_atomic32_set_relb(&ps->wakeup_state, ERTS_POLL_WOKEN_INTR); -- } -+ else -+ wakeup_state = erts_atomic32_xchg_relb(&ps->wakeup_state, -+ ERTS_POLL_WOKEN_INTR); - wake = wakeup_state == ERTS_POLL_NOT_WOKEN; - } - /* ---- a/erts/vsn.mk -+++ b/erts/vsn.mk -@@ -18,7 +18,7 @@ - # %CopyrightEnd% - # - --VSN = 7.0 -+VSN = 7.0.1 - - # Port number 4365 in 4.2 - # Port number 4366 in 4.3 ---- a/otp_versions.table -+++ b/otp_versions.table -@@ -1,3 +1,4 @@ -+OTP-18.0.1 : erts-7.0.1 # asn1-4.0 common_test-1.11 compiler-6.0 cosEvent-2.2 cosEventDomain-1.2 cosFileTransfer-1.2 cosNotification-1.2 cosProperty-1.2 cosTime-1.2 cosTransactions-1.3 crypto-3.6 debugger-4.1 dialyzer-2.8 diameter-1.10 edoc-0.7.17 eldap-1.2 erl_docgen-0.4 erl_interface-3.8 et-1.5.1 eunit-2.2.10 gs-1.6 hipe-3.12 ic-4.4 inets-6.0 jinterface-1.6 kernel-4.0 megaco-3.18 mnesia-4.13 observer-2.1 odbc-2.11 orber-3.8 os_mon-2.4 ose-1.1 otp_mibs-1.1 parsetools-2.1 percept-0.8.11 public_key-1.0 reltool-0.7 runtime_tools-1.9 sasl-2.5 snmp-5.2 ssh-4.0 ssl-7.0 stdlib-2.5 syntax_tools-1.7 test_server-3.9 tools-2.8 typer-0.9.9 webtool-0.9 wx-1.4 xmerl-1.3.8 : - OTP-18.0 : asn1-4.0 common_test-1.11 compiler-6.0 cosEvent-2.2 cosEventDomain-1.2 cosFileTransfer-1.2 cosNotification-1.2 cosProperty-1.2 cosTime-1.2 cosTransactions-1.3 crypto-3.6 debugger-4.1 dialyzer-2.8 diameter-1.10 edoc-0.7.17 eldap-1.2 erl_docgen-0.4 erl_interface-3.8 erts-7.0 et-1.5.1 eunit-2.2.10 gs-1.6 hipe-3.12 ic-4.4 inets-6.0 jinterface-1.6 kernel-4.0 megaco-3.18 mnesia-4.13 observer-2.1 odbc-2.11 orber-3.8 os_mon-2.4 ose-1.1 otp_mibs-1.1 parsetools-2.1 percept-0.8.11 public_key-1.0 reltool-0.7 runtime_tools-1.9 sasl-2.5 snmp-5.2 ssh-4.0 ssl-7.0 stdlib-2.5 syntax_tools-1.7 test_server-3.9 tools-2.8 typer-0.9.9 webtool-0.9 wx-1.4 xmerl-1.3.8 # : - OTP-17.5.6 : inets-5.10.9 ssh-3.2.4 ssl-6.0.1 # asn1-3.0.4 common_test-1.10.1 compiler-5.0.4 cosEvent-2.1.15 cosEventDomain-1.1.14 cosFileTransfer-1.1.16 cosNotification-1.1.21 cosProperty-1.1.17 cosTime-1.1.14 cosTransactions-1.2.14 crypto-3.5 debugger-4.0.3 dialyzer-2.7.4 diameter-1.9.2 edoc-0.7.16 eldap-1.1.1 erl_docgen-0.3.7 erl_interface-3.7.20 erts-6.4.1 et-1.5 eunit-2.2.9 gs-1.5.16 hipe-3.11.3 ic-4.3.6 jinterface-1.5.12 kernel-3.2 megaco-3.17.3 mnesia-4.12.5 observer-2.0.4 odbc-2.10.22 orber-3.7.1 os_mon-2.3.1 ose-1.0.2 otp_mibs-1.0.10 parsetools-2.0.12 percept-0.8.10 public_key-0.23 reltool-0.6.6 runtime_tools-1.8.16 sasl-2.4.1 snmp-5.1.2 stdlib-2.4 syntax_tools-1.6.18 test_server-3.8.1 tools-2.7.2 typer-0.9.8 webtool-0.8.10 wx-1.3.3 xmerl-1.3.7 : - OTP-17.5.5 : diameter-1.9.2 # asn1-3.0.4 common_test-1.10.1 compiler-5.0.4 cosEvent-2.1.15 cosEventDomain-1.1.14 cosFileTransfer-1.1.16 cosNotification-1.1.21 cosProperty-1.1.17 cosTime-1.1.14 cosTransactions-1.2.14 crypto-3.5 debugger-4.0.3 dialyzer-2.7.4 edoc-0.7.16 eldap-1.1.1 erl_docgen-0.3.7 erl_interface-3.7.20 erts-6.4.1 et-1.5 eunit-2.2.9 gs-1.5.16 hipe-3.11.3 ic-4.3.6 inets-5.10.8 jinterface-1.5.12 kernel-3.2 megaco-3.17.3 mnesia-4.12.5 observer-2.0.4 odbc-2.10.22 orber-3.7.1 os_mon-2.3.1 ose-1.0.2 otp_mibs-1.0.10 parsetools-2.0.12 percept-0.8.10 public_key-0.23 reltool-0.6.6 runtime_tools-1.8.16 sasl-2.4.1 snmp-5.1.2 ssh-3.2.3 ssl-6.0 stdlib-2.4 syntax_tools-1.6.18 test_server-3.8.1 tools-2.7.2 typer-0.9.8 webtool-0.8.10 wx-1.3.3 xmerl-1.3.7 : diff --git a/main/erlang/0050-otp-update-version-18.0.2.patch b/main/erlang/0050-otp-update-version-18.0.2.patch deleted file mode 100644 index ccae0a6..0000000 --- a/main/erlang/0050-otp-update-version-18.0.2.patch +++ /dev/null @@ -1,839 +0,0 @@ ---- a/HOWTO/INSTALL.md -+++ b/HOWTO/INSTALL.md -@@ -400,6 +400,12 @@ Some of the available `configure` options are: - no automatic dependency handling between applications. If you disable - an application that another application depends on, you also have to disable the - dependant application. -+* `--enable-gettimeofday-as-os-system-time` - Force usage of `gettimeofday()` for -+ OS system time. -+* `--enable-prefer-elapsed-monotonic-time-during-suspend` - Prefer an OS monotonic -+ time source with elapsed time during suspend. -+* `--disable-prefer-elapsed-monotonic-time-during-suspend` - Do not prefer an OS -+ monotonic time source with elapsed time during suspend. - * `--enable-dirty-schedulers` - Enable the **experimental** dirty schedulers - functionality. Note that the dirty schedulers functionality is experimental, - and **not supported**. This functionality **will** be subject to backward ---- a/OTP_VERSION -+++ b/OTP_VERSION -@@ -1 +1 @@ --18.0.1 -+18.0.2 ---- a/erts/aclocal.m4 -+++ b/erts/aclocal.m4 -@@ -726,9 +726,15 @@ esac - - AC_DEFUN(ERL_MONOTONIC_CLOCK, - [ -- default_resolution_clock_gettime_monotonic="CLOCK_HIGHRES CLOCK_BOOTTIME CLOCK_MONOTONIC" -- low_resolution_clock_gettime_monotonic="CLOCK_MONOTONIC_COARSE CLOCK_MONOTONIC_FAST" -- high_resolution_clock_gettime_monotonic="CLOCK_MONOTONIC_PRECISE" -+ if test "$3" = "yes"; then -+ default_resolution_clock_gettime_monotonic="CLOCK_HIGHRES CLOCK_BOOTTIME CLOCK_MONOTONIC" -+ low_resolution_clock_gettime_monotonic="CLOCK_MONOTONIC_COARSE CLOCK_MONOTONIC_FAST" -+ high_resolution_clock_gettime_monotonic="CLOCK_MONOTONIC_PRECISE" -+ else -+ default_resolution_clock_gettime_monotonic="CLOCK_HIGHRES CLOCK_UPTIME CLOCK_MONOTONIC" -+ low_resolution_clock_gettime_monotonic="CLOCK_MONOTONIC_COARSE CLOCK_UPTIME_FAST" -+ high_resolution_clock_gettime_monotonic="CLOCK_UPTIME_PRECISE" -+ fi - - case "$1" in - high_resolution) -@@ -1466,7 +1472,7 @@ AC_ARG_WITH(with_sparc_memory_order, - LM_CHECK_THR_LIB - ERL_INTERNAL_LIBS - --ERL_MONOTONIC_CLOCK(high_resolution) -+ERL_MONOTONIC_CLOCK(high_resolution, undefined, no) - - case $erl_monotonic_clock_func in - clock_gettime) -@@ -2202,7 +2208,7 @@ AC_DEFUN(ERL_TIME_CORRECTION, - - AC_ARG_WITH(clock-resolution, - AS_HELP_STRING([--with-clock-resolution=high|low|default], -- [specify wanted clock resolution)])) -+ [specify wanted clock resolution])) - - AC_ARG_WITH(clock-gettime-realtime-id, - AS_HELP_STRING([--with-clock-gettime-realtime-id=CLOCKID], -@@ -2212,6 +2218,24 @@ AC_ARG_WITH(clock-gettime-monotonic-id, - AS_HELP_STRING([--with-clock-gettime-monotonic-id=CLOCKID], - [specify clock id to use with clock_gettime() for monotonic time)])) - -+AC_ARG_ENABLE(prefer-elapsed-monotonic-time-during-suspend, -+ AS_HELP_STRING([--enable-prefer-elapsed-monotonic-time-during-suspend], -+ [Prefer an OS monotonic time source with elapsed time during suspend]) -+ AS_HELP_STRING([--disable-prefer-elapsed-monotonic-time-during-suspend], -+ [Do not prefer an OS monotonic time source with elapsed time during suspend]), -+[ case "$enableval" in -+ yes) prefer_elapsed_monotonic_time_during_suspend=yes ;; -+ *) prefer_elapsed_monotonic_time_during_suspend=no ;; -+ esac ], prefer_elapsed_monotonic_time_during_suspend=no) -+ -+AC_ARG_ENABLE(gettimeofday-as-os-system-time, -+ AS_HELP_STRING([--enable-gettimeofday-as-os-system-time], -+ [Force usage of gettimeofday() for OS system time]), -+[ case "$enableval" in -+ yes) force_gettimeofday_os_system_time=yes ;; -+ *) force_gettimeofday_os_system_time=no ;; -+ esac ], force_gettimeofday_os_system_time=no) -+ - case "$with_clock_resolution" in - ""|no|yes) - with_clock_resolution=default;; -@@ -2222,6 +2246,17 @@ case "$with_clock_resolution" in - ;; - esac - -+if test "$force_gettimeofday_os_system_time" = "yes"; then -+ -+ AC_CHECK_FUNCS([gettimeofday]) -+ if test "$ac_cv_func_gettimeofday" = "yes"; then -+ AC_DEFINE(OS_SYSTEM_TIME_GETTIMEOFDAY, [1], [Define if you want to implement erts_os_system_time() using gettimeofday()]) -+ else -+ AC_MSG_ERROR([No gettimeofday() available]) -+ fi -+ -+else # $force_gettimeofday_os_system_time != yes -+ - case "$with_clock_gettime_realtime_id" in - ""|no) - with_clock_gettime_realtime_id=no -@@ -2239,23 +2274,6 @@ case "$with_clock_gettime_realtime_id" in - ;; - esac - --case "$with_clock_gettime_monotonic_id" in -- ""|no) -- with_clock_gettime_monotonic_id=no -- ;; -- CLOCK_*CPUTIME*) -- AC_MSG_ERROR([Invalid clock_gettime() monotonic clock id: Refusing to use the cputime clock id $with_clock_gettime_monotonic_id as monotonic clock id]) -- ;; -- CLOCK_REALTIME*|CLOCK_TAI*) -- AC_MSG_ERROR([Invalid clock_gettime() monotonic clock id: Refusing to use the realtime clock id $with_clock_gettime_monotonic_id as monotonic clock id]) -- ;; -- CLOCK_*) -- ;; -- *) -- AC_MSG_ERROR([Invalid clock_gettime() clock id: $with_clock_gettime_monotonic_id]) -- ;; --esac -- - case "$with_clock_resolution-$with_clock_gettime_realtime_id" in - high-no) - ERL_WALL_CLOCK(high_resolution);; -@@ -2296,15 +2314,34 @@ if test "x$erl_wall_clock_id" != "x"; then - AC_DEFINE_UNQUOTED(WALL_CLOCK_ID, [$erl_wall_clock_id], [Define to wall clock id to use]) - fi - -+fi # $force_gettimeofday_os_system_time != yes -+ -+case "$with_clock_gettime_monotonic_id" in -+ ""|no) -+ with_clock_gettime_monotonic_id=no -+ ;; -+ CLOCK_*CPUTIME*) -+ AC_MSG_ERROR([Invalid clock_gettime() monotonic clock id: Refusing to use the cputime clock id $with_clock_gettime_monotonic_id as monotonic clock id]) -+ ;; -+ CLOCK_REALTIME*|CLOCK_TAI*) -+ AC_MSG_ERROR([Invalid clock_gettime() monotonic clock id: Refusing to use the realtime clock id $with_clock_gettime_monotonic_id as monotonic clock id]) -+ ;; -+ CLOCK_*) -+ ;; -+ *) -+ AC_MSG_ERROR([Invalid clock_gettime() clock id: $with_clock_gettime_monotonic_id]) -+ ;; -+esac -+ - case "$with_clock_resolution-$with_clock_gettime_monotonic_id" in - high-no) -- ERL_MONOTONIC_CLOCK(high_resolution);; -+ ERL_MONOTONIC_CLOCK(high_resolution, undefined, $prefer_elapsed_monotonic_time_during_suspend);; - low-no) -- ERL_MONOTONIC_CLOCK(low_resolution);; -+ ERL_MONOTONIC_CLOCK(low_resolution, undefined, $prefer_elapsed_monotonic_time_during_suspend);; - default-no) -- ERL_MONOTONIC_CLOCK(default_resolution);; -+ ERL_MONOTONIC_CLOCK(default_resolution, undefined, $prefer_elapsed_monotonic_time_during_suspend);; - *) -- ERL_MONOTONIC_CLOCK(custom_resolution, $with_clock_gettime_monotonic_id);; -+ ERL_MONOTONIC_CLOCK(custom_resolution, $with_clock_gettime_monotonic_id, $prefer_elapsed_monotonic_time_during_suspend);; - esac - - case "$erl_monotonic_clock_func-$erl_monotonic_clock_id-$with_clock_gettime_monotonic_id" in -@@ -2352,7 +2389,7 @@ if test $erl_cv_clock_gettime_monotonic_raw = yes; then - AC_DEFINE(HAVE_CLOCK_GETTIME_MONOTONIC_RAW, [1], [Define if you have clock_gettime(CLOCK_MONOTONIC_RAW, _)]) - fi - --ERL_MONOTONIC_CLOCK(high_resolution) -+ERL_MONOTONIC_CLOCK(high_resolution, undefined, no) - - case $$erl_monotonic_clock_low_resolution-$erl_monotonic_clock_func in - no-mach_clock_get_time) ---- a/erts/doc/src/notes.xml -+++ b/erts/doc/src/notes.xml -@@ -31,6 +31,82 @@ - -

This document describes the changes made to the ERTS application.

- -+
Erts 7.0.2 -+ -+
Fixed Bugs and Malfunctions -+ -+ -+

-+ A process could end up in an inconsistent half exited -+ state in the runtime system without SMP support. This -+ could occur if the processes was traced by a port that it -+ also was linked to, and the port terminated abnormally -+ while handling a trace message for the process.

-+

-+ This bug has always existed in the runtime system without -+ SMP support, but never in the runtime system with SMP -+ support.

-+

-+ Own Id: OTP-12889 Aux Id: seq12885

-+
-+ -+

-+ Removed unnecessary copying of data when retrieving -+ corrected Erlang monotonic time.

-+

-+ Own Id: OTP-12894

-+
-+ -+

-+ Changed default OS monotonic clock source chosen at build -+ time. This in order to improve performance. The behavior -+ will now on most systems be that (both OS and Erlang) -+ monotonic time stops when the system is suspended.

-+

-+ If you prefer that monotonic time elapse during suspend -+ of the machine, you can pass the command line argument -+ --enable-prefer-elapsed-monotonic-time-during-suspend -+ to configure when building Erlang/OTP. The -+ configuration stage will try to find such a clock source, -+ but might not be able to find it. Note that there might -+ be a performance penalty associated with such a clock -+ source.

-+

-+ *** POTENTIAL INCOMPATIBILITY ***

-+

-+ Own Id: OTP-12895

-+
-+ -+

-+ erlang:system_info(end_time) returned a faulty -+ value on 32-bit architectures.

-+

-+ Own Id: OTP-12896

-+
-+
-+
-+ -+ -+
Improvements and New Features -+ -+ -+

-+ The configure command line argument -+ --enable-gettimeofday-as-os-system-time has been -+ added which force usage of gettimeofday() for OS -+ system time. This will improve performance of -+ os:system_time() and os:timestamp() on -+ MacOS X, at the expense of worse accuracy, resolution and -+ precision of Erlang monotonic time, Erlang system time, -+ and OS system time.

-+

-+ Own Id: OTP-12892

-+
-+
-+
-+ -+
-+ -
Erts 7.0.1 - -
Fixed Bugs and Malfunctions ---- a/erts/emulator/beam/beam_emu.c -+++ b/erts/emulator/beam/beam_emu.c -@@ -2163,6 +2163,22 @@ void process_main(void) - OpCase(wait_f): - - wait2: { -+#ifndef ERTS_SMP -+ if (ERTS_PROC_IS_EXITING(c_p)) { -+ /* -+ * I non smp case: -+ * -+ * Currently executing process might be sent an exit -+ * signal if it is traced by a port that it also is -+ * linked to, and the port terminates during the -+ * trace. In this case we do *not* want to clear -+ * the active flag, which will make the process hang -+ * in limbo forever. -+ */ -+ SWAPOUT; -+ goto do_schedule; -+ } -+#endif - c_p->i = (BeamInstr *) Arg(0); /* L1 */ - SWAPOUT; - c_p->arity = 0; -@@ -6219,6 +6235,23 @@ erts_hibernate(Process* c_p, Eterm module, Eterm function, Eterm args, Eterm* re - int arity; - Eterm tmp; - -+#ifndef ERTS_SMP -+ if (ERTS_PROC_IS_EXITING(c_p)) { -+ /* -+ * I non smp case: -+ * -+ * Currently executing process might be sent an exit -+ * signal if it is traced by a port that it also is -+ * linked to, and the port terminates during the -+ * trace. In this case we do *not* want to clear -+ * the active flag, which will make the process hang -+ * in limbo forever. Get out of here and terminate -+ * the process... -+ */ -+ return -1; -+ } -+#endif -+ - if (is_not_atom(module) || is_not_atom(function)) { - /* - * No need to test args here -- done below. -@@ -6295,7 +6328,16 @@ erts_hibernate(Process* c_p, Eterm module, Eterm function, Eterm args, Eterm* re - ERTS_VERIFY_UNUSED_TEMP_ALLOC(c_p); - PROCESS_MAIN_CHK_LOCKS(c_p); - erts_smp_proc_lock(c_p, ERTS_PROC_LOCK_MSGQ|ERTS_PROC_LOCK_STATUS); --#ifdef ERTS_SMP -+#ifndef ERTS_SMP -+ if (ERTS_PROC_IS_EXITING(c_p)) { -+ /* -+ * See comment in the begining of the function... -+ * -+ * This second test is needed since gc might be traced. -+ */ -+ return -1; -+ } -+#else /* ERTS_SMP */ - ERTS_SMP_MSGQ_MV_INQ2PRIVQ(c_p); - if (!c_p->msg.len) - #endif ---- a/erts/emulator/beam/erl_process.c -+++ b/erts/emulator/beam/erl_process.c -@@ -11409,6 +11409,22 @@ set_proc_exiting(Process *p, - KILL_CATCHES(p); - p->i = (BeamInstr *) beam_exit; - -+#ifndef ERTS_SMP -+ if (state & (ERTS_PSFLG_RUNNING|ERTS_PSFLG_RUNNING_SYS)) { -+ /* -+ * I non smp case: -+ * -+ * Currently executing process might be sent an exit -+ * signal if it is traced by a port that it also is -+ * linked to, and the port terminates during the -+ * trace. In this case we want schedule out the -+ * process as quickly as possible in order to detect -+ * the event as fast as possible. -+ */ -+ ERTS_VBUMP_ALL_REDS(p); -+ } -+#endif -+ - if (enqueue) - add2runq(enqueue > 0 ? p : make_proxy_proc(NULL, p, enq_prio), - state, ---- a/erts/emulator/beam/erl_time.h -+++ b/erts/emulator/beam/erl_time.h -@@ -345,8 +345,10 @@ erts_time_unit_conversion(Uint64 value, - #endif /* !ERTS_COMPILE_TIME_MONOTONIC_TIME_UNIT */ - - #define ERTS_MONOTONIC_TIME_END_EXTERNAL \ -- (ERTS_MONOTONIC_TIME_START_EXTERNAL \ -- + (ERTS_MONOTONIC_END - ERTS_MONOTONIC_BEGIN)) -+ (ERTS_MONOTONIC_TIME_START_EXTERNAL < 0 \ -+ ? (ERTS_MONOTONIC_TIME_START_EXTERNAL \ -+ + (ERTS_MONOTONIC_END - ERTS_MONOTONIC_BEGIN)) \ -+ : (ERTS_MONOTONIC_END - ERTS_MONOTONIC_TIME_START_EXTERNAL)) - - #define ERTS_MSEC_TO_CLKTCKS__(MON) \ - ((MON) * (ERTS_CLKTCK_RESOLUTION/1000)) ---- a/erts/emulator/beam/erl_time_sup.c -+++ b/erts/emulator/beam/erl_time_sup.c -@@ -124,7 +124,11 @@ typedef struct { - - typedef struct { - ErtsMonotonicCorrectionInstance prev; -- ErtsMonotonicCorrectionInstance curr; -+ ErtsMonotonicCorrectionInstance curr; -+} ErtsMonotonicCorrectionInstances; -+ -+typedef struct { -+ ErtsMonotonicCorrectionInstances insts; - ErtsMonotonicDriftData drift; - ErtsMonotonicTime last_check; - int short_check_interval; -@@ -272,27 +276,24 @@ static ERTS_INLINE ErtsMonotonicTime - read_corrected_time(int os_drift_corrected) - { - ErtsMonotonicTime os_mtime; -- ErtsMonotonicCorrectionData cdata; -- ErtsMonotonicCorrectionInstance *cip; -+ ErtsMonotonicCorrectionInstance ci; - - erts_smp_rwmtx_rlock(&time_sup.inf.c.parmon.rwmtx); - - os_mtime = erts_os_monotonic_time(); - -- cdata = time_sup.inf.c.parmon.cdata; -- -- erts_smp_rwmtx_runlock(&time_sup.inf.c.parmon.rwmtx); -- -- if (os_mtime >= cdata.curr.os_mtime) -- cip = &cdata.curr; -+ if (os_mtime >= time_sup.inf.c.parmon.cdata.insts.curr.os_mtime) -+ ci = time_sup.inf.c.parmon.cdata.insts.curr; - else { -- if (os_mtime < cdata.prev.os_mtime) -+ if (os_mtime < time_sup.inf.c.parmon.cdata.insts.prev.os_mtime) - erl_exit(ERTS_ABORT_EXIT, - "OS monotonic time stepped backwards\n"); -- cip = &cdata.prev; -+ ci = time_sup.inf.c.parmon.cdata.insts.prev; - } - -- return calc_corrected_erl_mtime(os_mtime, cip, NULL, -+ erts_smp_rwmtx_runlock(&time_sup.inf.c.parmon.rwmtx); -+ -+ return calc_corrected_erl_mtime(os_mtime, &ci, NULL, - os_drift_corrected); - } - -@@ -360,9 +361,8 @@ check_time_correction(void *vesdp) - { - int init_drift_adj = !vesdp; - ErtsSchedulerData *esdp = (ErtsSchedulerData *) vesdp; -- ErtsMonotonicCorrectionData cdata; - ErtsMonotonicCorrection new_correction; -- ErtsMonotonicCorrectionInstance *cip; -+ ErtsMonotonicCorrectionInstance ci; - ErtsMonotonicTime mdiff, sdiff, os_mtime, erl_mtime, os_stime, - erl_stime, time_offset, timeout_pos; - Uint timeout; -@@ -373,16 +373,15 @@ check_time_correction(void *vesdp) - - erts_os_times(&os_mtime, &os_stime); - -- cdata = time_sup.inf.c.parmon.cdata; -+ ci = time_sup.inf.c.parmon.cdata.insts.curr; - - erts_smp_rwmtx_runlock(&time_sup.inf.c.parmon.rwmtx); - -- if (os_mtime < cdata.curr.os_mtime) -+ if (os_mtime < ci.os_mtime) - erl_exit(ERTS_ABORT_EXIT, - "OS monotonic time stepped backwards\n"); -- cip = &cdata.curr; - -- erl_mtime = calc_corrected_erl_mtime(os_mtime, cip, &mdiff, -+ erl_mtime = calc_corrected_erl_mtime(os_mtime, &ci, &mdiff, - os_drift_corrected); - time_offset = get_time_offset(); - erl_stime = erl_mtime + time_offset; -@@ -397,7 +396,7 @@ check_time_correction(void *vesdp) - time_sup.inf.c.shadow_offset = 0; - } - -- new_correction = cip->correction; -+ new_correction = ci.correction; - - if (time_sup.r.o.warp_mode == ERTS_MULTI_TIME_WARP_MODE - && (sdiff < -2*time_sup.r.o.adj.small_diff -@@ -408,7 +407,7 @@ check_time_correction(void *vesdp) - set_time_offset(time_offset); - schedule_send_time_offset_changed_notifications(time_offset); - begin_short_intervals = 1; -- if (cdata.curr.correction.error != 0) { -+ if (ci.correction.error != 0) { - set_new_correction = 1; - new_correction.error = 0; - } -@@ -425,12 +424,12 @@ check_time_correction(void *vesdp) - time_sup.inf.c.shadow_offset -= sdiff; - sdiff = 0; - begin_short_intervals = 1; -- if (cdata.curr.correction.error != 0) { -+ if (ci.correction.error != 0) { - set_new_correction = 1; - new_correction.error = 0; - } - } -- else if (cdata.curr.correction.error == 0) { -+ else if (ci.correction.error == 0) { - if (sdiff < -time_sup.r.o.adj.small_diff) { - set_new_correction = 1; - if (sdiff < -time_sup.r.o.adj.large_diff) -@@ -446,9 +445,9 @@ check_time_correction(void *vesdp) - new_correction.error = -ERTS_TCORR_ERR_SMALL_ADJ; - } - } -- else if (cdata.curr.correction.error > 0) { -+ else if (ci.correction.error > 0) { - if (sdiff < 0) { -- if (cdata.curr.correction.error != ERTS_TCORR_ERR_LARGE_ADJ -+ if (ci.correction.error != ERTS_TCORR_ERR_LARGE_ADJ - && sdiff < -time_sup.r.o.adj.large_diff) { - new_correction.error = ERTS_TCORR_ERR_LARGE_ADJ; - set_new_correction = 1; -@@ -466,9 +465,9 @@ check_time_correction(void *vesdp) - new_correction.error = 0; - } - } -- else /* if (cdata.curr.correction.error < 0) */ { -+ else /* if (ci.correction.error < 0) */ { - if (0 < sdiff) { -- if (cdata.curr.correction.error != -ERTS_TCORR_ERR_LARGE_ADJ -+ if (ci.correction.error != -ERTS_TCORR_ERR_LARGE_ADJ - && time_sup.r.o.adj.large_diff < sdiff) { - new_correction.error = -ERTS_TCORR_ERR_LARGE_ADJ; - set_new_correction = 1; -@@ -631,8 +630,8 @@ check_time_correction(void *vesdp) - #ifdef ERTS_TIME_CORRECTION_PRINT - print_correction(set_new_correction, - sdiff, -- cip->correction.error, -- cip->correction.drift, -+ ci.correction.error, -+ ci.correction.drift, - new_correction.error, - new_correction.drift, - timeout); -@@ -644,7 +643,7 @@ check_time_correction(void *vesdp) - os_mtime = erts_os_monotonic_time(); - - /* Save previous correction instance */ -- time_sup.inf.c.parmon.cdata.prev = *cip; -+ time_sup.inf.c.parmon.cdata.insts.prev = ci; - - /* - * Current correction instance begin when -@@ -657,15 +656,15 @@ check_time_correction(void *vesdp) - * next OS monotonic time using previous - * correction. - */ -- erl_mtime = calc_corrected_erl_mtime(os_mtime, cip, NULL, -+ erl_mtime = calc_corrected_erl_mtime(os_mtime, &ci, NULL, - os_drift_corrected); - - /* - * Save new current correction instance. - */ -- time_sup.inf.c.parmon.cdata.curr.erl_mtime = erl_mtime; -- time_sup.inf.c.parmon.cdata.curr.os_mtime = os_mtime; -- time_sup.inf.c.parmon.cdata.curr.correction = new_correction; -+ time_sup.inf.c.parmon.cdata.insts.curr.erl_mtime = erl_mtime; -+ time_sup.inf.c.parmon.cdata.insts.curr.os_mtime = os_mtime; -+ time_sup.inf.c.parmon.cdata.insts.curr.correction = new_correction; - - erts_smp_rwmtx_rwunlock(&time_sup.inf.c.parmon.rwmtx); - } -@@ -784,24 +783,22 @@ static ErtsMonotonicTime - finalize_corrected_time_offset(ErtsSystemTime *stimep) - { - ErtsMonotonicTime os_mtime; -- ErtsMonotonicCorrectionData cdata; -- ErtsMonotonicCorrectionInstance *cip; -+ ErtsMonotonicCorrectionInstance ci; - int os_drift_corrected = time_sup.r.o.os_corrected_monotonic_time; - - erts_smp_rwmtx_rlock(&time_sup.inf.c.parmon.rwmtx); - - erts_os_times(&os_mtime, stimep); - -- cdata = time_sup.inf.c.parmon.cdata; -+ ci = time_sup.inf.c.parmon.cdata.insts.curr; - - erts_smp_rwmtx_runlock(&time_sup.inf.c.parmon.rwmtx); - -- if (os_mtime < cdata.curr.os_mtime) -+ if (os_mtime < ci.os_mtime) - erl_exit(ERTS_ABORT_EXIT, - "OS monotonic time stepped backwards\n"); -- cip = &cdata.curr; - -- return calc_corrected_erl_mtime(os_mtime, cip, NULL, -+ return calc_corrected_erl_mtime(os_mtime, &ci, NULL, - os_drift_corrected); - } - -@@ -1128,13 +1125,13 @@ erts_init_time_sup(int time_correction, ErtsTimeWarpMode time_warp_mode) - - cdatap->drift.intervals[0].time.sys = time_sup.inf.c.sinit; - cdatap->drift.intervals[0].time.mon = time_sup.inf.c.minit; -- cdatap->curr.correction.drift = 0; -- cdatap->curr.correction.error = 0; -- cdatap->curr.erl_mtime = ERTS_MONOTONIC_BEGIN; -- cdatap->curr.os_mtime = time_sup.inf.c.minit; -+ cdatap->insts.curr.correction.drift = 0; -+ cdatap->insts.curr.correction.error = 0; -+ cdatap->insts.curr.erl_mtime = ERTS_MONOTONIC_BEGIN; -+ cdatap->insts.curr.os_mtime = time_sup.inf.c.minit; - cdatap->last_check = time_sup.inf.c.minit; - cdatap->short_check_interval = ERTS_INIT_SHORT_INTERVAL_COUNTER; -- cdatap->prev = cdatap->curr; -+ cdatap->insts.prev = cdatap->insts.curr; - - if (!time_sup.r.o.os_corrected_monotonic_time) - time_sup.r.o.get_time = get_corrected_time; ---- a/erts/emulator/test/trace_port_SUITE.erl -+++ b/erts/emulator/test/trace_port_SUITE.erl -@@ -35,7 +35,8 @@ - fake_schedule_after_getting_linked/1, - fake_schedule_after_getting_unlinked/1, - gc/1, -- default_tracer/1]). -+ default_tracer/1, -+ tracer_port_crash/1]). - - -include_lib("test_server/include/test_server.hrl"). - -@@ -45,7 +46,7 @@ test_cases() -> - fake_schedule_after_register, - fake_schedule_after_getting_linked, - fake_schedule_after_getting_unlinked, gc, -- default_tracer]. -+ default_tracer, tracer_port_crash]. - - suite() -> [{ct_hooks,[ts_install_cth]}]. - -@@ -473,6 +474,42 @@ default_tracer(Config) when is_list(Config) -> - ?line M = N, - ok. - -+tracer_port_crash(Config) when is_list(Config) -> -+ case test_server:is_native(?MODULE) orelse -+ test_server:is_native(lists) of -+ true -> -+ {skip,"Native code"}; -+ false -> -+ Tr = start_tracer(Config), -+ Port = get(tracer_port), -+ Tracee = spawn(fun () -> -+ register(trace_port_linker, self()), -+ link(Port), -+ receive go -> ok end, -+ lists:reverse([1,b,c]), -+ receive die -> ok end -+ end), -+ Tr ! {unlink_tracer_port, self()}, -+ receive {unlinked_tracer_port, Tr} -> ok end, -+ port_control(Port, $c, []), %% Make port commands crash tracer port... -+ trace_func({lists,reverse,1}, []), -+ trace_pid(Tracee, true, [call]), -+ trace_info(Tracee, flags), -+ trace_info(self(), tracer), -+ Tracee ! go, -+ receive after 1000 -> ok end, -+ case whereis(trace_port_linker) of -+ undefined -> -+ ok; -+ Id -> -+% erts_debug:set_internal_state(available_internal_state, true), -+% erts_debug:set_internal_state(abort, {trace_port_linker, Id}) -+ ?t:fail({trace_port_linker, Id}) -+ end, -+ undefined = process_info(Tracee), -+ ok -+ end. -+ - %%% Help functions. - - huge_data() -> huge_data(16384). -@@ -631,6 +668,10 @@ tracer_loop(RelayTo, Port) -> - {Port,{data,Msg}} -> - RelayTo ! binary_to_term(Msg), - tracer_loop(RelayTo, Port); -+ {unlink_tracer_port, From} -> -+ unlink(Port), -+ From ! {unlinked_tracer_port, self()}, -+ tracer_loop(RelayTo, Port); - Other -> - exit({bad_message,Other}) - end. ---- a/erts/emulator/test/trace_port_SUITE_data/echo_drv.c -+++ b/erts/emulator/test/trace_port_SUITE_data/echo_drv.c -@@ -1,5 +1,6 @@ - #include - #include "erl_driver.h" -+#include - - - -@@ -14,6 +15,7 @@ enum e_heavy { - typedef struct _erl_drv_data { - ErlDrvPort erlang_port; - enum e_heavy heavy; -+ int crash; - } EchoDrvData; - - static EchoDrvData echo_drv_data, *echo_drv_data_p; -@@ -78,6 +80,7 @@ static EchoDrvData *echo_drv_start(ErlDrvPort port, char *command) - echo_drv_data_p = &echo_drv_data; - echo_drv_data_p->erlang_port = port; - echo_drv_data_p->heavy = heavy_off; -+ echo_drv_data_p->crash = 0; - return echo_drv_data_p; - } - -@@ -87,6 +90,12 @@ static void echo_drv_stop(EchoDrvData *data_p) { - - static void echo_drv_output(ErlDrvData drv_data, char *buf, ErlDrvSizeT len) { - EchoDrvData* data_p = (EchoDrvData *) drv_data; -+ -+ if (data_p->crash) { -+ driver_failure_posix(data_p->erlang_port, EINTR); -+ return; -+ } -+ - driver_output(data_p->erlang_port, buf, len); - switch (data_p->heavy) { - case heavy_off: -@@ -100,6 +109,7 @@ static void echo_drv_output(ErlDrvData drv_data, char *buf, ErlDrvSizeT len) { - data_p->heavy = heavy_off; - break; - } -+ - } - - static void echo_drv_finish() { -@@ -115,6 +125,8 @@ static ErlDrvSSizeT echo_drv_control(ErlDrvData drv_data, - case 'h': - data_p->heavy = heavy_set; - break; -+ case 'c': -+ data_p->crash = 1; - } - return 0; - } ---- a/erts/vsn.mk -+++ b/erts/vsn.mk -@@ -18,7 +18,7 @@ - # %CopyrightEnd% - # - --VSN = 7.0.1 -+VSN = 7.0.2 - - # Port number 4365 in 4.2 - # Port number 4366 in 4.3 ---- a/lib/runtime_tools/c_src/trace_file_drv.c -+++ b/lib/runtime_tools/c_src/trace_file_drv.c -@@ -327,9 +327,11 @@ static ErlDrvData trace_file_start(ErlDrvPort port, char *buff) - | O_BINARY - #endif - , 0777)) < 0) { -+ int saved_errno = errno; - if (wrap) - driver_free(wrap); - driver_free(data); -+ errno = saved_errno; - return ERL_DRV_ERROR_ERRNO; - } - -@@ -525,14 +527,19 @@ static void *my_alloc(size_t size) - ** A write wrapper that regards it as an error if not all data was written. - */ - static int do_write(FILETYPE fd, unsigned char *buff, int siz) { -- int w = write(fd, buff, siz); -- if (w != siz) { -- if (w >= 0) { -- errno = ENOSPC; -+ int w; -+ while (1) { -+ w = write(fd, buff, siz); -+ if (w < 0 && errno == EINTR) -+ continue; -+ else if (w != siz) { -+ if (w >= 0) { -+ errno = ENOSPC; -+ } -+ return -1; - } -- return -1; -+ return siz; - } -- return siz; - } - - /* -@@ -627,8 +634,10 @@ static void close_unlink_port(TraceFileData *data) - */ - static int wrap_file(TraceFileData *data) { - if (my_flush(data) < 0) { -+ int saved_errno = errno; - close(data->fd); - data->fd = -1; -+ errno = saved_errno; - return -1; - } - close(data->fd); -@@ -644,12 +653,15 @@ static int wrap_file(TraceFileData *data) { - next_name(&data->wrap->del); - } - next_name(&data->wrap->cur); -+try_open: - data->fd = open(data->wrap->cur.name, O_WRONLY | O_TRUNC | O_CREAT - #ifdef O_BINARY - | O_BINARY - #endif - , 0777); - if (data->fd < 0) { -+ if (errno == EINTR) -+ goto try_open; - data->fd = -1; - return -1; - } ---- a/lib/runtime_tools/doc/src/notes.xml -+++ b/lib/runtime_tools/doc/src/notes.xml -@@ -32,6 +32,23 @@ -

This document describes the changes made to the Runtime_Tools - application.

- -+
Runtime_Tools 1.9.1 -+ -+
Fixed Bugs and Malfunctions -+ -+ -+

-+ The trace_file_drv did not handle EINTR -+ correct which caused it to fail when the runtime system -+ received a signal.

-+

-+ Own Id: OTP-12890 Aux Id: seq12885

-+
-+
-+
-+ -+
-+ -
Runtime_Tools 1.9 - -
Improvements and New Features ---- a/lib/runtime_tools/vsn.mk -+++ b/lib/runtime_tools/vsn.mk -@@ -1 +1 @@ --RUNTIME_TOOLS_VSN = 1.9 -+RUNTIME_TOOLS_VSN = 1.9.1 ---- a/otp_versions.table -+++ b/otp_versions.table -@@ -1,3 +1,4 @@ -+OTP-18.0.2 : erts-7.0.2 runtime_tools-1.9.1 # asn1-4.0 common_test-1.11 compiler-6.0 cosEvent-2.2 cosEventDomain-1.2 cosFileTransfer-1.2 cosNotification-1.2 cosProperty-1.2 cosTime-1.2 cosTransactions-1.3 crypto-3.6 debugger-4.1 dialyzer-2.8 diameter-1.10 edoc-0.7.17 eldap-1.2 erl_docgen-0.4 erl_interface-3.8 et-1.5.1 eunit-2.2.10 gs-1.6 hipe-3.12 ic-4.4 inets-6.0 jinterface-1.6 kernel-4.0 megaco-3.18 mnesia-4.13 observer-2.1 odbc-2.11 orber-3.8 os_mon-2.4 ose-1.1 otp_mibs-1.1 parsetools-2.1 percept-0.8.11 public_key-1.0 reltool-0.7 sasl-2.5 snmp-5.2 ssh-4.0 ssl-7.0 stdlib-2.5 syntax_tools-1.7 test_server-3.9 tools-2.8 typer-0.9.9 webtool-0.9 wx-1.4 xmerl-1.3.8 : - OTP-18.0.1 : erts-7.0.1 # asn1-4.0 common_test-1.11 compiler-6.0 cosEvent-2.2 cosEventDomain-1.2 cosFileTransfer-1.2 cosNotification-1.2 cosProperty-1.2 cosTime-1.2 cosTransactions-1.3 crypto-3.6 debugger-4.1 dialyzer-2.8 diameter-1.10 edoc-0.7.17 eldap-1.2 erl_docgen-0.4 erl_interface-3.8 et-1.5.1 eunit-2.2.10 gs-1.6 hipe-3.12 ic-4.4 inets-6.0 jinterface-1.6 kernel-4.0 megaco-3.18 mnesia-4.13 observer-2.1 odbc-2.11 orber-3.8 os_mon-2.4 ose-1.1 otp_mibs-1.1 parsetools-2.1 percept-0.8.11 public_key-1.0 reltool-0.7 runtime_tools-1.9 sasl-2.5 snmp-5.2 ssh-4.0 ssl-7.0 stdlib-2.5 syntax_tools-1.7 test_server-3.9 tools-2.8 typer-0.9.9 webtool-0.9 wx-1.4 xmerl-1.3.8 : - OTP-18.0 : asn1-4.0 common_test-1.11 compiler-6.0 cosEvent-2.2 cosEventDomain-1.2 cosFileTransfer-1.2 cosNotification-1.2 cosProperty-1.2 cosTime-1.2 cosTransactions-1.3 crypto-3.6 debugger-4.1 dialyzer-2.8 diameter-1.10 edoc-0.7.17 eldap-1.2 erl_docgen-0.4 erl_interface-3.8 erts-7.0 et-1.5.1 eunit-2.2.10 gs-1.6 hipe-3.12 ic-4.4 inets-6.0 jinterface-1.6 kernel-4.0 megaco-3.18 mnesia-4.13 observer-2.1 odbc-2.11 orber-3.8 os_mon-2.4 ose-1.1 otp_mibs-1.1 parsetools-2.1 percept-0.8.11 public_key-1.0 reltool-0.7 runtime_tools-1.9 sasl-2.5 snmp-5.2 ssh-4.0 ssl-7.0 stdlib-2.5 syntax_tools-1.7 test_server-3.9 tools-2.8 typer-0.9.9 webtool-0.9 wx-1.4 xmerl-1.3.8 # : - OTP-17.5.6 : inets-5.10.9 ssh-3.2.4 ssl-6.0.1 # asn1-3.0.4 common_test-1.10.1 compiler-5.0.4 cosEvent-2.1.15 cosEventDomain-1.1.14 cosFileTransfer-1.1.16 cosNotification-1.1.21 cosProperty-1.1.17 cosTime-1.1.14 cosTransactions-1.2.14 crypto-3.5 debugger-4.0.3 dialyzer-2.7.4 diameter-1.9.2 edoc-0.7.16 eldap-1.1.1 erl_docgen-0.3.7 erl_interface-3.7.20 erts-6.4.1 et-1.5 eunit-2.2.9 gs-1.5.16 hipe-3.11.3 ic-4.3.6 jinterface-1.5.12 kernel-3.2 megaco-3.17.3 mnesia-4.12.5 observer-2.0.4 odbc-2.10.22 orber-3.7.1 os_mon-2.3.1 ose-1.0.2 otp_mibs-1.0.10 parsetools-2.0.12 percept-0.8.10 public_key-0.23 reltool-0.6.6 runtime_tools-1.8.16 sasl-2.4.1 snmp-5.1.2 stdlib-2.4 syntax_tools-1.6.18 test_server-3.8.1 tools-2.7.2 typer-0.9.8 webtool-0.8.10 wx-1.3.3 xmerl-1.3.7 : diff --git a/main/erlang/0070-hipe_x86_signal-fix.patch b/main/erlang/0070-hipe_x86_signal-fix.patch new file mode 100644 index 0000000..728d47d --- /dev/null +++ b/main/erlang/0070-hipe_x86_signal-fix.patch @@ -0,0 +1,21 @@ +--- otp_src_18.1-orig/erts/emulator/hipe/hipe_x86_signal.c ++++ otp_src_18.1-fixed/erts/emulator/hipe/hipe_x86_signal.c +@@ -221,16 +221,15 @@ + #include + static int (*__next_sigaction)(int, const struct sigaction*, struct sigaction*); + #define init_done() (__next_sigaction != 0) +-#define __SIGACTION _sigaction ++#define __SIGACTION __sigaction + static void do_init(void) + { +- __next_sigaction = dlsym(RTLD_NEXT, "_sigaction"); ++ __next_sigaction = dlsym(RTLD_NEXT, "__sigaction"); + if (__next_sigaction != 0) + return; + perror("dlsym"); + abort(); + } +-#define _NSIG NSIG + #define INIT() do { if (!init_done()) do_init(); } while (0) + #endif /* not glibc or darwin */ + diff --git a/main/erlang/APKBUILD b/main/erlang/APKBUILD index eca4c68..b2d13c6 100644 --- a/main/erlang/APKBUILD +++ b/main/erlang/APKBUILD @@ -4,13 +4,13 @@ pkgname=erlang pkgver=18.1 _srcver=18.1 -pkgrel=0 +pkgrel=1 pkgdesc="General-purpose programming language and runtime environment" url="http://www.erlang.org/" license="ASL 2.0" arch="all" depends="$pkgname-kernel $pkgname-stdlib $pkgname-compiler" -makedepends="perl-dev zlib-dev ncurses-dev openssl-dev openjdk7 unixodbc-dev" +makedepends="m4 perl-dev zlib-dev ncurses-dev openssl-dev openjdk7 unixodbc-dev" install="" subpackages="$pkgname-dev $pkgname-asn1:asn @@ -76,7 +76,8 @@ source="http://www.erlang.org/download/otp_src_$_srcver.tar.gz 0010-fix-nteventlog-remove.patch 0020-remove-private-unit32.patch 0030-replace_glibc_check.patch - 0060-set-disksup_posix_only-to-true.patch" + 0060-set-disksup_posix_only-to-true.patch + 0070-hipe_x86_signal-fix.patch" _builddir="$srcdir"/otp_src_$_srcver @@ -215,33 +216,36 @@ ef4b726309a749010553259080960753 0002-Remove-rpath.patch 458118f96fb0c973a30630c070bd94aa 0003-Do-not-install-C-sources.patch 1c3b158ac8408fced9a0f3630f4498f1 0004-Do-not-install-Java-sources.patch f4aa0cc27dc57ea4dcd57191b1948a4d 0005-Do-not-install-nteventlog-and-related-doc-files-on-n.patch -115f105e3af69b94e078cc56cfd6f062 0006-Do-not-install-erlang-sources.patch +90f36608d2d8f71c8eb19126af06978b 0006-Do-not-install-erlang-sources.patch b438c37818b5c82443682c3693dd7e53 0007-Split-off-webtool-dependency-from-tools.patch 0dd300003ff68fc46dc3c839c2541d53 0010-fix-nteventlog-remove.patch 062605d7f01f4685f1897ba2decc23a8 0020-remove-private-unit32.patch 7a5c956b7bf79e34a0f980d1e2a65bee 0030-replace_glibc_check.patch -d17fbaafa9f7820ade09b239c00aede6 0060-set-disksup_posix_only-to-true.patch" +d17fbaafa9f7820ade09b239c00aede6 0060-set-disksup_posix_only-to-true.patch +02a18c698b0ff37d0bcf106db57c1136 0070-hipe_x86_signal-fix.patch" sha256sums="e4a147228a6b7fa60dce05c8adfb3cbc254d97cf6e45456d93d93adbde8b0f11 otp_src_18.1.tar.gz 536e78192f915733cbbb264883af6d9b11c9e70c2c4d3d825b58c4dbec36db86 0001-Do-not-format-man-pages-and-do-not-install-miscellan.patch b2e5844215d7f5f5026a77342dd698d16103cc726d23f8265bcc8399d1a82bb9 0002-Remove-rpath.patch 81062f0eb9a72cbfac600fab56823161f92e1e5107b359f27f9f0ec511b8aec5 0003-Do-not-install-C-sources.patch 2ed61274decb534ab4142bd0a2116a75e3fe82d33a8ff145524173ce5773b0e2 0004-Do-not-install-Java-sources.patch 71c8a55fe036d5a04ba2c008b51d8950c3f18d83edaffb9bef2a9d19dd2f79f3 0005-Do-not-install-nteventlog-and-related-doc-files-on-n.patch -d5dd09daa693729f93305d9fc4391faca8bd601f572df02db5da1bf01fa8dc58 0006-Do-not-install-erlang-sources.patch +594745af27e73d8213e190eea654285bc4bdda706de4275f2b6dd64b2af720c3 0006-Do-not-install-erlang-sources.patch 9704a53bc4bd6f5624f9ce3f201128204011f4579f19b547df74d92ae22777cf 0007-Split-off-webtool-dependency-from-tools.patch 019c62ea3fee60068caa8c3152d7f96e76591fc5dc096abfcea48ec1593eb758 0010-fix-nteventlog-remove.patch 0b63ff5ce4e642d4225d5cc4d52d88dd5daf83ce5a2549ba0e5a14ce05e17ac2 0020-remove-private-unit32.patch e3158dbb4bcb4677ceda39a374326c069de78a52e598ef8169a288b86a040a62 0030-replace_glibc_check.patch -3ffda0b3acbde755b496c1a974c20e1ca580432c403944c1c16836f48e248429 0060-set-disksup_posix_only-to-true.patch" +3ffda0b3acbde755b496c1a974c20e1ca580432c403944c1c16836f48e248429 0060-set-disksup_posix_only-to-true.patch +97c430677f18f81bafc6af7bb45c5dddc5222597350a6813cb338d21acec464a 0070-hipe_x86_signal-fix.patch" sha512sums="31e3a4f3d8da7877757fa4df427c59462cb68e0177f93698146ce17127406fd0ee77f819044cef10e4a18ed075deb44343d915148cf1fd4bce09a1e39edaaee6 otp_src_18.1.tar.gz 172f9b0f61748bf2f04737df0451bcc9c0812db0f365f0ef7c7c244fceb991987f79a5274eea578a89cc7d077f84645d1395d9dbcbf14010268b896a080c2ccf 0001-Do-not-format-man-pages-and-do-not-install-miscellan.patch 97c40c185b71b23ffcb924639af390b9a0be897070e396a9413e193e6d43048dfe3b86bcd0c5598b81a66ce1349de9e09f5228a452b51b6612cd947bbafb6377 0002-Remove-rpath.patch 1cae89d1e8f9d375ae08c7de2b8f7a5143bcded90eef878e97c408542a50e9a880166311820013301e46364be0ae090d3fc515b6f915ead14e787b98290beec1 0003-Do-not-install-C-sources.patch b174e3c9103aa26e3b4993ae77b849a55f733e6f8e5dd7bb641a8548aea7fcc91b99d772c91ff8864fff5c30b388438f8cb41d7ac941a86fc7bb1891f9838068 0004-Do-not-install-Java-sources.patch 923addcb1f6472829ba13ccc91ad3cef161f269478404f0a19bc4997118e06edd7459011a60769eb393eac930f30d4bd6c5526301382a5f9815862237f4664d3 0005-Do-not-install-nteventlog-and-related-doc-files-on-n.patch -12aff88e06a4fe4f25bb7ae16257195779388f903bbb38dfcfa1a36f81874493eb5e73836c340c60ddfe28e175fe165754c695d4f77b401cc84c6f711ce2c24e 0006-Do-not-install-erlang-sources.patch +b9aea9344703688ef5b98d530417c59166749de4f6d91fe8d01abaa7bd1946495ec4ab23e854947192659f49b35cbbead7c4f47836c3579ff844f23217e75cb4 0006-Do-not-install-erlang-sources.patch d65fcfc3a9441941c6292c33d354964a82da11cc7a411dd0440719e490075ed588c1e70690e80650561749010d737394567f12ff73bd460f0d00c792c77cfae3 0007-Split-off-webtool-dependency-from-tools.patch b7387f92f8c27a0565c7885bba4b357183c62d422616e073bc5ffad338a0e22cb5165dcb3b95bf0b920ba00831599f2216027883f4be255aa6f6150b68b7a37c 0010-fix-nteventlog-remove.patch 18f70c3a99ac8c44bc9d90dc3f0c072ad4df4ffe57a8d0677087c9e940ba138d7a7698d5cdbbe14875a6012d353a679fdb33d40fca3a3211f712af8c4b0cb0b4 0020-remove-private-unit32.patch b554882bee1a70322cc8c5b973986047deaf4528fe1371df39cf72b27b2497a859463bdf8847ea6ea96cb0caaa6bd143c96a5dee28839164a547a66a30fcffd0 0030-replace_glibc_check.patch -f3c50f8610e08173c365a575737079b0259db6fc0dfa5b1be63c281b52358bbce9e2595132a8f6a06772785d7d38d108f8da8515e2f7706cd03b6585aab4d071 0060-set-disksup_posix_only-to-true.patch" +f3c50f8610e08173c365a575737079b0259db6fc0dfa5b1be63c281b52358bbce9e2595132a8f6a06772785d7d38d108f8da8515e2f7706cd03b6585aab4d071 0060-set-disksup_posix_only-to-true.patch +400bcc630db8902e4781f9590c6d81089d7e6751a17c09ad1f05a0308fc6737391a718c73936b411e3b6bcbc65e5ea555d92012dacaa806a9db9cd219d887753 0070-hipe_x86_signal-fix.patch" -- 2.4.1 --- Unsubscribe: alpine-aports+unsubscribe@lists.alpinelinux.org Help: alpine-aports+help@lists.alpinelinux.org ---