diff options
author | Rickard Green <[email protected]> | 2016-05-31 16:15:57 +0200 |
---|---|---|
committer | Rickard Green <[email protected]> | 2016-05-31 16:15:57 +0200 |
commit | 5add0e9c741379a928f21c783316310fec6de095 (patch) | |
tree | 08f70810c20e739ccc2b9260de2d962e4e3ec6ff /erts/emulator | |
parent | b2207f7174a4b6f0906da0c8b4d2458397de7e0f (diff) | |
parent | a6a4ce5c63cae9e0d3a35fea3074a59dd06f22fc (diff) | |
download | otp-5add0e9c741379a928f21c783316310fec6de095.tar.gz otp-5add0e9c741379a928f21c783316310fec6de095.tar.bz2 otp-5add0e9c741379a928f21c783316310fec6de095.zip |
Merge branch 'rickard/off_heap-nonsmp-fix/OTP-13366'
* rickard/off_heap-nonsmp-fix/OTP-13366:
Do not send on_heap msgs to error logger in non-smp emulator
Diffstat (limited to 'erts/emulator')
-rw-r--r-- | erts/emulator/beam/utils.c | 18 |
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 |