[lldb/Util] Use md5 instead of python's hash function.
authorJonas Devlieghere <jonas@devlieghere.com>
Fri, 24 Jan 2020 00:35:42 +0000 (16:35 -0800)
committerJonas Devlieghere <jonas@devlieghere.com>
Fri, 24 Jan 2020 00:37:03 +0000 (16:37 -0800)
Because of the way the Python hash function works, it's not guaranteed
to be the same. This was causing a lot of reproducers to be generated
for the same tests, even though the CWD or arguments didn't change.
Switching to an MD5 hash should fix that.

lldb/utils/lldb-repro/lldb-repro.py

index f7579e8..c1d6299 100755 (executable)
@@ -18,6 +18,7 @@ import sys
 import os
 import tempfile
 import subprocess
+import hashlib
 
 
 def help():
@@ -29,11 +30,12 @@ def main():
         help()
         return 1
 
-    # Compute a hash based on the input arguments and the current working
+    # Compute an MD5 hash based on the input arguments and the current working
     # directory.
-    args = ' '.join(sys.argv[2:])
-    cwd = os.getcwd()
-    input_hash = str(hash((cwd, args)))
+    h = hashlib.md5()
+    h.update(' '.join(sys.argv[2:]))
+    h.update(os.getcwd())
+    input_hash = h.hexdigest()
 
     # Use the hash to "uniquely" identify a reproducer path.
     reproducer_path = os.path.join(tempfile.gettempdir(), input_hash)