Skip to content
  • Julian Lettner's avatar
    [sanitizer_common] Replace forkpty with posix_spawn on Darwin · 399408a9
    Julian Lettner authored
    On Darwin, we currently use forkpty to communicate with the "atos"
    symbolizer. There are several problems that fork[pty] has, e.g. that
    after fork, interceptors are still active and this sometimes causes
    crashes or hangs. This is especially problematic for TSan, which uses
    interceptors for OS-provided locks and mutexes, and even Libc functions
    use those.
    
    This patch replaces forkpty with posix_spawn on Darwin. Since
    posix_spawn doesn't fork (at least on Darwin), the interceptors are not
    a problem. Another benefit is that we'll handle post-fork failures (e.g.
    sandbox disallows "exec") gracefully now.
    
    Related revisions and previous attempts that were blocked by or had to
    be revered due to test failures:
    https://reviews.llvm.org/D48451
    https://reviews.llvm.org/D40032
    
    Reviewed By: kubamracek
    
    Differential Revision: https://reviews.llvm.org/D65253
    
    llvm-svn: 368947
    399408a9
Loading