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>
This commit is contained in:
parent
b5dd6faf8d
commit
3865c411ee
|
@ -207,7 +207,8 @@ static int freertos_update_threads(struct rtos *rtos)
|
||||||
LOG_ERROR("Error allocating memory for %d threads", thread_list_size);
|
LOG_ERROR("Error allocating memory for %d threads", thread_list_size);
|
||||||
return ERROR_FAIL;
|
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->exists = true;
|
||||||
rtos->thread_details->extra_info_str = NULL;
|
rtos->thread_details->extra_info_str = NULL;
|
||||||
rtos->thread_details->thread_name_str = malloc(sizeof(tmp_str));
|
rtos->thread_details->thread_name_str = malloc(sizeof(tmp_str));
|
||||||
|
|
Loading…
Reference in New Issue