diff options
author | Björn-Egil Dahlberg <[email protected]> | 2013-10-21 17:39:24 +0200 |
---|---|---|
committer | Björn-Egil Dahlberg <[email protected]> | 2013-10-21 17:39:24 +0200 |
commit | 7cf1ce9d805414d5cb1bf29852d2a5bf48ea4235 (patch) | |
tree | 5cf52df42ab9a6699fede95712c80c826bbe8530 | |
parent | f6c8336de4bc28f98db3b8d76cb448afa86e0308 (diff) | |
parent | e25f74afd0705f686d0fc949e4362c73d6da15fa (diff) | |
download | otp-7cf1ce9d805414d5cb1bf29852d2a5bf48ea4235.tar.gz otp-7cf1ce9d805414d5cb1bf29852d2a5bf48ea4235.tar.bz2 otp-7cf1ce9d805414d5cb1bf29852d2a5bf48ea4235.zip |
Merge branch 'egil/fix-crashdump-pointer-crash/OTP-11420' into maint
* egil/fix-crashdump-pointer-crash/OTP-11420:
erts: Fix segfaulting crashdump writing
-rw-r--r-- | erts/emulator/beam/break.c | 5 | ||||
-rw-r--r-- | erts/emulator/beam/erl_process.c | 2 |
2 files changed, 5 insertions, 2 deletions
diff --git a/erts/emulator/beam/break.c b/erts/emulator/beam/break.c index ad9a89b642..99604fa3bc 100644 --- a/erts/emulator/beam/break.c +++ b/erts/emulator/beam/break.c @@ -76,7 +76,10 @@ process_info(int to, void *to_arg) for (i = 0; i < max; i++) { Process *p = erts_pix2proc(i); if (p && p->i != ENULL) { - if (!ERTS_PROC_IS_EXITING(p)) + /* Do not include processes with no heap, + * they are most likely just created and has invalid data + */ + if (!ERTS_PROC_IS_EXITING(p) && p->heap != NULL) print_process_info(to, to_arg, p); } } diff --git a/erts/emulator/beam/erl_process.c b/erts/emulator/beam/erl_process.c index 79f382674a..1efd070afd 100644 --- a/erts/emulator/beam/erl_process.c +++ b/erts/emulator/beam/erl_process.c @@ -7471,6 +7471,7 @@ alloc_process(ErtsRunQueue *rq, erts_aint32_t state) p->approx_started = erts_get_approx_time(); p->rcount = 0; + p->heap = NULL; ASSERT(p == (Process *) (erts_ptab_pix2intptr_nob( @@ -7583,7 +7584,6 @@ erl_create_process(Process* parent, /* Parent of process (default group leader). hipe_init_process_smp(&p->hipe_smp); #endif #endif - p->heap = (Eterm *) ERTS_HEAP_ALLOC(ERTS_ALC_T_HEAP, sizeof(Eterm)*sz); p->old_hend = p->old_htop = p->old_heap = NULL; p->high_water = p->heap; |