diff options
author | Sverker Eriksson <[email protected]> | 2011-02-04 18:11:32 +0100 |
---|---|---|
committer | Sverker Eriksson <[email protected]> | 2011-02-18 15:15:47 +0100 |
commit | ad1f48d0429b480f5344e3b354a89124ed4fe852 (patch) | |
tree | c32945ce1168e4d7f9398d08116a4038644ccff1 /erts/emulator | |
parent | d8babf8bb810ef62c17037d511435642f60eeed3 (diff) | |
download | otp-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.c | 7 |
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: |