- Notifications
You must be signed in to change notification settings - Fork 15.1k
Description
| Bugzilla Link | 34056 |
| Resolution | FIXED |
| Resolved on | Aug 10, 2017 10:13 |
| Version | trunk |
| OS | Linux |
| Blocks | #33196 |
| CC | @zmodem,@MatzeB,@rnk,@TNorthover |
Extended Description
Chrome and all of its test binaries fail when built in a debug build on arm32. We bisected this down to r304267.
https://bugs.chromium.org/p/chromium/issues/detail?id=742563#c15 has some analysis on what's wrong. The file mentioned there is https://cs.chromium.org/chromium/src/base/threading/thread_local_storage.cc?q=base/threading/thread_local_storage.cc&sq=package:chromium&dr&l=320
TlsVectorEntry* tls_data = static_cast<TlsVectorEntry*>(
PlatformThreadLocalStorage::GetTLSValue(
base::subtle::NoBarrier_Load(&g_native_tls_key)));
if (!tls_data)
tls_data = ConstructTlsVector();
DCHECK_NE(slot_, kInvalidSlotValue);
DCHECK_LT(slot_, kThreadLocalStorageSize);
tls_data[slot_].data = value;
tls_data[slot_].version = version_;
"First ThreadLocalStorage::StaticSlot::Set(void* value) gets called, then when ThreadLocalStorage::StaticSlot::Get() is called later on, tls_data is null, and ConstructTlsVector() is called again." (this is the bug)