<div dir="ltr">looking into it.<div><br></div><div>thanks,</div><div><br></div><div>David</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Nov 16, 2015 at 3:58 PM, Bruno Cardoso Lopes <span dir="ltr"><<a href="mailto:bruno.cardoso@gmail.com" target="_blank">bruno.cardoso@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi David,<br>
<br>
There are also ubsan errors due to this commit.<br>
More info: <a href="http://lab.llvm.org:8080/green/job/clang-stage2-cmake-RgSan_check/707/consoleFull#-51045544449ba4694-19c4-4d7e-bec5-911270d8a58c" rel="noreferrer" target="_blank">http://lab.llvm.org:8080/green/job/clang-stage2-cmake-RgSan_check/707/consoleFull#-51045544449ba4694-19c4-4d7e-bec5-911270d8a58c</a><br>
But it affects all builds up to today.<br>
<br>
One example:<br>
<br>
FAIL: Clang :: Profile/c-attributes.c (5211 of 24157)<br>
******************** TEST 'Clang :: Profile/c-attributes.c' FAILED<br>
********************<br>
Script:<br>
--<br>
llvm-profdata merge<br>
/Users/buildslave/jenkins/sharedspace/clang-stage2-cmake-RgSan@2/llvm/tools/clang/test/Profile/Inputs/c-attributes.proftext<br>
-o /Users/buildslave/jenkins/sharedspace/clang-stage2-cmake-RgSan@2/clang-build/tools/clang/test/Profile/Output/c-attributes.c.tmp.profdata<br>
/Users/buildslave/jenkins/sharedspace/clang-stage2-cmake-RgSan@2/clang-build/./bin/clang<br>
/Users/buildslave/jenkins/sharedspace/clang-stage2-cmake-RgSan@2/llvm/tools/clang/test/Profile/c-attributes.c<br>
-o - -mllvm -disable-llvm-optzns -emit-llvm -S<br>
-fprofile-instr-use=/Users/buildslave/jenkins/sharedspace/clang-stage2-cmake-RgSan@2/clang-build/tools/clang/test/Profile/Output/c-attributes.c.tmp.profdata<br>
| /Users/buildslave/jenkins/sharedspace/clang-stage2-cmake-RgSan@2/clang-build/./bin/FileCheck<br>
/Users/buildslave/jenkins/sharedspace/clang-stage2-cmake-RgSan@2/llvm/tools/clang/test/Profile/c-attributes.c<br>
--<br>
Exit Code: 2<br>
<br>
Command Output (stderr):<br>
--<br>
/Users/buildslave/jenkins/sharedspace/clang-stage2-cmake-RgSan@2/llvm/lib/ProfileData/InstrProf.cpp:275:7:<br>
runtime error: load of misaligned address 0x61a00001dc89 for type<br>
'const uint32_t' (aka 'const unsigned int'), which requires 4 byte<br>
alignment<br>
0x61a00001dc89: note: pointer points here<br>
00 00 00 00 08 00 00 00 00 00 00 00 01 00 fa d5 8d e7 36 64 95 db<br>
04 00 00 00 00 00 00 00 48 00<br>
^<br>
SUMMARY: AddressSanitizer: undefined-behavior<br>
/Users/buildslave/jenkins/sharedspace/clang-stage2-cmake-RgSan@2/llvm/lib/ProfileData/InstrProf.cpp:275:7<br>
in<br>
0 clang-3.8 0x00000001108e0f6e<br>
llvm::sys::PrintStackTrace(llvm::raw_ostream&) + 286<br>
1 clang-3.8 0x00000001108df0c5<br>
llvm::sys::RunSignalHandlers() + 213<br>
2 clang-3.8 0x00000001108e2216<br>
SignalHandler(int) + 662<br>
3 libsystem_platform.dylib 0x00007fff8d239f1a _sigtramp + 26<br>
4 libsystem_platform.dylib 0x00007fff69298784 _sigtramp + 3691374724<br>
5 libsystem_c.dylib 0x00007fff88edd9b3 abort + 129<br>
6 libclang_rt.asan_osx_dynamic.dylib 0x000000011d14f8d6<br>
__sanitizer::Abort() + 6<br>
Stack dump:<br>
<br>
But there are total of 30 failing tests:<br>
<br>
Failing Tests (30):<br>
Clang :: Profile/c-attributes.c<br>
Clang :: Profile/c-captured.c<br>
Clang :: Profile/c-counter-overflows.c<br>
Clang :: Profile/c-general.c<br>
Clang :: Profile/c-outdated-data.c<br>
Clang :: Profile/c-unprofiled-blocks.c<br>
Clang :: Profile/cxx-class.cpp<br>
Clang :: Profile/cxx-lambda.cpp<br>
Clang :: Profile/cxx-rangefor.cpp<br>
Clang :: Profile/cxx-templates.cpp<br>
Clang :: Profile/func-entry.c<br>
Clang :: Profile/gcc-flag-compatibility.c<br>
Clang :: Profile/objc-general.m<br>
LLVM :: tools/llvm-cov/binary-formats.c<br>
LLVM :: tools/llvm-cov/showLineExecutionCounts.cpp<br>
LLVM :: tools/llvm-cov/showRegionMarkers.cpp<br>
LLVM :: tools/llvm-cov/universal-binary.c<br>
LLVM :: tools/llvm-profdata/count-mismatch.proftext<br>
LLVM :: tools/llvm-profdata/general.proftext<br>
LLVM :: tools/llvm-profdata/hash-mismatch.proftext<br>
LLVM :: tools/llvm-profdata/multiple-inputs.test<br>
LLVM-Unit ::<br>
ProfileData/ProfileDataTests/CoverageMappingTest.basic_coverage_iteration<br>
LLVM-Unit ::<br>
ProfileData/ProfileDataTests/CoverageMappingTest.combine_regions<br>
LLVM-Unit ::<br>
ProfileData/ProfileDataTests/CoverageMappingTest.dont_combine_expansions<br>
LLVM-Unit :: ProfileData/ProfileDataTests/InstrProfTest.get_function_counts<br>
LLVM-Unit ::<br>
ProfileData/ProfileDataTests/InstrProfTest.get_icall_data_merge1<br>
LLVM-Unit ::<br>
ProfileData/ProfileDataTests/InstrProfTest.get_icall_data_read_write<br>
LLVM-Unit ::<br>
ProfileData/ProfileDataTests/InstrProfTest.get_icall_data_read_write_big_endian<br>
LLVM-Unit ::<br>
ProfileData/ProfileDataTests/InstrProfTest.get_instr_prof_record<br>
LLVM-Unit ::<br>
ProfileData/ProfileDataTests/InstrProfTest.write_and_read_one_function<br>
<div><div class="h5"><br>
On Tue, Nov 10, 2015 at 8:30 AM, Diego Novillo via llvm-commits<br>
<<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a>> wrote:<br>
> Thanks!<br>
><br>
> On Nov 10, 2015 11:24, "Xinliang David Li" <<a href="mailto:davidxl@google.com">davidxl@google.com</a>> wrote:<br>
>><br>
>> I should have a fix soon.<br>
>><br>
>> David<br>
>><br>
>> On Tue, Nov 10, 2015 at 8:10 AM, Diego Novillo <<a href="mailto:dnovillo@google.com">dnovillo@google.com</a>><br>
>> wrote:<br>
>>><br>
>>><br>
>>><br>
>>> On Mon, Nov 9, 2015 at 7:24 PM, Xinliang David Li via llvm-commits<br>
>>> <<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a>> wrote:<br>
>>><br>
>>>> +std::unique_ptr<ValueProfData><br>
>>>> +ValueProfData::serializeFrom(const InstrProfRecord &Record) {<br>
>>>> + uint32_t TotalSize = getSize(Record);<br>
>>>> + std::unique_ptr<ValueProfData> VPD(<br>
>>>> + reinterpret_cast<ValueProfData *>(new char[TotalSize]));<br>
>>><br>
>>><br>
>>> David, this is causing ASan failures on the LLVM testsuite.<br>
>>> Specifically, this allocation via new[] is then deallocated with just delete<br>
>>> by the runtime std::unique_ptr support. So, ASan complains with:<br>
>>><br>
>>> ERROR: AddressSanitizer: alloc-dealloc-mismatch (operator new [] vs<br>
>>> operator delete) on 0x60200000ee90<br>
>>><br>
>>> #0 0x4de26b in operator delete(void*)<br>
>>> llvm/projects/compiler-rt/lib/asan/asan_new_delete.cc:94:3<br>
>>> #1 0x7dfaf0 in std::unique_ptr<llvm::IndexedInstrProf::ValueProfData,<br>
>>> std::default_delete<llvm::IndexedInstrProf::ValueProfData> >::~unique_ptr()<br>
>>> [...]/bits/unique_ptr.h:236:4<br>
>>> #2 0x7fd8c6 in (anonymous<br>
>>> namespace)::InstrProfRecordTrait::EmitData(llvm::raw_ostream&,<br>
>>> llvm::StringRef, llvm::SmallDenseMap<unsigned long, llvm::InstrProfRecord,<br>
>>> 1u, llvm::DenseMapInfo<unsigned long>, llvm::detail::DenseMapPair<unsigned<br>
>>> long, llvm::InstrProfRecord> > const*, unsigned long)<br>
>>> llvm/lib/ProfileData/InstrProfWriter.cpp:85:5<br>
>>><br>
>>> 0x60200000ee90 is located 0 bytes inside of 8-byte region<br>
>>> [0x60200000ee90,0x60200000ee98)<br>
>>> allocated by thread T0 here:<br>
>>> #0 0x4dde1b in operator new[](unsigned long)<br>
>>> llvm/projects/compiler-rt/lib/asan/asan_new_delete.cc:64:37<br>
>>> #1 0x7de5e1 in<br>
>>> llvm::IndexedInstrProf::ValueProfData::serializeFrom(llvm::InstrProfRecord<br>
>>> const&) llvm/lib/ProfileData/InstrProf.cpp:251:41<br>
>>> #2 0x7fd883 in (anonymous<br>
>>> namespace)::InstrProfRecordTrait::EmitData(llvm::raw_ostream&,<br>
>>> llvm::StringRef, llvm::SmallDenseMap<unsigned long, llvm::InstrProfRecord,<br>
>>> 1u, llvm::DenseMapInfo<unsigned long>, llvm::detail::DenseMapPair<unsigned<br>
>>> long, llvm::InstrProfRecord> > const*, unsigned long)<br>
>>> llvm/lib/ProfileData/InstrProfWriter.cpp:81:11<br>
>>><br>
>>><br>
>>><br>
>>> Not quite sure what the right fix for this usage pattern is wrt<br>
>>> std::unique_ptr. Mind if I revert the patch while you find a fix?<br>
>>><br>
>>><br>
>>> Thanks. Diego.<br>
>><br>
>><br>
><br>
</div></div>> _______________________________________________<br>
> llvm-commits mailing list<br>
> <a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a><br>
> <a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
><br>
<span class="HOEnZb"><font color="#888888"><br>
<br>
<br>
--<br>
Bruno Cardoso Lopes<br>
<a href="http://www.brunocardoso.cc" rel="noreferrer" target="_blank">http://www.brunocardoso.cc</a><br>
</font></span></blockquote></div><br></div>