Data races in the caching implementation of hashCode and hasheq of several Clojure classes

Description

I first noticed a data race in the implementation of hashCode and hasheq for class clojure.lang.ASeq, and decided to look through the implementation of all such methods in Clojure 1.10.1 to see if there were any others. I found only one more, in method hasheq of class clojure.lang.Symbol.

Background on the subtle difference between one correct, and one incorrect, implementation of a caching hashCode method: http://jeremymanson.blogspot.com/2008/12/benign-data-races-in-java.html

Environment

None

Assignee

Unassigned

Reporter

Andy Fingerhut

Labels

None

Approval

None

Patch

None

Affects versions

Priority

Major
Configure