[build2] hang in build2::cc::compile::extract_headers

Dane Springmeyer dane at mapbox.com
Sun Feb 4 03:53:51 UTC 2018


> On Dec 8, 2017, at 12:28 PM, Boris Kolpackov <boris at codesynthesis.com> wrote:
> 
> Dane Springmeyer <dane at mapbox.com> writes:
> 
>> I've built build2 0.6.2 on OS X 10.12 and have encountered a hang
>> during header extraction.
> 
> I've managed to reproduce this, thanks for the test case!

You are welcome, glad it was reproducible!

> We've
> actually hit a similar situation when running out of disk space
> so in the latest staged version it no longer hangs but issues
> this diagnostics:
> 
> error: inconsistent C++ compiler behavior
>  info: clang++ -w -MQ ^ -x c++ -MD -E -frewrite-includes -MF - -o /tmp/build2-testcase/test/unit.o.ii /tmp/build2-testcase/test/unit.cxx
>  info: clang++ -w -MQ ^ -x c++ -M -MG /tmp/build2-testcase/test/unit.cxx
>  info: perhaps you are running out of disk space?
>  info: while extracting header dependencies from test/cxx{unit}
>  info: while applying rule cxx.compile to update test/obje{unit}
>  info: while applying rule cxx.link to update test/exe{run-test}
>  info: while applying rule alias to update dir{test/}
>  info: while applying rule alias to update dir{./}
> 
> Digging further revealed that this is a bug in Clang which I've
> reported:
> 
> https://bugs.llvm.org/show_bug.cgi?id=35580
> 
> If you would like to try the latest stage, you can get it here:
> 
> https://stage.build2.org/0/

Finally had a chance to test and confirmed it works now. Thank you. Testing with `build2 0.7.0-a.0.7005f1f5b525705f` I see:

error: inconsistent C++ compiler behavior
  info: g++ -w -MQ ^ -x c++ -MD -E -frewrite-includes -MF - -o /Users/dane/projects/build2-testcase/test/unit.o.ii /Users/dane/projects/build2-testcase/test/unit.cxx
  info: g++ -w -MQ ^ -x c++ -M -MG /Users/dane/projects/build2-testcase/test/unit.cxx
  info: perhaps you are running out of disk space?
  info: while extracting header dependencies from test/cxx{unit}
  info: while applying rule cxx.compile to update test/obje{unit}
  info: while applying rule cxx.link to update test/exe{run-test}
  info: while applying rule alias to update dir{test/}
  info: while applying rule alias to update dir{./}
info: failed to update dir{./}

Rather than a hang, which is great.

Dane


More information about the users mailing list