Skip to content

Commit

Permalink
Merge pull request #9296 from SenRamakri/sen_RemovePrintfCrashReport
Browse files Browse the repository at this point in the history
Remove printf completely and fix the optimization check
  • Loading branch information
Cruz Monrreal authored Jan 24, 2019
2 parents 7c4668c + d0b9503 commit 2941c8d
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 11 deletions.
2 changes: 1 addition & 1 deletion TESTS/host_tests/crash_reporting.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ def test_steps(self):
wait_after_reset = wait_after_reset if wait_after_reset is not None else DEFAULT_CYCLE_PERIOD

#Wait 2 seconds for system to init
time.sleep(2.0)
time.sleep(7.0)
#self.send_kv(MSG_KEY_SYNC, MSG_VALUE_DUMMY)
self.send_kv(MSG_KEY_DEVICE_ERROR, MSG_VALUE_DUMMY)
time.sleep(5.0)
Expand Down
7 changes: 6 additions & 1 deletion TESTS/mbed_platform/crash_reporting/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -53,12 +53,17 @@ void test_crash_reporting()

// Report readiness
greentea_send_kv(MSG_KEY_DEVICE_READY, MSG_VALUE_DUMMY);
printf("\nMessage sent: %s\n", MSG_KEY_DEVICE_READY);

static char _key[MSG_KEY_LEN + 1] = { };
static char _value[MSG_VALUE_LEN + 1] = { };

printf("\nWaiting for crash inject error message: %s\n", MSG_KEY_DEVICE_ERROR);
greentea_parse_kv(_key, _value, MSG_KEY_LEN, MSG_VALUE_LEN);
printf("\nCrash inject error message received\n");

if (strcmp(_key, MSG_KEY_DEVICE_ERROR) == 0) {
printf("\nForcing error\n");
MBED_ERROR1(MBED_ERROR_OUT_OF_MEMORY, "Executing crash reporting test.", 0xDEADBAD);
TEST_ASSERT_MESSAGE(0, "crash_reporting() error call failed.");
}
Expand All @@ -67,7 +72,7 @@ void test_crash_reporting()

int main(void)
{
GREENTEA_SETUP(30, "crash_reporting");
GREENTEA_SETUP(40, "crash_reporting");
test_crash_reporting();
GREENTEA_TESTSUITE_RESULT(0);

Expand Down
17 changes: 8 additions & 9 deletions platform/mbed_error.c
Original file line number Diff line number Diff line change
Expand Up @@ -211,24 +211,16 @@ mbed_error_status_t mbed_error_initialize(void)
//Read report_error_ctx and check if CRC is correct, and with valid status code
if ((report_error_ctx->crc_error_ctx == crc_val) && (report_error_ctx->is_error_processed == 0)) {
is_reboot_error_valid = true;
//Report the error info
#ifndef NDEBUG
printf("\n== The system has been rebooted due to a fatal error. ==\n");
#endif

//Call the mbed_error_reboot_callback, this enables applications to do some handling before we do the handling
mbed_error_reboot_callback(report_error_ctx);

//We let the callback reset the error info, so check if its still valid and do the rest only if its still valid.
if (report_error_ctx->error_reboot_count < 0) {
if (report_error_ctx->error_reboot_count > 0) {

//Enforce max-reboot only if auto reboot is enabled
#if MBED_CONF_PLATFORM_FATAL_ERROR_AUTO_REBOOT_ENABLED
if (report_error_ctx->error_reboot_count >= MBED_CONF_PLATFORM_ERROR_REBOOT_MAX) {
//We have rebooted more than enough, hold the system here.
#ifndef NDEBUG
printf("\n== Reboot count(=%ld) exceeded maximum, system halting ==\n", report_error_ctx->error_reboot_count);
#endif
mbed_halt_system();
}
#endif
Expand Down Expand Up @@ -300,6 +292,13 @@ WEAK MBED_NORETURN mbed_error_status_t mbed_error(mbed_error_status_t error_stat
core_util_critical_section_exit();
//We need not call delete_mbed_crc(crc_obj) here as we are going to reset the system anyway, and calling delete while handling a fatal error may cause nested exception
#if MBED_CONF_PLATFORM_FATAL_ERROR_AUTO_REBOOT_ENABLED && (MBED_CONF_PLATFORM_ERROR_REBOOT_MAX > 0)
#ifndef NDEBUG
mbed_error_printf("\n= System will be rebooted due to a fatal error =\n");
if (report_error_ctx->error_reboot_count >= MBED_CONF_PLATFORM_ERROR_REBOOT_MAX) {
//We have rebooted more than enough, hold the system here.
mbed_error_printf("= Reboot count(=%ld) reached maximum, system will halt after rebooting =\n", report_error_ctx->error_reboot_count);
}
#endif
system_reset();//do a system reset to get the system rebooted
#endif
#endif
Expand Down

0 comments on commit 2941c8d

Please sign in to comment.