aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/erl_trace.c
diff options
context:
space:
mode:
authorRickard Green <[email protected]>2016-04-27 10:36:10 +0200
committerRickard Green <[email protected]>2016-05-04 14:41:03 +0200
commit19932cade31a7973120eba8db9a3b57b925f674a (patch)
tree0a8e6a26ddce7800ab77f3c7f631a0cf16c3b8a6 /erts/emulator/beam/erl_trace.c
parent1d51d64979116d14258555c0c61e2a911110424b (diff)
downloadotp-19932cade31a7973120eba8db9a3b57b925f674a.tar.gz
otp-19932cade31a7973120eba8db9a3b57b925f674a.tar.bz2
otp-19932cade31a7973120eba8db9a3b57b925f674a.zip
Ensure correct reduction counting
Diffstat (limited to 'erts/emulator/beam/erl_trace.c')
-rw-r--r--erts/emulator/beam/erl_trace.c22
1 files changed, 12 insertions, 10 deletions
diff --git a/erts/emulator/beam/erl_trace.c b/erts/emulator/beam/erl_trace.c
index bd88769dfc..00e7cb23ba 100644
--- a/erts/emulator/beam/erl_trace.c
+++ b/erts/emulator/beam/erl_trace.c
@@ -1282,16 +1282,18 @@ trace_proc_spawn(Process *p, Eterm what, Eterm pid,
void save_calls(Process *p, Export *e)
{
- struct saved_calls *scb = ERTS_PROC_GET_SAVED_CALLS_BUF(p);
- if (scb) {
- Export **ct = &scb->ct[0];
- int len = scb->len;
-
- ct[scb->cur] = e;
- if (++scb->cur >= len)
- scb->cur = 0;
- if (scb->n < len)
- scb->n++;
+ if ((ERTS_TRACE_FLAGS(p) & F_SENSITIVE) == 0) {
+ struct saved_calls *scb = ERTS_PROC_GET_SAVED_CALLS_BUF(p);
+ if (scb) {
+ Export **ct = &scb->ct[0];
+ int len = scb->len;
+
+ ct[scb->cur] = e;
+ if (++scb->cur >= len)
+ scb->cur = 0;
+ if (scb->n < len)
+ scb->n++;
+ }
}
}