[all-commits] [llvm/llvm-project] 73811d: [lldb] Move copying of files into reproducer out o...

Jonas Devlieghere via All-commits all-commits at lists.llvm.org
Fri Oct 23 12:34:35 PDT 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: 73811d32c72d0760c8c2066e4675dd6f1a7bbef7
      https://github.com/llvm/llvm-project/commit/73811d32c72d0760c8c2066e4675dd6f1a7bbef7
  Author: Jonas Devlieghere <jonas at devlieghere.com>
  Date:   2020-10-23 (Fri, 23 Oct 2020)

  Changed paths:
    M lldb/include/lldb/API/SBReproducer.h
    M lldb/include/lldb/Host/FileSystem.h
    M lldb/include/lldb/Utility/Reproducer.h
    M lldb/include/lldb/Utility/ReproducerProvider.h
    M lldb/source/API/SBReproducer.cpp
    M lldb/source/Commands/CommandObjectReproducer.cpp
    M lldb/source/Host/common/FileSystem.cpp
    M lldb/source/Plugins/ExpressionParser/Clang/ModuleDependencyCollector.h
    M lldb/source/Utility/Reproducer.cpp
    M lldb/source/Utility/ReproducerProvider.cpp
    M lldb/test/Shell/Reproducer/TestCaptureEnvOverride.test
    A lldb/test/Shell/Reproducer/TestFinalize.test
    M lldb/tools/driver/Driver.cpp
    M lldb/tools/driver/Options.td

  Log Message:
  -----------
  [lldb] Move copying of files into reproducer out of process

For performance reasons the reproducers don't copy the files captured by
the file collector eagerly, but wait until the reproducer needs to be
generated.

This is a problematic when LLDB crashes and we have to do all this
signal-unsafe work in the signal handler. This patch uses a similar
trick to clang, which has the driver invoke a new cc1 instance to do all
this work out-of-process.

This patch moves the writing of the mapping file as well as copying over
the reproducers into a separate process spawned when lldb crashes.

Differential revision: https://reviews.llvm.org/D89600




More information about the All-commits mailing list