A data sharing problem happens when two tasks access the same memory location, and the behavior of the program depends on the order of accesses. This group of topics describes two common data access patterns - incidental sharing and independent updates - that result in data sharing problems that are relatively easy to fix. The fixes are described in Problem Solving Strategies.
The task's code is called its static extent. You need to understand all the data accesses that might be executed during the execution of the task. You are interested in accesses to memory locations in the dynamic extent of a task, which includes all functions called from the task's static extent, all functions the called functions may in turn call, and so on.