starpu.suppr 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. {
  2. don't care about cache hit stats
  3. Helgrind:Race
  4. fun:_starpu_msi_cache_hit
  5. ...
  6. }
  7. {
  8. don't care about cache miss stats
  9. Helgrind:Race
  10. fun:_starpu_msi_cache_miss
  11. ...
  12. }
  13. {
  14. known race, but not problematic in practice, see comment in _starpu_tag_clear
  15. Helgrind:LockOrder
  16. ...
  17. fun:_starpu_tag_free
  18. fun:_starpu_htbl_clear_tags
  19. ...
  20. fun:_starpu_tag_clear
  21. fun:starpu_shutdown
  22. ...
  23. }
  24. {
  25. There is actually no race on current_mode, because the mode can not change unexpectedly, until _starpu_notify_data_dependencies() is called further down. Valgrind can not know about such software rwlock.
  26. Helgrind:Race
  27. fun:_starpu_release_data_on_node
  28. fun:_starpu_push_task_output
  29. ...
  30. }
  31. {
  32. We do not care about races on profiling statistics
  33. Helgrind:Race
  34. fun:_starpu_worker_get_status
  35. fun:_starpu_worker_reset_profiling_info_with_lock
  36. ...
  37. }
  38. {
  39. This is racy, but since we'll always put the same values, this is not a problem.
  40. Helgrind:Race
  41. fun:_starpu_codelet_check_deprecated_fields
  42. ...
  43. }
  44. {
  45. This is racy, but we don't care, it's only a statistic
  46. Helgrind:Race
  47. fun:starpu_task_nsubmitted
  48. ...
  49. }
  50. {
  51. This is racy, but we don't care, it's only a statistic
  52. Helgrind:Race
  53. fun:starpu_task_nready
  54. ...
  55. }
  56. {
  57. This is racy, but we don't care, it's only a statistic
  58. Helgrind:Race
  59. fun:_starpu_bus_update_profiling_info
  60. ...
  61. }
  62. {
  63. fscanf error
  64. Memcheck:Cond
  65. ...
  66. fun:fscanf
  67. fun:_starpu_load_bus_performance_files
  68. ...
  69. }
  70. {
  71. mc / handle locking order. We always take handle before mc, except when we tidy memory, where we use trylock, but helgrind doesn't handle that :/ https://bugs.kde.org/show_bug.cgi?id=243232
  72. Helgrind:LockOrder
  73. ...
  74. fun:__starpu_spin_trylock
  75. fun:lock_all_subtree
  76. ...
  77. }
  78. {
  79. mc / handle locking order1
  80. Helgrind:LockOrder
  81. ...
  82. fun:__starpu_spin_lock
  83. fun:try_to_free_mem_chunk
  84. ...
  85. }
  86. {
  87. mc / handle locking order2
  88. Helgrind:LockOrder
  89. ...
  90. fun:__starpu_spin_lock
  91. fun:try_to_find_reusable_mem_chunk
  92. ...
  93. }
  94. {
  95. mc / handle locking order3
  96. Helgrind:LockOrder
  97. ...
  98. fun:__starpu_spin_lock
  99. fun:free_potentially_in_use_mc
  100. ...
  101. }
  102. {
  103. mc / handle locking order4
  104. Helgrind:LockOrder
  105. ...
  106. fun:__starpu_spin_lock
  107. fun:free_potentially_in_use_mc
  108. ...
  109. }
  110. {
  111. mc / handle locking order5
  112. Helgrind:LockOrder
  113. ...
  114. fun:__starpu_spin_lock
  115. fun:register_mem_chunk
  116. ...
  117. }
  118. {
  119. mc / handle locking order6
  120. Helgrind:LockOrder
  121. ...
  122. fun:__starpu_spin_lock
  123. fun:_starpu_request_mem_chunk_removal
  124. ...
  125. }
  126. {
  127. mc / handle locking order7
  128. Helgrind:LockOrder
  129. ...
  130. fun:__starpu_spin_lock
  131. fun:_starpu_allocate_interface
  132. ...
  133. }
  134. {
  135. mc / handle locking order8
  136. Helgrind:LockOrder
  137. ...
  138. fun:__starpu_spin_lock
  139. fun:_starpu_memchunk_recently_used
  140. ...
  141. }
  142. {
  143. TODO1: This is temporary. It perhaps does not pose problem because only the worker takes this mutex. Fixing this will require changing the scheduler interface, so that the schedulers themselves take the scheduling lock, not the caller. Filter it out for now, so we can see other races more easily.
  144. Helgrind:LockOrder
  145. fun:pthread_mutex_lock
  146. fun:starpu_pthread_mutex_lock
  147. fun:simple_worker_pull_task
  148. ...
  149. }
  150. {
  151. TODO1: This is temporary. It perhaps does not pose problem because only the worker takes this mutex. Fixing this will require changing the scheduler interface, so that the schedulers themselves take the scheduling lock, not the caller. Filter it out for now, so we can see other races more easily.
  152. Helgrind:LockOrder
  153. fun:pthread_mutex_lock
  154. fun:starpu_pthread_mutex_lock
  155. fun:_starpu_sched_component_worker_lock_scheduling
  156. fun:simple_worker_pull_task
  157. ...
  158. }
  159. {
  160. TODO2: This is temporary. It perhaps does not pose problem because only the worker takes this mutex. Fixing this will require changing the scheduler interface, so that the schedulers themselves take the scheduling lock, not the caller. Filter it out for now, so we can see other races more easily.
  161. Helgrind:LockOrder
  162. fun:pthread_mutex_lock
  163. fun:starpu_pthread_mutex_lock
  164. fun:_starpu_sched_component_lock_worker
  165. fun:simple_worker_pull_task
  166. ...
  167. }
  168. {
  169. TODO2: This is temporary. It perhaps does not pose problem because only the worker takes this mutex. Fixing this will require changing the scheduler interface, so that the schedulers themselves take the scheduling lock, not the caller. Filter it out for now, so we can see other races more easily.
  170. Helgrind:LockOrder
  171. fun:pthread_mutex_lock
  172. fun:starpu_pthread_mutex_lock
  173. fun:_starpu_sched_component_lock_worker
  174. fun:_starpu_sched_component_worker_lock_scheduling
  175. fun:simple_worker_pull_task
  176. ...
  177. }