[SERVER-4801] SpinLock does not compile for non-x86 Created: 27/Jan/12  Updated: 06/Dec/22  Resolved: 15/Nov/16

Status: Closed
Project: Core Server
Component/s: Concurrency
Affects Version/s: 2.0.3
Fix Version/s: None

Type: Improvement Priority: Major - P3
Reporter: Trevor Robinson Assignee: Backlog - Storage Execution Team
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Target: arm-linux-gnueabi
gcc version 4.6.1 (Ubuntu/Linaro 4.6.1-9ubuntu3)


Attachments: Text File mongodb-spinlock-pause-nonx86.patch    
Assigned Teams:
Storage Execution
Participants:

 Description   

Recent (unreleased) changes to add PAUSE instructions to spinlocks break compilation on non-x86 systems:

g++ -o build/linux2/usev8/mongo/util/concurrency/spin_lock.o -c -Wnon-virtual-dtor -fPIC -fno-strict-aliasing -ggdb -pthread -Wall -Wsign-compare -Wno-unknown-pragmas -Winvalid-pch -Werror -pipe -fno-builtin-memcmp -O3 -D_SCONS -DMONGO_EXPOSE_MACROS -D_FILE_OFFSET_BITS=64 -Ibuild/linux2/usev8 -Isrc -Ibuild/linux2/usev8/mongo -Isrc/mongo -Ibuild/linux2/usev8/third_party/pcre-7.4 -Isrc/third_party/pcre-7.4 -I/root/v8/include src/mongo/util/concurrency/spin_lock.cpp

{standard input}: Assembler messages:{standard input}

:124: Error: bad instruction `pause'

The attached patch makes the use of PAUSE conditional on x86, and reverts to the previous code on non-x86.



 Comments   
Comment by Trevor Robinson [ 27/Jan/12 ]

This issue is related to SERVER-1811.

Generated at Thu Feb 08 03:07:01 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.