diff options
author | Frank Dischner <frank.dischner@gmail.com> | 2022-04-17 21:12:39 -0500 |
---|---|---|
committer | Tomas Vanek <vanekt@fbl.cz> | 2022-08-08 20:47:52 +0000 |
commit | 3865c411eebf01192ee347a1bd5c201c97ed23a6 (patch) | |
tree | f49014277565fc56daee1021753ef93ac55222fc | |
parent | b5dd6faf8d47781f2d7cba25decac79bd2310351 (diff) | |
download | riscv-openocd-3865c411eebf01192ee347a1bd5c201c97ed23a6.zip riscv-openocd-3865c411eebf01192ee347a1bd5c201c97ed23a6.tar.gz riscv-openocd-3865c411eebf01192ee347a1bd5c201c97ed23a6.tar.bz2 |
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 <frank.dischner@gmail.com>
Change-Id: I694509a0e01df089429b20ff1b879fc0592b532d
Reviewed-on: https://review.openocd.org/c/openocd/+/6934
Tested-by: jenkins
Reviewed-by: Asier Llano <asierllano@gmail.com>
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
-rw-r--r-- | src/rtos/FreeRTOS.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/rtos/FreeRTOS.c b/src/rtos/FreeRTOS.c index 499759a..5f779ef 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)); |