From: Frank Dischner Date: Mon, 18 Apr 2022 02:12:39 +0000 (-0500) Subject: FreeRTOS: Fix current thread ID when no threads are active X-Git-Url: https://git.gag.com/?a=commitdiff_plain;h=3865c411eebf01192ee347a1bd5c201c97ed23a6;hp=b5dd6faf8d47781f2d7cba25decac79bd2310351;p=fw%2Fopenocd FreeRTOS: Fix current thread ID when no threads are active When there are no rtos threads or none are active, a fake thread with ID 1 is created for the current execution, but the current thread ID was never set to this new fake ID. This would lead to an incorrect attempt to read stacked registers for this fake thread. Explicitly setting the current thread ID to the fake ID ensures that the registers are read from the core instead of calling freertos_get_thread_reg_list. Signed-off-by: Frank Dischner Change-Id: I694509a0e01df089429b20ff1b879fc0592b532d Reviewed-on: https://review.openocd.org/c/openocd/+/6934 Tested-by: jenkins Reviewed-by: Asier Llano Reviewed-by: Tomas Vanek --- diff --git a/src/rtos/FreeRTOS.c b/src/rtos/FreeRTOS.c index 499759ab3..5f779ef70 100644 --- a/src/rtos/FreeRTOS.c +++ b/src/rtos/FreeRTOS.c @@ -207,7 +207,8 @@ static int freertos_update_threads(struct rtos *rtos) LOG_ERROR("Error allocating memory for %d threads", thread_list_size); return ERROR_FAIL; } - rtos->thread_details->threadid = 1; + rtos->current_thread = 1; + rtos->thread_details->threadid = rtos->current_thread; rtos->thread_details->exists = true; rtos->thread_details->extra_info_str = NULL; rtos->thread_details->thread_name_str = malloc(sizeof(tmp_str));