[compiler-rt] r221896 - [ASan] Add process basename to log name and error message to simplify analysis of sanitized systems logs.
Yury Gribov
y.gribov at samsung.com
Thu Nov 13 11:37:54 PST 2014
On 11/13/2014 10:18 PM, David Blaikie wrote:
> On Thu, Nov 13, 2014 at 10:44 AM, Yury Gribov <y.gribov at samsung.com> wrote:
>
>> On 11/13/2014 08:21 PM, David Blaikie wrote:
>>
>>> On Thu, Nov 13, 2014 at 8:01 AM, Yury Gribov <y.gribov at samsung.com>
>>> wrote:
>>>
>>> Author: ygribov
>>>> Date: Thu Nov 13 10:01:23 2014
>>>> New Revision: 221896
>>>>
>>>> URL: http://llvm.org/viewvc/llvm-project?rev=221896&view=rev
>>>> Log:
>>>> [ASan] Add process basename to log name and error message to simplify
>>>> analysis of sanitized systems logs.
>>>>
>>>> Reviewed at http://reviews.llvm.org/D5724
>>>>
>>>> Modified:
>>>> compiler-rt/trunk/lib/asan/asan_report.cc
>>>> compiler-rt/trunk/lib/msan/msan_interceptors.cc
>>>> compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.cc
>>>> compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.h
>>>> compiler-rt/trunk/lib/sanitizer_common/sanitizer_flags.cc
>>>> compiler-rt/trunk/lib/sanitizer_common/sanitizer_linux.cc
>>>> compiler-rt/trunk/lib/sanitizer_common/sanitizer_linux.h
>>>> compiler-rt/trunk/lib/sanitizer_common/sanitizer_mac.cc
>>>> compiler-rt/trunk/lib/sanitizer_common/sanitizer_posix.cc
>>>> compiler-rt/trunk/lib/sanitizer_common/sanitizer_printf.cc
>>>>
>>>> compiler-rt/trunk/lib/sanitizer_common/sanitizer_
>>>> symbolizer_posix_libcdep.cc
>>>> compiler-rt/trunk/lib/sanitizer_common/sanitizer_win.cc
>>>> compiler-rt/trunk/test/asan/TestCases/log-path_test.cc
>>>> compiler-rt/trunk/test/asan/TestCases/log_path_fork_test.
>>>> cc.disabled
>>>>
>>>> Modified: compiler-rt/trunk/lib/asan/asan_report.cc
>>>> URL:
>>>> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/
>>>> asan/asan_report.cc?rev=221896&r1=221895&r2=221896&view=diff
>>>>
>>>> ============================================================
>>>> ==================
>>>> --- compiler-rt/trunk/lib/asan/asan_report.cc (original)
>>>> +++ compiler-rt/trunk/lib/asan/asan_report.cc Thu Nov 13 10:01:23 2014
>>>> @@ -53,7 +53,7 @@ void AppendToErrorMessageBuffer(const ch
>>>> buffer, remaining);
>>>> error_message_buffer[error_message_buffer_size - 1] = '\0';
>>>> // FIXME: reallocate the buffer instead of truncating the message.
>>>> - error_message_buffer_pos += remaining > length ? length : remaining;
>>>> + error_message_buffer_pos += Min(remaining, length);
>>>> }
>>>> }
>>>>
>>>>
>>>> Modified: compiler-rt/trunk/lib/msan/msan_interceptors.cc
>>>> URL:
>>>> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/
>>>> msan/msan_interceptors.cc?rev=221896&r1=221895&r2=221896&view=diff
>>>>
>>>> ============================================================
>>>> ==================
>>>> --- compiler-rt/trunk/lib/msan/msan_interceptors.cc (original)
>>>> +++ compiler-rt/trunk/lib/msan/msan_interceptors.cc Thu Nov 13 10:01:23
>>>> 2014
>>>> @@ -803,7 +803,7 @@ INTERCEPTOR(SSIZE_T, recvfrom, int fd, v
>>>> __msan_unpoison(buf, res);
>>>> if (srcaddr) {
>>>> SIZE_T sz = *addrlen;
>>>> - __msan_unpoison(srcaddr, (sz < srcaddr_sz) ? sz : srcaddr_sz);
>>>> + __msan_unpoison(srcaddr, Min(sz, srcaddr_sz));
>>>> }
>>>> }
>>>> return res;
>>>>
>>>> Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.cc
>>>> URL:
>>>> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/
>>>> sanitizer_common/sanitizer_common.cc?rev=221896&r1=
>>>> 221895&r2=221896&view=diff
>>>>
>>>> ============================================================
>>>> ==================
>>>> --- compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.cc
>>>> (original)
>>>> +++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.cc Thu Nov
>>>> 13
>>>> 10:01:23 2014
>>>> @@ -160,6 +160,8 @@ const char *StripModuleName(const char *
>>>> return 0;
>>>> if (const char *slash_pos = internal_strrchr(module, '/'))
>>>> return slash_pos + 1;
>>>> + else if (const char *backslash_pos = internal_strrchr(module, '\\'))
>>>> + return backslash_pos + 1;
>>>> return module;
>>>> }
>>>>
>>>> @@ -225,6 +227,24 @@ void DecreaseTotalMmap(uptr size) {
>>>> atomic_fetch_sub(&g_total_mmaped, size, memory_order_relaxed);
>>>> }
>>>>
>>>> +static BlockingMutex binary_name_cache_lock(LINKER_INITIALIZED);
>>>>
>>>>
>>> This breaks a clang build of compiler-rt:
>>>
>>
>> Ok, I thought compiler-rt with standard setup is built with clang, silly
>> me.
>
>
> You're right, it should be - I think it is on my system. Not sure what
> might be going wrong here for you...
>
>
>>
>>
>> llvm/src/projects/compiler-rt/lib/sanitizer_common/
>>> sanitizer_common.cc:230:22:
>>> error: declaration requires a global constructor
>>> [-Werror,-Wglobal-constructors]
>>> static BlockingMutex binary_name_cache_lock(LINKER_INITIALIZED);
>>> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>>
>>> While LINKER_INITIALIZED might sound nice, it seems it doesn't actually do
>>> what it says on the tin - BlockingMutex still has a user defined (albeit
>>> no-op in an optimized build) ctor, which produces a global ctor to run it,
>>> etc...
>>>
>>
>> That's interesting, we have tons of places which use this pattern but only
>> this one fails.
>
>
> Only sanitizer_common and tsan has the global-constructors warning on. And
> in sanitizer_common I don't see any other instances of this.
>
>
>> I'll need some time to repro here. Does s/(LINKER_INITIALIZED)// solve the
>> problem by chance?
>
>
> Nope - still a global constructor due to the user defined
>
>
>> What would be the right way to proceed now:
>> * apply temp fix
>> * revert my patch
>>
>
> I expect this is the right answer ^ in the short term. Revert and
> discuss/figure out the right fix.
Done in r221912.
More information about the llvm-commits
mailing list