New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 666839 link

Starred by 3 users

Issue metadata

Status: Verified
Owner: ----
Closed: Dec 2016
Cc:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 3
Type: Bug



Sign in to add a comment

Reland futex syscall in SpinLockDelay() for ARM

Project Member Reported by llozano@chromium.org, Nov 18 2016

Issue description

starting with 56.0.2923.0

we are seeing the error below. 
I dont understand why this was not caught by the linux builders? Maybe linux builders are not using -mthumb?
cc'ing Hans and Nico in case theyu know something. 

I looked at the changed that went into this version and I believe the commit causing this problem is:

https://chromium.googlesource.com/chromium/src/+log/56.0.2920.0..56.0.2923.0?pretty=fuller&n=10000
commit	7f1336053e39737671a52ca7a265007e9024ee8a	
author	matteo.franchin <matteo.franchin@arm.com>	Wed Nov 16 21:11:04 2016
committer	Commit bot <commit-bot@chromium.org>	Wed Nov 16 21:16:41 2016
tcmalloc: Use futex syscall in SpinLockDelay() for ARM.



Error details: for -march=armv8-a+crc


chromeos-chrome-56.0.2923.0_rc-r1: FAILED: obj/base/allocator/tcmalloc/spinlock_internal.o 
chromeos-chrome-56.0.2923.0_rc-r1: armv7a-cros-linux-gnueabi-clang++ -B/usr/x86_64-pc-linux-gnu/armv7a-cros-linux-gnueabi/binutils-bin/2.25.51-gold -MMD -MF obj/base/allocator/tcmalloc/spinlock_internal.o.d -DNO_HEAP_CHECK -DV8_DEPRECATION_WARNINGS -DENABLE_NOTIFICATIONS -DENABLE_PLUGINS=1 -DENABLE_PDF=1 -DUSE_UDEV -DUI_COMPOSITOR_IMAGE_TRANSPORT -DUSE_ASH=1 -DUSE_AURA=1 -DUSE_NSS_CERTS=1 -DUSE_OZONE=1 -DENABLE_WEBRTC=1 -DENABLE_TASK_MANAGER=1 -DENABLE_THEMES=1 -DENABLE_RLZ -DENABLE_WAYLAND_SERVER=1 -DUSE_PROPRIETARY_CODECS -DFULL_SAFE_BROWSING -DSAFE_BROWSING_CSD -DSAFE_BROWSING_DB_LOCAL -DOFFICIAL_BUILD -DGOOGLE_CHROME_BUILD -DENABLE_MEDIA_ROUTER=1 -DCR_CLANG_REVISION=284979-2 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -DNO_UNWIND_TABLES -DOS_CHROMEOS -DNDEBUG -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -DTCMALLOC_DONT_REPLACE_SYSTEM_ALLOC -I../../../../../../../home/chrome-bot/chrome_root/src/base/allocator -I../../../../../../../home/chrome-bot/chrome_root/src/third_party/tcmalloc/chromium/src/base -I../../../../../../../home/chrome-bot/chrome_root/src/third_party/tcmalloc/chromium/src -I../../../../../../../home/chrome-bot/chrome_root/src -Igen -fno-strict-aliasing -fno-unwind-tables -fno-asynchronous-unwind-tables -fPIC -pipe -fcolor-diagnostics -fdebug-prefix-map=/home/chrome-bot/chrome_root/src=. -pthread --target=arm-linux-gnueabihf -march=armv7-a -mfloat-abi=hard -mthumb -mtune=generic-armv7-a -mfpu=neon -g2 -gsplit-dwarf --sysroot=../../../../../../../build/elm -fvisibility=hidden -Wheader-hygiene -Wstring-conversion -Wall -Wno-unused-variable -Wno-missing-field-initializers -Wno-unused-parameter -Wno-c++11-narrowing -Wno-covered-switch-default -Wno-deprecated-register -Wno-unneeded-internal-declaration -Wno-inconsistent-missing-override -Wno-shift-negative-value -Wno-undefined-var-template -Wno-nonportable-include-path -Wno-address-of-packed-member -Wno-reorder -Wno-unused-function -Wno-unused-local-typedefs -Wno-unused-private-field -Wno-sign-compare -Wno-unused-result -O2 -fno-ident -fdata-sections -ffunction-sections -fno-threadsafe-statics -fvisibility-inlines-hidden -std=gnu++11 -fno-rtti -fno-exceptions -Wno-deprecated -Wno-reserved-user-defined-literal -pipe -march=armv8-a+crc -mtune=cortex-a57.cortex-a53 -mfpu=crypto-neon-fp-armv8 -mfloat-abi=hard -D__google_stl_debug_vector=1 -Wno-unknown-warning-option  -c ../../../../../../../home/chrome-bot/chrome_root/src/third_party/tcmalloc/chromium/src/base/spinlock_internal.cc -o obj/base/allocator/tcmalloc/spinlock_internal.o
chromeos-chrome-56.0.2923.0_rc-r1: In file included from ../../../../../../../home/chrome-bot/chrome_root/src/third_party/tcmalloc/chromium/src/base/spinlock_internal.cc:43:
chromeos-chrome-56.0.2923.0_rc-r1: In file included from ../../../../../../../home/chrome-bot/chrome_root/src/third_party/tcmalloc/chromium/src/base/spinlock_internal.h:40:
chromeos-chrome-56.0.2923.0_rc-r1: In file included from ../../../../../../../home/chrome-bot/chrome_root/src/third_party/tcmalloc/chromium/src/base/atomicops.h:95:
chromeos-chrome-56.0.2923.0_rc-r1: ../../../../../../../home/chrome-bot/chrome_root/src/third_party/tcmalloc/chromium/src/base/atomicops-internals-arm-v6plus.h:279:3: error: instruction requires: arm-mode
chromeos-chrome-56.0.2923.0_rc-r1:   "ldrexd   %0, [%1]\n"
chromeos-chrome-56.0.2923.0_rc-r1:   ^
chromeos-chrome-56.0.2923.0_rc-r1: <inline asm>:1:2: note: instantiated into assembly here
chromeos-chrome-56.0.2923.0_rc-r1:         ldrexd   r0, [r12]
chromeos-chrome-56.0.2923.0_rc-r1:         ^
chromeos-chrome-56.0.2923.0_rc-r1: In file included from ../../../../../../../home/chrome-bot/chrome_root/src/third_party/tcmalloc/chromium/src/base/spinlock_internal.cc:43:
chromeos-chrome-56.0.2923.0_rc-r1: In file included from ../../../../../../../home/chrome-bot/chrome_root/src/third_party/tcmalloc/chromium/src/base/spinlock_internal.h:40:
chromeos-chrome-56.0.2923.0_rc-r1: In file included from ../../../../../../../home/chrome-bot/chrome_root/src/third_party/tcmalloc/chromium/src/base/atomicops.h:95:
chromeos-chrome-56.0.2923.0_rc-r1: ../../../../../../../home/chrome-bot/chrome_root/src/third_party/tcmalloc/chromium/src/base/atomicops-internals-arm-v6plus.h:267:8: error: instruction requires: arm-mode
chromeos-chrome-56.0.2923.0_rc-r1:       "ldrexd  %1, [%3]\n"
chromeos-chrome-56.0.2923.0_rc-r1:        ^
chromeos-chrome-56.0.2923.0_rc-r1: <inline asm>:2:1: note: instantiated into assembly here
chromeos-chrome-56.0.2923.0_rc-r1: ldrexd  r8, [r12]
chromeos-chrome-56.0.2923.0_rc-r1: ^
chromeos-chrome-56.0.2923.0_rc-r1: In file included from ../../../../../../../home/chrome-bot/chrome_root/src/third_party/tcmalloc/chromium/src/base/spinlock_internal.cc:43:
chromeos-chrome-56.0.2923.0_rc-r1: In file included from ../../../../../../../home/chrome-bot/chrome_root/src/third_party/tcmalloc/chromium/src/base/spinlock_internal.h:40:
chromeos-chrome-56.0.2923.0_rc-r1: In file included from ../../../../../../../home/chrome-bot/chrome_root/src/third_party/tcmalloc/chromium/src/base/atomicops.h:95:
chromeos-chrome-56.0.2923.0_rc-r1: ../../../../../../../home/chrome-bot/chrome_root/src/third_party/tcmalloc/chromium/src/base/atomicops-internals-arm-v6plus.h:268:8: error: instruction requires: arm-mode
chromeos-chrome-56.0.2923.0_rc-r1:       "strexd  %0, %2, [%3]\n"
chromeos-chrome-56.0.2923.0_rc-r1:        ^
chromeos-chrome-56.0.2923.0_rc-r1: <inline asm>:3:1: note: instantiated into assembly here
chromeos-chrome-56.0.2923.0_rc-r1: strexd  r2, r0, [r12]
chromeos-chrome-56.0.2923.0_rc-r1: ^
chromeos-chrome-56.0.2923.0_rc-r1: In file included from ../../../../../../../home/chrome-bot/chrome_root/src/third_party/tcmalloc/chromium/src/base/spinlock_internal.cc:43:
chromeos-chrome-56.0.2923.0_rc-r1: In file included from ../../../../../../../home/chrome-bot/chrome_root/src/third_party/tcmalloc/chromium/src/base/spinlock_internal.h:40:
chromeos-chrome-56.0.2923.0_rc-r1: In file included from ../../../../../../../home/chrome-bot/chrome_root/src/third_party/tcmalloc/chromium/src/base/atomicops.h:95:
chromeos-chrome-56.0.2923.0_rc-r1: ../../../../../../../home/chrome-bot/chrome_root/src/third_party/tcmalloc/chromium/src/base/atomicops-internals-arm-v6plus.h:75:6: warning: deprecated instruction in IT block [-Winline-asm]
chromeos-chrome-56.0.2923.0_rc-r1:     "strexeq %0, %5, [%3]\n"
chromeos-chrome-56.0.2923.0_rc-r1:      ^
chromeos-chrome-56.0.2923.0_rc-r1: <inline asm>:5:1: note: instantiated into assembly here
chromeos-chrome-56.0.2923.0_rc-r1: strexeq r0, r2, [r6]
chromeos-chrome-56.0.2923.0_rc-r1: ^
chromeos-chrome-56.0.2923.0_rc-r1: 1 warning and 3 errors generated.
chromeos-chrome-56.0.2923.0_rc-r1: 


this also happens for march=armv7-a

chromeos-chrome-56.0.2923.0_rc-r1: armv7a-cros-linux-gnueabi-clang++ -B/usr/x86_64-pc-linux-gnu/armv7a-cros-linux-gnueabi/binutils-bin/2.25.51-gold -MMD -MF obj/base/allocator/tcmalloc/spinlock_internal.o.d -DNO_HEAP_CHECK -DV8_DEPRECATION_WARNINGS -DENABLE_NOTIFICATIONS -DENABLE_PLUGINS=1 -DENABLE_PDF=1 -DUSE_UDEV -DUI_COMPOSITOR_IMAGE_TRANSPORT -DUSE_ASH=1 -DUSE_AURA=1 -DUSE_NSS_CERTS=1 -DUSE_OZONE=1 -DENABLE_WEBRTC=1 -DENABLE_TASK_MANAGER=1 -DENABLE_THEMES=1 -DENABLE_RLZ -DENABLE_WAYLAND_SERVER=1 -DUSE_PROPRIETARY_CODECS -DFULL_SAFE_BROWSING -DSAFE_BROWSING_CSD -DSAFE_BROWSING_DB_LOCAL -DOFFICIAL_BUILD -DGOOGLE_CHROME_BUILD -DENABLE_MEDIA_ROUTER=1 -DCR_CLANG_REVISION=284979-2 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -DNO_UNWIND_TABLES -DOS_CHROMEOS -DNDEBUG -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -DTCMALLOC_DONT_REPLACE_SYSTEM_ALLOC -I../../../../../../../home/chrome-bot/chrome_root/src/base/allocator -I../../../../../../../home/chrome-bot/chrome_root/src/third_party/tcmalloc/chromium/src/base -I../../../../../../../home/chrome-bot/chrome_root/src/third_party/tcmalloc/chromium/src -I../../../../../../../home/chrome-bot/chrome_root/src -Igen -fno-strict-aliasing -fno-unwind-tables -fno-asynchronous-unwind-tables -fPIC -pipe -fcolor-diagnostics -fdebug-prefix-map=/home/chrome-bot/chrome_root/src=. -pthread --target=arm-linux-gnueabihf -march=armv7-a -mfloat-abi=hard -mthumb -mtune=generic-armv7-a -mfpu=neon -g2 -gsplit-dwarf --sysroot=../../../../../../../build/daisy -fvisibility=hidden -Wheader-hygiene -Wstring-conversion -Wall -Wno-unused-variable -Wno-missing-field-initializers -Wno-unused-parameter -Wno-c++11-narrowing -Wno-covered-switch-default -Wno-deprecated-register -Wno-unneeded-internal-declaration -Wno-inconsistent-missing-override -Wno-shift-negative-value -Wno-undefined-var-template -Wno-nonportable-include-path -Wno-address-of-packed-member -Wno-reorder -Wno-unused-function -Wno-unused-local-typedefs -Wno-unused-private-field -Wno-sign-compare -Wno-unused-result -O2 -fno-ident -fdata-sections -ffunction-sections -fno-threadsafe-statics -fvisibility-inlines-hidden -std=gnu++11 -fno-rtti -fno-exceptions -Wno-deprecated -Wno-reserved-user-defined-literal -pipe -march=armv7-a -mtune=cortex-a15 -mfpu=neon -mfloat-abi=hard -D__google_stl_debug_vector=1 -Wno-unknown-warning-option  -c ../../../../../../../home/chrome-bot/chrome_root/src/third_party/tcmalloc/chromium/src/base/spinlock_internal.cc -o obj/base/allocator/tcmalloc/spinlock_internal.o
chromeos-chrome-56.0.2923.0_rc-r1: In file included from ../../../../../../../home/chrome-bot/chrome_root/src/third_party/tcmalloc/chromium/src/base/spinlock_internal.cc:43:
chromeos-chrome-56.0.2923.0_rc-r1: In file included from ../../../../../../../home/chrome-bot/chrome_root/src/third_party/tcmalloc/chromium/src/base/spinlock_internal.h:40:
chromeos-chrome-56.0.2923.0_rc-r1: In file included from ../../../../../../../home/chrome-bot/chrome_root/src/third_party/tcmalloc/chromium/src/base/atomicops.h:95:
chromeos-chrome-56.0.2923.0_rc-r1: ../../../../../../../home/chrome-bot/chrome_root/src/third_party/tcmalloc/chromium/src/base/atomicops-internals-arm-v6plus.h:279:3: error: instruction requires: arm-mode
chromeos-chrome-56.0.2923.0_rc-r1:   "ldrexd   %0, [%1]\n"
chromeos-chrome-56.0.2923.0_rc-r1:   ^
chromeos-chrome-56.0.2923.0_rc-r1: <inline asm>:1:2: note: instantiated into assembly here
chromeos-chrome-56.0.2923.0_rc-r1:         ldrexd   r0, [r12]
chromeos-chrome-56.0.2923.0_rc-r1:         ^
chromeos-chrome-56.0.2923.0_rc-r1: In file included from ../../../../../../../home/chrome-bot/chrome_root/src/third_party/tcmalloc/chromium/src/base/spinlock_internal.cc:43:
chromeos-chrome-56.0.2923.0_rc-r1: In file included from ../../../../../../../home/chrome-bot/chrome_root/src/third_party/tcmalloc/chromium/src/base/spinlock_internal.h:40:
chromeos-chrome-56.0.2923.0_rc-r1: In file included from ../../../../../../../home/chrome-bot/chrome_root/src/third_party/tcmalloc/chromium/src/base/atomicops.h:95:
chromeos-chrome-56.0.2923.0_rc-r1: ../../../../../../../home/chrome-bot/chrome_root/src/third_party/tcmalloc/chromium/src/base/atomicops-internals-arm-v6plus.h:267:8: error: instruction requires: arm-mode
chromeos-chrome-56.0.2923.0_rc-r1:       "ldrexd  %1, [%3]\n"
chromeos-chrome-56.0.2923.0_rc-r1:        ^
chromeos-chrome-56.0.2923.0_rc-r1: <inline asm>:2:1: note: instantiated into assembly here
chromeos-chrome-56.0.2923.0_rc-r1: ldrexd  r8, [r12]
chromeos-chrome-56.0.2923.0_rc-r1: ^
chromeos-chrome-56.0.2923.0_rc-r1: In file included from ../../../../../../../home/chrome-bot/chrome_root/src/third_party/tcmalloc/chromium/src/base/spinlock_internal.cc:43:
chromeos-chrome-56.0.2923.0_rc-r1: In file included from ../../../../../../../home/chrome-bot/chrome_root/src/third_party/tcmalloc/chromium/src/base/spinlock_internal.h:40:
chromeos-chrome-56.0.2923.0_rc-r1: In file included from ../../../../../../../home/chrome-bot/chrome_root/src/third_party/tcmalloc/chromium/src/base/atomicops.h:95:
chromeos-chrome-56.0.2923.0_rc-r1: ../../../../../../../home/chrome-bot/chrome_root/src/third_party/tcmalloc/chromium/src/base/atomicops-internals-arm-v6plus.h:268:8: error: instruction requires: arm-mode
chromeos-chrome-56.0.2923.0_rc-r1:       "strexd  %0, %2, [%3]\n"
chromeos-chrome-56.0.2923.0_rc-r1:        ^
chromeos-chrome-56.0.2923.0_rc-r1: <inline asm>:3:1: note: instantiated into assembly here
chromeos-chrome-56.0.2923.0_rc-r1: strexd  r2, r0, [r12]
chromeos-chrome-56.0.2923.0_rc-r1: ^
chromeos-chrome-56.0.2923.0_rc-r1: 3 errors generated.

 
@llozano

Indeed really weird it didn't show up in the builders.

Got one question though: how are you building and in which environment?

Comment 2 by h...@chromium.org, Nov 18 2016

> I dont understand why this was not caught by the linux builders? Maybe linux builders are not using -mthumb?
cc'ing Hans and Nico in case theyu know something.

I don't think we have any Linux builders targeting ARM, but I'd expect Android would have the same problem. And I believe we use -mthumb there.

Comment 3 by h...@chromium.org, Nov 18 2016

Cc: primiano@chromium.org
.. but it looks like the Android build doesn't use tcmalloc, which would explain why we don't see it on those bots: https://cs.chromium.org/chromium/src/base/allocator/README.md?rcl=0&l=35

(+primiano to double check)

Comment 4 by matteo.f...@arm.com, Nov 18 2016

Sorry for the trouble this is causing. I am investigating it right now. I am puzzled to see this failure when building for ChromeOS, as we are doing tests on several ChromeOS overlays, including ARM overlays building on Linux builders.

We will revert the change for now so the tree is green again. We will work on reproducing and fixing the issue. Could you please provide build environment details?
regarding #1. 

@cavalcantii

we are building for ChromeOS. The default ChromeOS build still uses GCC but we are migrating to Clang/LLVM and we have some builders set up for that. It started failing there. 
You can see this link (from within Google).

https://uberchromegw.corp.google.com/i/chromiumos.tryserver/builders/release/builds/7235

Please revert this change until the problem is fixed. 

Ack, reverting the patch now.
ok, so it looks like we have a fix. no need to revert. 
We also know why it does not reproduce with GCC. 

I will keep this open until we can verify the issue is gone.

Thanks all.
@matteo
Thanks for doing more research on the subject.

@llozano
Too late! It is reverted already.

And to make things more interesting, it seems that the Android bots are broken now. Not sure if it is related (it seems to point to a build failure of a net unit test).

I'm contacting sheriffs to look for the best route on this.
In retrospect, it may make sense to have a linux builder for ARM in future to avoid this kind of issue.
#9 ok, I will apply both patches and make sure it builds in ChromeOS. Will reply by Monday.
@llozano

I applied my patch again to the tree and tried building ChromeOS with USE=clang. The bug still occurs. In other words, the CL at https://codereview.chromium.org/2515503002 did't fix the issue.

You can find more info here https://codereview.chromium.org/2457473003/

@llozano
Any news?

Comment 14 by lloz...@google.com, Nov 21 2016

I am trying to reproduce but I dont see the point of doing that. 
If Matteo says it is broken even after tcmalloc is built without -mthumb then we need to owner of tcmalloc to fix this. 

Comment 15 by sbc@chromium.org, Nov 21 2016

https://codereview.chromium.org/2515503002 should remove the -mthumb argument from the command line.

Are you still seeing -mthumb on the failing command line?  If so, can you try to find out why?  
How is this part of the code supposed to work for ChromeOS?

+config("compiler_arm_thumb") {
+  if (current_cpu == "arm" && arm_use_thumb && is_posix &&
+      !(is_mac || is_ios || is_nacl)) {
+    cflags = [ "-mthumb" ]
+    if (is_android && !is_clang) {
+      # Clang doesn't support this option.
+      cflags += [ "-mthumb-interwork" ]
+    }
+  }
+}
+

this checks for is_mac and for is_android only. 

I cannot see -mthumb in the command line, but this doesn't seem to fix the issue. -no-integrated-as does. If I replace -O2 with -O0 the issue occurs even if I remove my patch.
From inside my ChromeOS chroot I get:

  $ ls -l /usr/bin/armv7a-cros-linux-gnueabi-g++ /usr/bin/armv7a-cros-linux-gnueabi-clang++
  -rwxr-xr-x 1 root root 10104 Nov  3 15:59 /usr/bin/armv7a-cros-linux-gnueabi-clang++
  -rwxr-xr-x 1 root root 10104 Nov  3 15:59 /usr/bin/armv7a-cros-linux-gnueabi-g++
  $ diff -s /usr/bin/armv7a-cros-linux-gnueabi-g++ /usr/bin/armv7a-cros-linux-gnueabi-clang++
  Files /usr/bin/armv7a-cros-linux-gnueabi-g++ and /usr/bin/armv7a-cros-linux-gnueabi-clang++ are identical

Note that /usr/bin/armv7a-cros-linux-gnueabi-clang++ is the executable which is used to compile the code. The conclusion is that this is not the real clang compiler and - as such - it may end up inserting flags that we did not want.

Further investigations reveal indeed that this executable ends up calling /usr/bin/clang-3.9. So I replaced /usr/bin/armv7a-cros-linux-gnueabi-clang++ with /usr/bin/clang-3.9 and the compilation was successful.

The conclusion is that ChromeOS compiler wrappers insert some flags that end up triggering the clang integrated assembler bug.
Re #3
> .. but it looks like the Android build doesn't use tcmalloc ... (+primiano to double check)
Absolutely correct.

Can somebody raise a bug upstream on https://github.com/gperftools/gperftools/issues ?
At a quick glance it looks that that asm section is missing some ".arm" directive.
#18.

Matteo is right, on ChromeOS everything is built with -mthumb. 

The compiler wrapper does the following:

"
# Generate thumb codes by default.
# GCC is configured with --with-mode=thumb and defaults to thumb mode already.
# This changes the default behavior of clang and doesn't affect GCC.
"

It is just doing what it was done for GCC (ie: flip the default to -mthumb).

I will try what #19 is suggesting.




ok, adding the .arm directives allows it to build. 
But I don't think that is the right fix. 
Since this is a bug in the clang integrated assembler, we should add -no-integrated-as to the tcmalloc build UNTIL the integrated assembler bug is fixed.

I have updated https://codereview.chromium.org/2515503002/ requesting a fix that disables integrated assembler for tcmalloc .
Cc: dpranke@chromium.org sbc@chromium.org
I don't think the .arm directive makes sense in inline assembly.  It appears to cause the assembler to change states mid-stream (and even annotates the object file so the disassembler changes states too), but there's nothing to cause the processor to change states during execution.  The outcome can't be good.

Disabling integrated assembler seems right to me.  There seems to be a pre-existing bug for that, tracking various related changes:
https://bugs.chromium.org/p/chromium/issues/detail?id=124610
Owner: sbc@chromium.org
Status: Started (was: Unconfirmed)
@llozano
As there is activity in this bug, I'm marking it as started and assigning it to sbc.

I see Sam's patch has landed, has this unblocked Matteo?

@matteo
Assuming that you are no longer blocked, any ETA for submitting the futex optimization again?

Comment 26 by sbc@chromium.org, Nov 30 2016

Personally I would mark this bug as a duplicate of https://bugs.chromium.org/p/chromium/issues/detail?id=564059, which is fixed.

There is a TODO in the gn file to remove the workaround once clang is fixed.
Owner: ----
Summary: Reland futex syscall in SpinLockDelay() for ARM (was: tcmalloc build problem in chromeos)
@sbc
I agree that the buildsystem part is done (and has its own bug), so I will rename the issue to track the task to re-land the futex optimization.
My understanding is that we need to wait for

  https://codereview.chromium.org/2522973002/

to be merged before we can push the tcmalloc fix (https://codereview.chromium.org/2457473003/) again. The tcmalloc fix exposed indeed the problem with the ChromiumOS build system and its compiler wrappers defaulting to thumb. Personally, I would wait some time (let's say a week) after Sam's patch has landed before re-pushing the tcmalloc fix. This is to reduce the probability of having to revert my patch once more.
Matteo is right.

The CL is still in progress. 
sbc@ is driving it.
FWIW: We do have a chrome on chromeos builder on the main waterfall that targets ARM:

https://build.chromium.org/p/chromium.chromiumos/builders/ChromiumOS%20daisy%20Compile

llozano@, any idea why the error wasn't triggered there?
I don't know anything about how that builder is configured. 
One theory was that only ChromeOS was using tcmalloc. I dont know if the chrome in this builder is configured to build for linux. 

Comment 32 by sbc@chromium.org, Dec 8 2016

IIUC, that builder doesn't use clang, and this is a clang-only issue.   
ah, that is true. 
Status: Fixed (was: Started)

Comment 36 by dchan@google.com, Mar 4 2017

Labels: VerifyIn-58

Comment 37 by dchan@google.com, Apr 17 2017

Labels: VerifyIn-59

Comment 38 by dchan@google.com, May 30 2017

Labels: VerifyIn-60
Labels: VerifyIn-61
Status: Verified (was: Fixed)
Closing. Please reopen it if its not fixed. Thanks!

Sign in to add a comment