aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator
diff options
context:
space:
mode:
authorSverker Eriksson <[email protected]>2011-02-04 18:11:32 +0100
committerSverker Eriksson <[email protected]>2011-02-18 15:15:47 +0100
commitad1f48d0429b480f5344e3b354a89124ed4fe852 (patch)
treec32945ce1168e4d7f9398d08116a4038644ccff1 /erts/emulator
parentd8babf8bb810ef62c17037d511435642f60eeed3 (diff)
downloadotp-ad1f48d0429b480f5344e3b354a89124ed4fe852.tar.gz
otp-ad1f48d0429b480f5344e3b354a89124ed4fe852.tar.bz2
otp-ad1f48d0429b480f5344e3b354a89124ed4fe852.zip
Fix vm crash in kernel test case seq_trace_SUITE:call
Diffstat (limited to 'erts/emulator')
-rw-r--r--erts/emulator/beam/erl_db_util.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/erts/emulator/beam/erl_db_util.c b/erts/emulator/beam/erl_db_util.c
index 69b6261549..d3e31da413 100644
--- a/erts/emulator/beam/erl_db_util.c
+++ b/erts/emulator/beam/erl_db_util.c
@@ -2209,20 +2209,21 @@ restart:
Eterm sender = SEQ_TRACE_TOKEN_SENDER(c_p);
Uint sender_sz = is_immed(sender) ? 0 : size_object(sender);
ehp = HAllocX(build_proc, 6 + sender_sz, HEAP_XTRA);
+ if (sender_sz) {
+ sender = copy_struct(sender, sender_sz, &ehp, &MSO(build_proc));
+ }
*esp++ = make_tuple(ehp);
ehp[0] = make_arityval(5);
ehp[1] = SEQ_TRACE_TOKEN_FLAGS(c_p);
ehp[2] = SEQ_TRACE_TOKEN_LABEL(c_p);
ehp[3] = SEQ_TRACE_TOKEN_SERIAL(c_p);
+ ehp[4] = sender;
ehp[5] = SEQ_TRACE_TOKEN_LASTCNT(c_p);
ASSERT(SEQ_TRACE_TOKEN_ARITY(c_p) == 5);
ASSERT(is_immed(ehp[1]));
ASSERT(is_immed(ehp[2]));
ASSERT(is_immed(ehp[3]));
ASSERT(is_immed(ehp[5]));
- ehp += 6;
- ehp[4] = (sender_sz==0) ? sender
- : copy_struct(sender, sender_sz, &ehp, &MSO(build_proc));
}
break;
case matchEnableTrace: