aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/erl_process.c
diff options
context:
space:
mode:
authorZandra Hird <[email protected]>2015-07-07 15:17:10 +0200
committerZandra Hird <[email protected]>2015-07-07 15:17:10 +0200
commit832aa9e06aced4975c9cb02257f74827602217aa (patch)
tree4f5e5263bd6e578fe6fa2a619bfd3bec9a0c512b /erts/emulator/beam/erl_process.c
parentddc7ce9124a8fb03bb95b5d550812c34f4177946 (diff)
parent12002949e5435d19c750fe2cd8e897b4059f875a (diff)
downloadotp-832aa9e06aced4975c9cb02257f74827602217aa.tar.gz
otp-832aa9e06aced4975c9cb02257f74827602217aa.tar.bz2
otp-832aa9e06aced4975c9cb02257f74827602217aa.zip
Merge branch 'maint-17' into maint
Conflicts: OTP_VERSION erts/doc/src/notes.xml erts/vsn.mk lib/runtime_tools/doc/src/notes.xml lib/runtime_tools/vsn.mk otp_versions.table
Diffstat (limited to 'erts/emulator/beam/erl_process.c')
-rw-r--r--erts/emulator/beam/erl_process.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/erts/emulator/beam/erl_process.c b/erts/emulator/beam/erl_process.c
index 7b3d12ce09..ee1dd36d48 100644
--- 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,