[llvm] Avoid a race condition in opt-viewer/optrecord (PR #131214)

Miro HronĨok via llvm-commits llvm-commits at lists.llvm.org
Thu Mar 20 07:58:09 PDT 2025


================
@@ -64,17 +64,19 @@ class Remark(yaml.YAMLObject):
 
     default_demangler = "c++filt -n"
     demangler_proc = None
+    demangler_lock = Lock()
 
     @classmethod
     def set_demangler(cls, demangler):
         cls.demangler_proc = subprocess.Popen(
             demangler.split(), stdin=subprocess.PIPE, stdout=subprocess.PIPE
         )
-        cls.demangler_lock = Lock()
 
     @classmethod
     def demangle(cls, name):
         with cls.demangler_lock:
+            if not cls.demangler_proc:
----------------
hroncok wrote:

I was even getting stuff like:

```
  File "/builddir/build/BUILD/llvm-20.1.0-build/llvm-project-20.1.0.src/llvm/tools/opt-viewer/optrecord.py", line 160, in DemangledFunctionName
    return self.demangle(self.Function)
           ~~~~~~~~~~~~~^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/llvm-20.1.0-build/llvm-project-20.1.0.src/llvm/tools/opt-viewer/optrecord.py", line 85, in demangle
    cls.demangler_proc.stdin.write((name + "\n").encode("utf-8"))
    ^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'stdin'
```

https://github.com/llvm/llvm-project/pull/131214


More information about the llvm-commits mailing list