aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRickard Green <[email protected]>2016-05-31 15:00:50 +0200
committerRickard Green <[email protected]>2016-05-31 15:06:54 +0200
commita6a4ce5c63cae9e0d3a35fea3074a59dd06f22fc (patch)
tree9a8b0a0ceaefa0ddc44aa3d48a020575d77b8c41
parent17e95dd8dcb0149b771d4aafaeeebc715ee59d3d (diff)
downloadotp-a6a4ce5c63cae9e0d3a35fea3074a59dd06f22fc.tar.gz
otp-a6a4ce5c63cae9e0d3a35fea3074a59dd06f22fc.tar.bz2
otp-a6a4ce5c63cae9e0d3a35fea3074a59dd06f22fc.zip
Do not send on_heap msgs to error logger in non-smp emulator
-rw-r--r--erts/emulator/beam/utils.c18
1 files changed, 6 insertions, 12 deletions
diff --git a/erts/emulator/beam/utils.c b/erts/emulator/beam/utils.c
index f0418446a8..675fafa726 100644
--- a/erts/emulator/beam/utils.c
+++ b/erts/emulator/beam/utils.c
@@ -2210,7 +2210,9 @@ do_allocate_logger_message(Eterm gleader, Eterm **hp, ErlOffHeap **ohp,
#ifndef ERTS_SMP
#ifdef USE_THREADS
- if (erts_get_scheduler_data()) /* Must be scheduler thread */
+ if (!erts_get_scheduler_data()) /* Must be scheduler thread */
+ *p = NULL;
+ else
#endif
{
*p = erts_whereis_process(NULL, 0, am_error_logger, 0, 0);
@@ -2226,18 +2228,10 @@ do_allocate_logger_message(Eterm gleader, Eterm **hp, ErlOffHeap **ohp,
}
/* So we have an error logger, lets build the message */
- if (sz <= HeapWordsLeft(*p)) {
- *ohp = &MSO(*p);
- *hp = HEAP_TOP(*p);
- HEAP_TOP(*p) += sz;
- } else {
-#endif
- *bp = new_message_buffer(sz);
- *ohp = &(*bp)->off_heap;
- *hp = (*bp)->mem;
-#ifndef ERTS_SMP
- }
#endif
+ *bp = new_message_buffer(sz);
+ *ohp = &(*bp)->off_heap;
+ *hp = (*bp)->mem;
return (is_nil(gleader)
? am_noproc