From a0a4b10885bb56d7a4a0105ec0273d80b1bb14d6 Mon Sep 17 00:00:00 2001 From: Alex Mikhalev Date: Thu, 5 Nov 2020 11:51:33 -0700 Subject: [PATCH] Fix non-determinstic boot hang with crashdumps On boot, if board_hardfault_init finds a hardfault stored in BBSRAM, it checks if there is any data available on stdin to see if there is somebody there to respond to a prompt. But on boards such as cubeorange where there is not a serial console by default, the ioctl fails and bytesWaiting is uninitialized. So it will non-deterministally hang the boot process with no outside feedback if that value is not zero. Signed-off-by: Alex Mikhalev --- platforms/nuttx/src/px4/common/board_crashdump.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platforms/nuttx/src/px4/common/board_crashdump.c b/platforms/nuttx/src/px4/common/board_crashdump.c index 2d00c90bed..831e65ffe4 100644 --- a/platforms/nuttx/src/px4/common/board_crashdump.c +++ b/platforms/nuttx/src/px4/common/board_crashdump.c @@ -129,7 +129,7 @@ int board_hardfault_init(int display_to_console, bool allow_prompt) /* Also end the misery for a user that holds for a key down on the console */ - int bytesWaiting; + int bytesWaiting = 0; ioctl(fileno(stdin), FIONREAD, (unsigned long)((uintptr_t) &bytesWaiting)); if (reboots > display_to_console || bytesWaiting != 0) {