From bcfdcc69dea948ca2a869a1d955705f72f651f58 Mon Sep 17 00:00:00 2001 From: Mateusz Front Date: Wed, 13 Aug 2025 14:50:32 +0200 Subject: [PATCH] Add AVM_PRINT_PROCESS_CRASH_DUMPS option Signed-off-by: Mateusz Front --- CHANGELOG.md | 1 + CMakeLists.txt | 1 + src/libAtomVM/CMakeLists.txt | 4 ++++ src/libAtomVM/opcodesswitch.h | 2 ++ 4 files changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a9170adc3e..d464bddbc9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -54,6 +54,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Added `binary:match/2` and `binary:match/3` - Added `supervisor:which_children/1` - Added `monitored_by` in `process_info/2` +- Added `AVM_PRINT_PROCESS_CRASH_DUMPS` option ### Changed diff --git a/CMakeLists.txt b/CMakeLists.txt index 6eb3b6cdcd..68958a4aab 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -37,6 +37,7 @@ option(AVM_RELEASE "Build an AtomVM release" OFF) option(AVM_CREATE_STACKTRACES "Create stacktraces" ON) option(AVM_BUILD_RUNTIME_ONLY "Only build the AtomVM runtime" OFF) option(COVERAGE "Build for code coverage" OFF) +option(AVM_PRINT_PROCESS_CRASH_DUMPS "Print crash reports when processes die with non-standard reasons" ON) if((${CMAKE_SYSTEM_NAME} STREQUAL "Darwin") OR (${CMAKE_SYSTEM_NAME} STREQUAL "Linux") OR diff --git a/src/libAtomVM/CMakeLists.txt b/src/libAtomVM/CMakeLists.txt index dda1662742..29d6ee9e99 100644 --- a/src/libAtomVM/CMakeLists.txt +++ b/src/libAtomVM/CMakeLists.txt @@ -166,6 +166,10 @@ if(HAVE_PLATFORM_ATOMIC_H) target_compile_definitions(libAtomVM PUBLIC HAVE_PLATFORM_ATOMIC_H) endif() +if (AVM_PRINT_PROCESS_CRASH_DUMPS) + target_compile_definitions(libAtomVM PUBLIC AVM_PRINT_PROCESS_CRASH_DUMPS) +endif() + # Platforms that run select in a task must set this option if(AVM_SELECT_IN_TASK) target_compile_definitions(libAtomVM PUBLIC AVM_SELECT_IN_TASK) diff --git a/src/libAtomVM/opcodesswitch.h b/src/libAtomVM/opcodesswitch.h index 69d55514ef..226b37eca8 100644 --- a/src/libAtomVM/opcodesswitch.h +++ b/src/libAtomVM/opcodesswitch.h @@ -7181,10 +7181,12 @@ HOT_FUNC int scheduler_entry_point(GlobalContext *glb) } } +#ifdef AVM_PRINT_PROCESS_CRASH_DUMPS // Do not print crash dump if reason is normal or shutdown. if (x_regs[0] != LOWERCASE_EXIT_ATOM || (x_regs[1] != NORMAL_ATOM && x_regs[1] != SHUTDOWN_ATOM)) { context_dump(ctx); } +#endif if (x_regs[0] == LOWERCASE_EXIT_ATOM) { ctx->exit_reason = x_regs[1];