AStar#get_point_path() - Condition ' p_elem->_root ' is true

:information_source: Attention Topic was automatically imported from the old Question2Answer platform.
:bust_in_silhouette: Asked By Jan Krüger

Error in the tool

0:00:04:0405 - Condition ’ p_elem->_root ’ is true.

Type:Error Description:
Time: 0:00:04:0405
C Error: Condition ’ p_elem->_root ’ is true.
C Source: core\self_list.h:46 C
Function: SelfList::List::add

Error in the external console

ERROR: SelfList::List::add: ERROR:
SelfList::List::add: Condition ’ p_elem->_root ’
is true. Condition ’ p_elem->_root ’ is true. At: At:
core\self_list.h:46 core\self_list.h:46

This seems to be caused by calling AStar#get_point_path() (GDScript) which calls AStar#_solve. I am lacking the C++ skills to debug what is going on and unfortunately, the assertions aren’t commented nor do they emit a more helpful message which makes all of this kinda difficult to understand for a beginner.

Edit: After further testing, it turns out either AStar#get_point_path() or AStar#_solve() are not thread-safe, I think the latter one. I execute AStar#get_point_path() on another thread to avoid stuttering. This works just fine with only one thread but adding more than one causes the error. I tested this by adding a Mutex to lock down the method call.