diff options
author | Patrik Nyblom <[email protected]> | 2010-05-31 16:59:30 +0200 |
---|---|---|
committer | Patrik Nyblom <[email protected]> | 2010-06-01 12:28:13 +0200 |
commit | 3d783a44dc3d13830766cacf3c315c13558d69bb (patch) | |
tree | 0051b20457caead6ee1d50c8a471901aaced2b3b /erts/emulator/beam/erl_trace.c | |
parent | 256fb889b337781d27642471f16a5c7e0a988d8c (diff) | |
download | otp-3d783a44dc3d13830766cacf3c315c13558d69bb.tar.gz otp-3d783a44dc3d13830766cacf3c315c13558d69bb.tar.bz2 otp-3d783a44dc3d13830766cacf3c315c13558d69bb.zip |
Keep process lock over trace of unregister
Diffstat (limited to 'erts/emulator/beam/erl_trace.c')
-rw-r--r-- | erts/emulator/beam/erl_trace.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/erts/emulator/beam/erl_trace.c b/erts/emulator/beam/erl_trace.c index 8addfcf5ad..381a182e39 100644 --- a/erts/emulator/beam/erl_trace.c +++ b/erts/emulator/beam/erl_trace.c @@ -1941,11 +1941,13 @@ trace_proc(Process *c_p, Process *t_p, Eterm what, Eterm data) Eterm* hp; int need; + ERTS_SMP_LC_ASSERT((erts_proc_lc_my_proc_locks(t_p) != 0) || erts_is_system_blocked(0)); if (is_internal_port(t_p->tracer_proc)) { #define LOCAL_HEAP_SIZE (5+5) DeclareTmpHeapNoproc(local_heap,LOCAL_HEAP_SIZE); UseTmpHeapNoproc(LOCAL_HEAP_SIZE); + hp = local_heap; mess = TUPLE4(hp, am_trace, t_p->id, what, data); hp += 5; @@ -2727,6 +2729,8 @@ trace_port(Port *t_p, Eterm what, Eterm data) { Eterm mess; Eterm* hp; + ERTS_SMP_LC_ASSERT(erts_lc_is_port_locked(t_p) || erts_is_system_blocked(0)); + if (is_internal_port(t_p->tracer_proc)) { #define LOCAL_HEAP_SIZE (5+5) DeclareTmpHeapNoproc(local_heap,LOCAL_HEAP_SIZE); |