-
Notifications
You must be signed in to change notification settings - Fork 13.4k
AttributeError: type object 'Missed' has no attribute 'demangler_lock'
running opt-viewer
#62403
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
I ran into this same issue when running an existing Here's the crash I'm seeing, with some repeated messages removed: $ python3 --version
Python 3.12.0
$ python3 llvm/tools/opt-viewer/opt-viewer.py -s llvm/test/tools/opt-viewer/Inputs -o tmp llvm/test/tools/opt-viewer/Inputs/basic/or.yaml --no-highlight --demangler=./build/bin/llvm-cxxfilt
/Users/neboat/Software/llvm-project/llvm/tools/opt-viewer/opt-viewer.py:138: SyntaxWarning: invalid escape sequence '\S'
indent = re.sub("\S", " ", indent)
Reading YAML files...
/Users/neboat/Software/llvm-project/llvm/tools/opt-viewer/opt-viewer.py:138: SyntaxWarning: invalid escape sequence '\S'
indent = re.sub("\S", " ", indent)
(message repeats about a dozen times)
Rendering index page...
Rendering HTML files...
llvm/tools/opt-viewer/opt-viewer.py:138: SyntaxWarning: invalid escape sequence '\S'
indent = re.sub("\S", " ", indent)
(message repeats about a dozen times)
2 of 2multiprocessing.pool.RemoteTraceback:
"""
Traceback (most recent call last):
File "/Users/neboat/.pyenv/versions/3.12.0/lib/python3.12/multiprocessing/pool.py", line 125, in worker
result = (True, func(*args, **kwds))
^^^^^^^^^^^^^^^^^^^
File "/Users/neboat/.pyenv/versions/3.12.0/lib/python3.12/multiprocessing/pool.py", line 48, in mapstar
return list(map(*args))
^^^^^^^^^^^^^^^^
File "/Users/neboat/Software/llvm-project/llvm/tools/opt-viewer/optpmap.py", line 25, in _wrapped_func
return func(argument, filter_)
^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/neboat/Software/llvm-project/llvm/tools/opt-viewer/opt-viewer.py", line 293, in _render_file
SourceFileRenderer(source_dir, output_dir, filename, no_highlight).render(remarks)
File "/Users/neboat/Software/llvm-project/llvm/tools/opt-viewer/opt-viewer.py", line 216, in render
self.render_source_lines(self.source_stream, line_remarks)
File "/Users/neboat/Software/llvm-project/llvm/tools/opt-viewer/opt-viewer.py", line 123, in render_source_lines
self.render_inline_remarks(remark, html_line)
File "/Users/neboat/Software/llvm-project/llvm/tools/opt-viewer/opt-viewer.py", line 126, in render_inline_remarks
inlining_context = r.DemangledFunctionName
^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/neboat/Software/llvm-project/llvm/tools/opt-viewer/optrecord.py", line 153, in DemangledFunctionName
return self.demangle(self.Function)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/neboat/Software/llvm-project/llvm/tools/opt-viewer/optrecord.py", line 77, in demangle
with cls.demangler_lock:
^^^^^^^^^^^^^^^^^^
AttributeError: type object 'Missed' has no attribute 'demangler_lock'. Did you mean: 'demangler_proc'?
"""
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/Users/neboat/Software/llvm-project/llvm/tools/opt-viewer/opt-viewer.py", line 471, in <module>
main()
File "/Users/neboat/Software/llvm-project/llvm/tools/opt-viewer/opt-viewer.py", line 457, in main
generate_report(
File "/Users/neboat/Software/llvm-project/llvm/tools/opt-viewer/opt-viewer.py", line 376, in generate_report
optpmap.pmap(
File "/Users/neboat/Software/llvm-project/llvm/tools/opt-viewer/optpmap.py", line 57, in pmap
result = pool.map(_wrapped_func, func_and_args, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/neboat/.pyenv/versions/3.12.0/lib/python3.12/multiprocessing/pool.py", line 367, in map
return self._map_async(func, iterable, mapstar, chunksize).get()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/neboat/.pyenv/versions/3.12.0/lib/python3.12/multiprocessing/pool.py", line 774, in get
raise self._value
AttributeError: type object 'Missed' has no attribute 'demangler_lock' I'm not seeing these issues when using Python 3.9 on the same system. In addition, if I run I'm using LLVM 5fdb70b (HEAD of |
These tests currently fail on some Macs for some versions of Python, causing our CI to fail. See, e.g., llvm#62403 and references therein.
These tests currently fail on some Macs for some versions of Python, causing our CI to fail. See, e.g., llvm#62403 and references therein.
These tests currently fail on some Macs for some versions of Python, causing our CI to fail. See, e.g., llvm#62403 and references therein.
These tests currently fail on some Macs for some versions of Python, causing our CI to fail. See, e.g., llvm#62403 and references therein.
These tests currently fail on some Macs for some versions of Python, causing our CI to fail. See, e.g., llvm#62403 and references therein.
These tests currently fail on some Macs for some versions of Python, causing our CI to fail. See, e.g., llvm#62403 and references therein.
Is this issue closed? Seeing same error with Python 3.12 on my Mac book (Sequoia 15.1.1) |
These tests currently fail on some Macs for some versions of Python, causing our CI to fail. See, e.g., llvm#62403 and references therein.
We see a very similar (if not the same) issue when trying to build the Fedora llvm package with Python 3.14: https://bugzilla.redhat.com/show_bug.cgi?id=2336915 Naïvely, trying this: --- a/llvm/tools/opt-viewer/optrecord.py
+++ b/llvm/tools/opt-viewer/optrecord.py
@@ -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:
+ cls.set_demangler(cls.default_demangler)
cls.demangler_proc.stdin.write((name + "\n").encode("utf-8"))
cls.demangler_proc.stdin.flush()
return cls.demangler_proc.stdout.readline().rstrip().decode("utf-8")
@@ -323,8 +325,6 @@ def get_remarks(input_file, filter_=None):
def gather_results(filenames, num_jobs, should_print_progress, filter_=None):
if should_print_progress:
print("Reading YAML files...")
- if not Remark.demangler_proc:
- Remark.set_demangler(Remark.default_demangler)
remarks = optpmap.pmap(
get_remarks, filenames, num_jobs, should_print_progress, filter_
) |
See https://bugzilla.redhat.com/2336915 See https://reviews.llvm.org/D41784?id= See androm3da/optviewer-demo#4 (comment) Fixes llvm#62403 The race condition happened when the demangler_proc was being set. The locking mechanism itself happened too late. This way, the lock always exists (to avoid a race when creating it) and is always used when *creating* demangler_proc. I don't have any prior experience with the codebase and I cannot guarantee the behavior is correct. It appears to get rid of the race (which I was seeing consistently). multiprocessing.pool.RemoteTraceback: """ Traceback (most recent call last): File "/usr/lib64/python3.14/multiprocessing/pool.py", line 125, in worker result = (True, func(*args, **kwds)) ~~~~^^^^^^^^^^^^^^^ File "/usr/lib64/python3.14/multiprocessing/pool.py", line 48, in mapstar return list(map(*args)) File "/builddir/build/BUILD/llvm-19.1.6-build/llvm-project-19.1.6.src/llvm/tools/opt-viewer/optpmap.py", line 25, in _wrapped_func return func(argument, filter_) File "/builddir/build/BUILD/llvm-19.1.6-build/llvm-project-19.1.6.src/llvm/tools/opt-viewer/opt-viewer.py", line 293, in _render_file SourceFileRenderer(source_dir, output_dir, filename, no_highlight).render(remarks) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ File "/builddir/build/BUILD/llvm-19.1.6-build/llvm-project-19.1.6.src/llvm/tools/opt-viewer/opt-viewer.py", line 216, in render self.render_source_lines(self.source_stream, line_remarks) ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/builddir/build/BUILD/llvm-19.1.6-build/llvm-project-19.1.6.src/llvm/tools/opt-viewer/opt-viewer.py", line 123, in render_source_lines self.render_inline_remarks(remark, html_line) ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^ File "/builddir/build/BUILD/llvm-19.1.6-build/llvm-project-19.1.6.src/llvm/tools/opt-viewer/opt-viewer.py", line 126, in render_inline_remarks inlining_context = r.DemangledFunctionName ^^^^^^^^^^^^^^^^^^^^^^^ File "/builddir/build/BUILD/llvm-19.1.6-build/llvm-project-19.1.6.src/llvm/tools/opt-viewer/optrecord.py", line 153, in DemangledFunctionName return self.demangle(self.Function) ~~~~~~~~~~~~~^^^^^^^^^^^^^^^ File "/builddir/build/BUILD/llvm-19.1.6-build/llvm-project-19.1.6.src/llvm/tools/opt-viewer/optrecord.py", line 77, in demangle with cls.demangler_lock: ^^^^^^^^^^^^^^^^^^ AttributeError: type object 'Passed' has no attribute 'demangler_lock'. Did you mean: 'demangler_proc'? """
It worked for me. #131214 |
See https://bugzilla.redhat.com/2336915 See https://reviews.llvm.org/D41784?id= See androm3da/optviewer-demo#4 (comment) Fixes llvm/llvm-project#62403. The race condition happened when the demangler_proc was being set. The locking mechanism itself happened too late. This way, the lock always exists (to avoid a race when creating it) and is always used when *creating* demangler_proc.
These tests currently fail on some Macs for some versions of Python, causing our CI to fail. See, e.g., llvm#62403 and references therein.
See https://bugzilla.redhat.com/2336915 See https://reviews.llvm.org/D41784?id= See androm3da/optviewer-demo#4 (comment) Fixes llvm/llvm-project#62403. The race condition happened when the demangler_proc was being set. The locking mechanism itself happened too late. This way, the lock always exists (to avoid a race when creating it) and is always used when *creating* demangler_proc. (cherry picked from commit e0f8898)
On an M1 Max.
Compiling this file https://github.com/ibogosavljevic/johnysswlab/blob/f677ea00bde2fcc69f48e36d2028619e428c05ef/2022-12-optimizationreport/compiler-optimizations.cpp
Installed deps with
pip3 install pygments
andpip3 install PyYAML
.Works fine if I pass
-j 1
too.Also mentioned here androm3da/optviewer-demo#4 (comment) and here https://reviews.llvm.org/D41784.
This is at LLVM e23891a (yesterday's HEAD).
@anemet
The text was updated successfully, but these errors were encountered: