Skip to content

Commit

Permalink
Allow pattern inside static block, add low confidence label
Browse files Browse the repository at this point in the history
  • Loading branch information
iuliadmtru committed Aug 4, 2023
1 parent 0ad895c commit 1389af1
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 29 deletions.
15 changes: 7 additions & 8 deletions lang/correctness/index_by_threadid.jl
Original file line number Diff line number Diff line change
@@ -1,28 +1,27 @@
using Base.Threads
using Base.Threads: threadid, @threads

states = zeros(10)
Threads.@spawn for i = 1:10
Threads.@threads for i = 1:10
# ruleid: index-by-threadid
tid = Threads.threadid()
old_val = states[tid]
new_val = old_val + i
states[tid] = new_val
end

@spawn begin
@threads for i = 1:10
# ruleid: index-by-threadid
tid = threadid()
val = states[tid]
states[tid] = val + 1
end

Threads.@spawn for i = 1:10
@threads :foo for i = 1:10
# ruleid: index-by-threadid
val = states[threadid()]
val = states[Threads.threadid()]
end


Threads.@spawn for i = 1:10
# ruleid: index-by-threadid
Threads.@threads :static for i = 1:10
# ok: index-by-threadid
val = states[Threads.threadid()]
end
31 changes: 31 additions & 0 deletions lang/correctness/index_by_threadid.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
rules:
- id: index-by-threadid
patterns:
- pattern-inside: |
@threads ... for $X = ...
...
end
- pattern-not-inside: |
@threads :static for $X = ...
...
end
- pattern-either:
- pattern: $S[Threads.threadid()]
- pattern: $S[threadid()]
- pattern: |
$TID = Threads.threadid()
...
$Y = $S[$TID]
- pattern: |
$TID = threadid()
...
$Y = $S[$TID]
message: Indexing by `threadid()` may cause race conditions and should be avoided.
metadata:
confidence: LOW
references:
- https://www.julialang.org/blog/2023/07/PSA-dont-use-threadid/
license: LGPL
languages:
- julia
severity: WARNING
21 changes: 0 additions & 21 deletions lang/correctness/index_by_threadid.yml

This file was deleted.

0 comments on commit 1389af1

Please sign in to comment.