Skip to content
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

Getting unmangled names fails with path lenght exceeds limit #81

Open
mishbieg opened this issue Apr 13, 2023 · 0 comments
Open

Getting unmangled names fails with path lenght exceeds limit #81

mishbieg opened this issue Apr 13, 2023 · 0 comments

Comments

@mishbieg
Copy link

mishbieg commented Apr 13, 2023

Running in cmd with Windows 10 and Python 3.8 results in the following error:

puncover --elf-file <some file>
parsing ELF at <some file>
enhancing function sizes
deriving folders
enhancing file elements
enhancing assembly
enhancing call tree
enhancing siblings
unmangling c++ symbols
Traceback (most recent call last):
  File "c:\python38\lib\runpy.py", line 194, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "c:\python38\lib\runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "C:\Python38\Scripts\puncover.exe\__main__.py", line 7, in <module>
  File "c:\python38\lib\site-packages\puncover\puncover.py", line 82, in main
    builder.build_if_needed()
  File "c:\python38\lib\site-packages\puncover\builders.py", line 32, in build_if_needed
    self.build()
  File "c:\python38\lib\site-packages\puncover\builders.py", line 23, in build
    self.collector.enhance(self.src_root)
  File "c:\python38\lib\site-packages\puncover\collector.py", line 435, in enhance
    self.unmangle_cpp_names()
  File "c:\python38\lib\site-packages\puncover\collector.py", line 319, in unmangle_cpp_names
    unmangled_names = self.gcc_tools.get_unmangled_names(symbol_names)
  File "c:\python38\lib\site-packages\puncover\gcc_tools.py", line 46, in get_unmangled_names
    lines_list =  [self.gcc_tool_lines('c++filt', c) for c in chunks(symbol_names)]
  File "c:\python38\lib\site-packages\puncover\gcc_tools.py", line 46, in <listcomp>
    lines_list =  [self.gcc_tool_lines('c++filt', c) for c in chunks(symbol_names)]
  File "c:\python38\lib\site-packages\puncover\gcc_tools.py", line 25, in gcc_tool_lines
    proc = subprocess.Popen([self.gcc_tool_path(name)] + args, stdout=subprocess.PIPE, cwd=cwd)
  File "c:\python38\lib\subprocess.py", line 858, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "c:\python38\lib\subprocess.py", line 1311, in _execute_child
    hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
FileNotFoundError: [WinError 206] Der Dateiname oder die Erweiterung ist zu lang

Setting the default chunk_size form 1000 to 60 in gcc_tools.py -> get_unmangled_names() solved the issue for me. I do not know the exact limit that Windows enforces. For a permanent fix we could iterate the chunk_size until it fails again. It took me a while to figure out that it was the chunk_size. So we should include that fix so that others don't have to search as long.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant