[BUG]: EpollBackend.h: error: type struct EpollBackend violates the C++ One Definition Rule [-Werror=odr]
- Dominant language
- C++
- Stars
- 30.5k
- Forks
- 5.9k
- PR merge metrics
- No merged PRs in 30d
Description
Building with diagnostic flags enabled I encountered the following:
```
: && /usr/bin/x86_64-pc-linux-gnu-g++ -fPIC -march=native -O2 -pipe -flto -Werror=odr -Werror=lto-type-mismatch -Werror=strict-aliasing -fdiagnostics-color=always -frecord-gcc-switches -Wl,-O1 -Wl,--as-needed -Wl,-z,pack-relative-relocs -Wl,--dependency-file=CMakeFiles/folly.dir/link.d -shared -Wl,-soname,libfolly.so.0.58.0-dev -o libfolly.so.0.58.0-dev CMakeFiles/folly_base.dir/folly/CancellationToken.cpp.o CMakeFiles/folly_base.dir/folly/ClockGettimeWrappers.cpp.o CMakeFiles/folly_base.dir/folly/Conv.cpp.o CMakeFiles/folly_base.dir/folly/Demangle.cpp.o CMakeFiles/folly_base.dir/folly/ExceptionString.cpp.o CMakeFiles/folly_base.dir/folly/ExceptionWrapper.cpp.o CMakeFiles/folly_base.dir/folly/Executor.cpp.o CMakeFiles/folly_base.dir/folly/File.cpp.o CMakeFiles/folly_base.dir/folly/FileUtil.cpp.o CMakeFiles/folly_base.dir/folly/Fingerprint.cpp.o CMakeFiles/folly_base.dir/folly/FmtUtility.cpp.o CMakeFiles/folly_base.dir/folly/FollyMemcpy.cpp.o CMakeFiles/folly_base.dir/folly/FollyMemset.cpp.o CMakeFiles/folly_base.dir/folly/Format.cpp.o CMakeFiles/folly_base.dir/folly/GroupVarint.cpp.o CMakeFiles/folly_base.dir/folly/IPAddress.cpp.o CMakeFiles/folly_base.dir/folly/IPAddressV4.cpp.o CMakeFiles/folly_base.dir/folly/IPAddressV6.cpp.o CMakeFiles/folly_base.dir/folly/MacAddress.cpp.o CMakeFiles/folly_base.dir/folly/MicroLock.cpp.o CMakeFiles/folly_base.dir/folly/Random.cpp.o CMakeFiles/folly_base.dir/folly/ScopeGuard.cpp.o CMakeFiles/folly_base.dir/folly/SharedMutex.cpp.o CMakeFiles/folly_base.dir/folly/Singleton.cpp.o CMakeFiles/folly_base.dir/folly/SingletonThreadLocal.cpp.o CMakeFiles/folly_base.dir/folly/SocketAddress.cpp.o CMakeFiles/folly_base.dir/folly/String.cpp.o CMakeFiles/folly_base.dir/folly/Subprocess.cpp.o CMakeFiles/folly_base.dir/folly/TimeoutQueue.cpp.o CMakeFiles/folly_base.dir/folly/Try.cpp.o CMakeFiles/folly_base.dir/folly/Unicode.cpp.o CMakeFiles/folly_base.dir/folly/Uri.cpp.o CMakeFiles/folly_base.dir/folly/memcpy_select_aarch64.cpp.o CMakeFiles/folly_base.dir/folly/memset_select_aarch64.cpp.o CMakeFiles/folly_base.dir/folly/algorithm/simd/Contains.cpp.o CMakeFiles/folly_base.dir/folly/channels/MaxConcurrentRateLimiter.cpp.o CMakeFiles/folly_base.dir/folly/cli/NestedCommandLineApp.cpp.o CMakeFiles/folly_base.dir/folly/cli/ProgramOptions.cpp.o CMakeFiles/folly_base.dir/folly/compression/Compression.cpp.o CMakeFiles/folly_base.dir/folly/compression/CompressionContextPoolSingletons.cpp.o CMakeFiles/folly_base.dir/folly/compression/QuotientMultiSet.cpp.o CMakeFiles/folly_base.dir/folly/compression/Select64.cpp.o CMakeFiles/folly_base.dir/folly/compression/Zlib.cpp.o CMakeFiles/folly_base.dir/folly/compression/Zstd.cpp.o CMakeFiles/folly_base.dir/folly/concurrency/CacheLocality.cpp.o CMakeFiles/folly_base.dir/folly/concurrency/DeadlockDetector.cpp.o CMakeFiles/folly_base.dir/folly/concurrency/ProcessLocalUniqueId.cpp.o CMakeFiles/folly_base.dir/folly/concurrency/memory/AtomicReadMostlyMainPtr.cpp.o CMakeFiles/folly_base.dir/folly/container/RegexMatchCache.cpp.o CMakeFiles/folly_base.dir/folly/container/detail/F14Table.cpp.o CMakeFiles/folly_base.dir/folly/coro/Baton.cpp.o CMakeFiles/folly_base.dir/folly/coro/Mutex.cpp.o CMakeFiles/folly_base.dir/folly/coro/SharedMutex.cpp.o CMakeFiles/folly_base.dir/folly/coro/detail/Malloc.cpp.o CMakeFiles/folly_base.dir/folly/crypto/Blake2xb.cpp.o CMakeFiles/folly_base.dir/folly/crypto/LtHash.cpp.o CMakeFiles/folly_base.dir/folly/crypto/detail/MathOperation_AVX2.cpp.o CMakeFiles/folly_base.dir/folly/crypto/detail/MathOperation_SSE2.cpp.o CMakeFiles/folly_base.dir/folly/crypto/detail/MathOperation_Simple.cpp.o CMakeFiles/folly_base.dir/folly/debugging/exception_tracer/ExceptionCounterLib.cpp.o CMakeFiles/folly_base.dir/folly/debugging/exception_tracer/ExceptionStackTraceLib.cpp.o CMakeFiles/folly_base.dir/folly/debugging/exception_tracer/ExceptionTracer.cpp.o CMakeFiles/folly_base.dir/folly/debugging/exception_tracer/ExceptionTracerLib.cpp.o CMakeFiles/folly_base.dir/folly/debugging/exception_tracer/SmartExceptionStackTraceHooks.cpp.o CMakeFiles/folly_base.dir/folly/debugging/exception_tracer/SmartExceptionTracer.cpp.o CMakeFiles/folly_base.dir/folly/debugging/exception_tracer/SmartExceptionTracerSingleton.cpp.o CMakeFiles/folly_base.dir/folly/debugging/exception_tracer/StackTrace.cpp.o CMakeFiles/folly_base.dir/folly/debugging/symbolizer/Dwarf.cpp.o CMakeFiles/folly_base.dir/folly/debugging/symbolizer/DwarfImpl.cpp.o CMakeFiles/folly_base.dir/folly/debugging/symbolizer/DwarfLineNumberVM.cpp.o CMakeFiles/folly_base.dir/folly/debugging/symbolizer/DwarfSection.cpp.o CMakeFiles/folly_base.dir/folly/debugging/symbolizer/DwarfUtil.cpp.o CMakeFiles/folly_base.dir/folly/debugging/symbolizer/Elf.cpp.o CMakeFiles/folly_base.dir/folly/debugging/symbolizer/ElfCache.cpp.o CMakeFiles/folly_base.dir/folly/debugging/symbolizer/LineReader.cpp.o CMakeFiles/folly_base.dir/folly/debugging/symbolizer/SignalHandler.cpp.o CMakeFiles/folly_base.dir/folly/debugging/symbolizer/StackTrace.cpp.o CMakeFiles/folly_base.dir/folly/debugging/symbolizer/SymbolizePrinter.cpp.o CMakeFiles/folly_base.dir/folly/debugging/symbolizer/SymbolizedFrame.cpp.o CMakeFiles/folly_base.dir/folly/debugging/symbolizer/Symbolizer.cpp.o CMakeFiles/folly_base.dir/folly/detail/AsyncTrace.cpp.o CMakeFiles/folly_base.dir/folly/detail/FileUtilDetail.cpp.o CMakeFiles/folly_base.dir/folly/detail/Futex.cpp.o CMakeFiles/folly_base.dir/folly/detail/IPAddress.cpp.o CMakeFiles/folly_base.dir/folly/detail/MemoryIdler.cpp.o CMakeFiles/folly_base.dir/folly/detail/PerfScoped.cpp.o CMakeFiles/folly_base.dir/folly/detail/RangeCommon.cpp.o CMakeFiles/folly_base.dir/folly/detail/RangeSimd.cpp.o CMakeFiles/folly_base.dir/folly/detail/RangeSse42.cpp.o CMakeFiles/folly_base.dir/folly/detail/SimpleSimdStringUtils.cpp.o CMakeFiles/folly_base.dir/folly/detail/SocketFastOpen.cpp.o CMakeFiles/folly_base.dir/folly/detail/SplitStringSimd.cpp.o CMakeFiles/folly_base.dir/folly/detail/Sse.cpp.o CMakeFiles/folly_base.dir/folly/detail/StaticSingletonManager.cpp.o CMakeFiles/folly_base.dir/folly/detail/ThreadLocalDetail.cpp.o CMakeFiles/folly_base.dir/folly/detail/TrapOnAvx512.cpp.o CMakeFiles/folly_base.dir/folly/detail/UniqueInstance.cpp.o CMakeFiles/folly_base.dir/folly/detail/base64_detail/Base64Api.cpp.o CMakeFiles/folly_base.dir/folly/detail/base64_detail/Base64SWAR.cpp.o CMakeFiles/folly_base.dir/folly/detail/base64_detail/Base64_SSE4_2.cpp.o CMakeFiles/folly_base.dir/folly/detail/thread_local_globals.cpp.o CMakeFiles/folly_base.dir/folly/executors/CPUThreadPoolExecutor.cpp.o CMakeFiles/folly_base.dir/folly/executors/Codel.cpp.o CMakeFiles/folly_base.dir/folly/executors/EDFThreadPoolExecutor.cpp.o CMakeFiles/folly_base.dir/folly/executors/ExecutionObserver.cpp.o CMakeFiles/folly_base.dir/folly/executors/ExecutorWithPriority.cpp.o CMakeFiles/folly_base.dir/folly/executors/FunctionScheduler.cpp.o CMakeFiles/folly_base.dir/folly/executors/GlobalExecutor.cpp.o CMakeFiles/folly_base.dir/folly/executors/GlobalThreadPoolList.cpp.o CMakeFiles/folly_base.dir/folly/executors/IOThreadPoolDeadlockDetectorObserver.cpp.o CMakeFiles/folly_base.dir/folly/executors/IOThreadPoolExecutor.cpp.o CMakeFiles/folly_base.dir/folly/executors/InlineExecutor.cpp.o CMakeFiles/folly_base.dir/folly/executors/ManualExecutor.cpp.o CMakeFiles/folly_base.dir/folly/executors/QueueObserver.cpp.o CMakeFiles/folly_base.dir/folly/executors/QueuedImmediateExecutor.cpp.o CMakeFiles/folly_base.dir/folly/executors/SoftRealTimeExecutor.cpp.o CMakeFiles/folly_base.dir/folly/executors/StrandExecutor.cpp.o CMakeFiles/folly_base.dir/folly/executors/ThreadPoolExecutor.cpp.o CMakeFiles/folly_base.dir/folly/executors/ThreadedExecutor.cpp.o CMakeFiles/folly_base.dir/folly/executors/ThreadedRepeatingFunctionRunner.cpp.o CMakeFiles/folly_base.dir/folly/executors/TimedDrivableExecutor.cpp.o CMakeFiles/folly_base.dir/folly/executors/TimekeeperScheduledExecutor.cpp.o CMakeFiles/folly_base.dir/folly/executors/thread_factory/PriorityThreadFactory.cpp.o CMakeFiles/folly_base.dir/folly/ext/buck2/test_ext.cpp.o CMakeFiles/folly_base.dir/folly/ext/test_ext.cpp.o CMakeFiles/folly_base.dir/folly/external/farmhash/farmhash.cpp.o CMakeFiles/folly_base.dir/folly/external/fast-crc32/avx512_crc32c_v8s3x4.cpp.o CMakeFiles/folly_base.dir/folly/external/fast-crc32/neon_crc32c_v3s4x2e_v2.cpp.o CMakeFiles/folly_base.dir/folly/external/fast-crc32/neon_eor3_crc32c_v8s2x4_s3.cpp.o CMakeFiles/folly_base.dir/folly/external/fast-crc32/sse_crc32c_v8s3x3.cpp.o CMakeFiles/folly_base.dir/folly/external/nvidia/detail/RangeSve2.cpp.o CMakeFiles/folly_base.dir/folly/external/nvidia/hash/Checksum.cpp.o CMakeFiles/folly_base.dir/folly/external/nvidia/hash/detail/Crc32cDetail.cpp.o CMakeFiles/folly_base.dir/folly/fibers/BatchSemaphore.cpp.o CMakeFiles/folly_base.dir/folly/fibers/Baton.cpp.o CMakeFiles/folly_base.dir/folly/fibers/Fiber.cpp.o CMakeFiles/folly_base.dir/folly/fibers/FiberManager.cpp.o CMakeFiles/folly_base.dir/folly/fibers/GuardPageAllocator.cpp.o CMakeFiles/folly_base.dir/folly/fibers/Semaphore.cpp.o CMakeFiles/folly_base.dir/folly/fibers/SemaphoreBase.cpp.o CMakeFiles/folly_base.dir/folly/fibers/SimpleLoopController.cpp.o CMakeFiles/folly_base.dir/folly/fibers/async/Async.cpp.o CMakeFiles/folly_base.dir/folly/fibers/detail/AtomicBatchDispatcher.cpp.o CMakeFiles/folly_base.dir/folly/futures/Barrier.cpp.o CMakeFiles/folly_base.dir/folly/futures/Future.cpp.o CMakeFiles/folly_base.dir/folly/futures/HeapTimekeeper.cpp.o CMakeFiles/folly_base.dir/folly/futures/ManualTimekeeper.cpp.o CMakeFiles/folly_base.dir/folly/futures/Promise.cpp.o CMakeFiles/folly_base.dir/folly/futures/SharedPromise.cpp.o CMakeFiles/folly_base.dir/folly/futures/ThreadWheelTimekeeper.cpp.o CMakeFiles/folly_base.dir/folly/futures/detail/Core.cpp.o CMakeFiles/folly_base.dir/folly/hash/Checksum.cpp.o CMakeFiles/folly_base.dir/folly/hash/SpookyHashV1.cpp.o CMakeFiles/folly_base.dir/folly/hash/SpookyHashV2.cpp.o CMakeFiles/folly_base.dir/folly/hash/detail/ChecksumDetail.cpp.o CMakeFiles/folly_base.dir/folly/hash/detail/Crc32CombineDetail.cpp.o CMakeFiles/folly_base.dir/folly/hash/detail/Crc32cDetail.cpp.o CMakeFiles/folly_base.dir/folly/init/Init.cpp.o CMakeFiles/folly_base.dir/folly/init/Phase.cpp.o CMakeFiles/folly_base.dir/folly/io/Cursor.cpp.o CMakeFiles/folly_base.dir/folly/io/FsUtil.cpp.o CMakeFiles/folly_base.dir/folly/io/GlobalShutdownSocketSet.cpp.o CMakeFiles/folly_base.dir/folly/io/HugePages.cpp.o CMakeFiles/folly_base.dir/folly/io/IOBuf.cpp.o CMakeFiles/folly_base.dir/folly/io/IOBufIovecBuilder.cpp.o CMakeFiles/folly_base.dir/folly/io/IOBufQueue.cpp.o CMakeFiles/folly_base.dir/folly/io/RecordIO.cpp.o CMakeFiles/folly_base.dir/folly/io/ShutdownSocketSet.cpp.o CMakeFiles/folly_base.dir/folly/io/SocketOptionMap.cpp.o CMakeFiles/folly_base.dir/folly/io/SocketOptionValue.cpp.o CMakeFiles/folly_base.dir/folly/io/async/AsyncBase.cpp.o CMakeFiles/folly_base.dir/folly/io/async/AsyncIO.cpp.o CMakeFiles/folly_base.dir/folly/io/async/AsyncIoUringSocket.cpp.o CMakeFiles/folly_base.dir/folly/io/async/AsyncPipe.cpp.o CMakeFiles/folly_base.dir/folly/io/async/AsyncSSLSocket.cpp.o CMakeFiles/folly_base.dir/folly/io/async/AsyncServerSocket.cpp.o CMakeFiles/folly_base.dir/folly/io/async/AsyncSignalHandler.cpp.o CMakeFiles/folly_base.dir/folly/io/async/AsyncSocket.cpp.o CMakeFiles/folly_base.dir/folly/io/async/AsyncSocketException.cpp.o CMakeFiles/folly_base.dir/folly/io/async/AsyncSocketTransport.cpp.o CMakeFiles/folly_base.dir/folly/io/async/AsyncTimeout.cpp.o CMakeFiles/folly_base.dir/folly/io/async/AsyncUDPSocket.cpp.o CMakeFiles/folly_base.dir/folly/io/async/DelayedDestruction.cpp.o CMakeFiles/folly_base.dir/folly/io/async/EpollBackend.cpp.o CMakeFiles/folly_base.dir/folly/io/async/EventBase.cpp.o CMakeFiles/folly_base.dir/folly/io/async/EventBaseBackendBase.cpp.o CMakeFiles/folly_base.dir/folly/io/async/EventBaseLocal.cpp.o CMakeFiles/folly_base.dir/folly/io/async/EventBaseManager.cpp.o CMakeFiles/folly_base.dir/folly/io/async/EventBasePoller.cpp.o CMakeFiles/folly_base.dir/folly/io/async/EventBaseThread.cpp.o CMakeFiles/folly_base.dir/folly/io/async/EventHandler.cpp.o CMakeFiles/folly_base.dir/folly/io/async/HHWheelTimer.cpp.o CMakeFiles/folly_base.dir/folly/io/async/IoUring.cpp.o CMakeFiles/folly_base.dir/folly/io/async/IoUringBackend.cpp.o CMakeFiles/folly_base.dir/folly/io/async/IoUringEvent.cpp.o CMakeFiles/folly_base.dir/folly/io/async/IoUringEventBaseLocal.cpp.o CMakeFiles/folly_base.dir/folly/io/async/IoUringProvidedBufferRing.cpp.o CMakeFiles/folly_base.dir/folly/io/async/MuxIOThreadPoolExecutor.cpp.o CMakeFiles/folly_base.dir/folly/io/async/PasswordInFile.cpp.o CMakeFiles/folly_base.dir/folly/io/async/Request.cpp.o CMakeFiles/folly_base.dir/folly/io/async/SSLContext.cpp.o CMakeFiles/folly_base.dir/folly/io/async/SSLOptions.cpp.o CMakeFiles/folly_base.dir/folly/io/async/STTimerFDTimeoutManager.cpp.o CMakeFiles/folly_base.dir/folly/io/async/ScopedEventBaseThread.cpp.o CMakeFiles/folly_base.dir/folly/io/async/SimpleAsyncIO.cpp.o CMakeFiles/folly_base.dir/folly/io/async/TerminateCancellationToken.cpp.o CMakeFiles/folly_base.dir/folly/io/async/TimeoutManager.cpp.o CMakeFiles/folly_base.dir/folly/io/async/TimerFD.cpp.o CMakeFiles/folly_base.dir/folly/io/async/TimerFDTimeoutManager.cpp.o CMakeFiles/folly_base.dir/folly/io/async/VirtualEventBase.cpp.o CMakeFiles/folly_base.dir/folly/io/async/fdsock/AsyncFdSocket.cpp.o CMakeFiles/folly_base.dir/folly/io/async/fdsock/SocketFds.cpp.o CMakeFiles/folly_base.dir/folly/io/async/ssl/OpenSSLUtils.cpp.o CMakeFiles/folly_base.dir/folly/io/async/ssl/SSLErrors.cpp.o CMakeFiles/folly_base.dir/folly/io/coro/ServerSocket.cpp.o CMakeFiles/folly_base.dir/folly/io/coro/Transport.cpp.o CMakeFiles/folly_base.dir/folly/json/DynamicParser.cpp.o CMakeFiles/folly_base.dir/folly/json/JSONSchema.cpp.o CMakeFiles/folly_base.dir/folly/json/JsonTestUtil.cpp.o CMakeFiles/folly_base.dir/folly/json/bser/Dump.cpp.o CMakeFiles/folly_base.dir/folly/json/bser/Load.cpp.o CMakeFiles/folly_base.dir/folly/json/dynamic.cpp.o CMakeFiles/folly_base.dir/folly/json/json.cpp.o CMakeFiles/folly_base.dir/folly/json/json_patch.cpp.o CMakeFiles/folly_base.dir/folly/json/json_pointer.cpp.o CMakeFiles/folly_base.dir/folly/lang/CString.cpp.o CMakeFiles/folly_base.dir/folly/lang/Exception.cpp.o CMakeFiles/folly_base.dir/folly/lang/SafeAssert.cpp.o CMakeFiles/folly_base.dir/folly/lang/ToAscii.cpp.o CMakeFiles/folly_base.dir/folly/lang/UncaughtExceptions.cpp.o CMakeFiles/folly_base.dir/folly/logging/AsyncFileWriter.cpp.o CMakeFiles/folly_base.dir/folly/logging/AsyncLogWriter.cpp.o CMakeFiles/folly_base.dir/folly/logging/BridgeFromGoogleLogging.cpp.o CMakeFiles/folly_base.dir/folly/logging/CustomLogFormatter.cpp.o CMakeFiles/folly_base.dir/folly/logging/FileHandlerFactory.cpp.o CMakeFiles/folly_base.dir/folly/logging/FileWriterFactory.cpp.o CMakeFiles/folly_base.dir/folly/logging/GlogStyleFormatter.cpp.o CMakeFiles/folly_base.dir/folly/logging/ImmediateFileWriter.cpp.o CMakeFiles/folly_base.dir/folly/logging/Init.cpp.o CMakeFiles/folly_base.dir/folly/logging/InitWeak.cpp.o CMakeFiles/folly_base.dir/folly/logging/LogCategory.cpp.o CMakeFiles/folly_base.dir/folly/logging/LogCategoryConfig.cpp.o CMakeFiles/folly_base.dir/folly/logging/LogConfig.cpp.o CMakeFiles/folly_base.dir/folly/logging/LogConfigParser.cpp.o CMakeFiles/folly_base.dir/folly/logging/LogHandlerConfig.cpp.o CMakeFiles/folly_base.dir/folly/logging/LogLevel.cpp.o CMakeFiles/folly_base.dir/folly/logging/LogMessage.cpp.o CMakeFiles/folly_base.dir/folly/logging/LogName.cpp.o CMakeFiles/folly_base.dir/folly/logging/LogStream.cpp.o CMakeFiles/folly_base.dir/folly/logging/LogStreamProcessor.cpp.o CMakeFiles/folly_base.dir/folly/logging/Logger.cpp.o CMakeFiles/folly_base.dir/folly/logging/LoggerDB.cpp.o CMakeFiles/folly_base.dir/folly/logging/ObjectToString.cpp.o CMakeFiles/folly_base.dir/folly/logging/RateLimiter.cpp.o CMakeFiles/folly_base.dir/folly/logging/StandardLogHandler.cpp.o CMakeFiles/folly_base.dir/folly/logging/StandardLogHandlerFactory.cpp.o CMakeFiles/folly_base.dir/folly/logging/StreamHandlerFactory.cpp.o CMakeFiles/folly_base.dir/folly/logging/xlog.cpp.o CMakeFiles/folly_base.dir/folly/memory/JemallocHugePageAllocator.cpp.o CMakeFiles/folly_base.dir/folly/memory/JemallocNodumpAllocator.cpp.o CMakeFiles/folly_base.dir/folly/memory/MallctlHelper.cpp.o CMakeFiles/folly_base.dir/folly/memory/ReentrantAllocator.cpp.o CMakeFiles/folly_base.dir/folly/memory/SanitizeAddress.cpp.o CMakeFiles/folly_base.dir/folly/memory/SanitizeLeak.cpp.o CMakeFiles/folly_base.dir/folly/memory/ThreadCachedArena.cpp.o CMakeFiles/folly_base.dir/folly/memory/detail/MallocImpl.cpp.o CMakeFiles/folly_base.dir/folly/net/NetOps.cpp.o CMakeFiles/folly_base.dir/folly/net/NetOpsDispatcher.cpp.o CMakeFiles/folly_base.dir/folly/net/TcpInfo.cpp.o CMakeFiles/folly_base.dir/folly/net/TcpInfoDispatcher.cpp.o CMakeFiles/folly_base.dir/folly/net/detail/SocketFileDescriptorMap.cpp.o CMakeFiles/folly_base.dir/folly/observer/detail/Core.cpp.o CMakeFiles/folly_base.dir/folly/observer/detail/ObserverManager.cpp.o CMakeFiles/folly_base.dir/folly/portability/Builtins.cpp.o CMakeFiles/folly_base.dir/folly/portability/Dirent.cpp.o CMakeFiles/folly_base.dir/folly/portability/Fcntl.cpp.o CMakeFiles/folly_base.dir/folly/portability/Filesystem.cpp.o CMakeFiles/folly_base.dir/folly/portability/Libgen.cpp.o CMakeFiles/folly_base.dir/folly/portability/Malloc.cpp.o CMakeFiles/folly_base.dir/folly/portability/OpenSSL.cpp.o CMakeFiles/folly_base.dir/folly/portability/PThread.cpp.o CMakeFiles/folly_base.dir/folly/portability/Sched.cpp.o CMakeFiles/folly_base.dir/folly/portability/Sockets.cpp.o CMakeFiles/folly_base.dir/folly/portability/Stdio.cpp.o CMakeFiles/folly_base.dir/folly/portability/Stdlib.cpp.o CMakeFiles/folly_base.dir/folly/portability/String.cpp.o CMakeFiles/folly_base.dir/folly/portability/SysFile.cpp.o CMakeFiles/folly_base.dir/folly/portability/SysMembarrier.cpp.o CMakeFiles/folly_base.dir/folly/portability/SysMman.cpp.o CMakeFiles/folly_base.dir/folly/portability/SysResource.cpp.o CMakeFiles/folly_base.dir/folly/portability/SysStat.cpp.o CMakeFiles/folly_base.dir/folly/portability/SysTime.cpp.o CMakeFiles/folly_base.dir/folly/portability/SysUio.cpp.o CMakeFiles/folly_base.dir/folly/portability/Time.cpp.o CMakeFiles/folly_base.dir/folly/portability/Unistd.cpp.o CMakeFiles/folly_base.dir/folly/settings/Immutables.cpp.o CMakeFiles/folly_base.dir/folly/settings/Settings.cpp.o CMakeFiles/folly_base.dir/folly/settings/Types.cpp.o CMakeFiles/folly_base.dir/folly/ssl/OpenSSLCertUtils.cpp.o CMakeFiles/folly_base.dir/folly/ssl/OpenSSLHash.cpp.o CMakeFiles/folly_base.dir/folly/ssl/OpenSSLKeyUtils.cpp.o CMakeFiles/folly_base.dir/folly/ssl/PasswordCollector.cpp.o CMakeFiles/folly_base.dir/folly/ssl/SSLSessionManager.cpp.o CMakeFiles/folly_base.dir/folly/ssl/detail/OpenSSLSession.cpp.o CMakeFiles/folly_base.dir/folly/stats/QuantileEstimator.cpp.o CMakeFiles/folly_base.dir/folly/stats/TDigest.cpp.o CMakeFiles/folly_base.dir/folly/stats/detail/DoubleRadixSort.cpp.o CMakeFiles/folly_base.dir/folly/synchronization/AsymmetricThreadFence.cpp.o CMakeFiles/folly_base.dir/folly/synchronization/AtomicNotification.cpp.o CMakeFiles/folly_base.dir/folly/synchronization/DistributedMutex.cpp.o CMakeFiles/folly_base.dir/folly/synchronization/Hazptr.cpp.o CMakeFiles/folly_base.dir/folly/synchronization/HazptrDomain.cpp.o CMakeFiles/folly_base.dir/folly/synchronization/HazptrThreadPoolExecutor.cpp.o CMakeFiles/folly_base.dir/folly/synchronization/ParkingLot.cpp.o CMakeFiles/folly_base.dir/folly/synchronization/Rcu.cpp.o CMakeFiles/folly_base.dir/folly/synchronization/SanitizeThread.cpp.o CMakeFiles/folly_base.dir/folly/synchronization/WaitOptions.cpp.o CMakeFiles/folly_base.dir/folly/synchronization/detail/Hardware.cpp.o CMakeFiles/folly_base.dir/folly/synchronization/detail/Sleeper.cpp.o CMakeFiles/folly_base.dir/folly/system/AtFork.cpp.o CMakeFiles/folly_base.dir/folly/system/EnvUtil.cpp.o CMakeFiles/folly_base.dir/folly/system/HardwareConcurrency.cpp.o CMakeFiles/folly_base.dir/folly/system/MemoryMapping.cpp.o CMakeFiles/folly_base.dir/folly/system/Pid.cpp.o CMakeFiles/folly_base.dir/folly/system/Shell.cpp.o CMakeFiles/folly_base.dir/folly/system/ThreadId.cpp.o CMakeFiles/folly_base.dir/folly/system/ThreadName.cpp.o CMakeFiles/folly_base.dir/folly/testing/TestUtil.cpp.o CMakeFiles/folly_base.dir/folly/tracing/AsyncStack.cpp.o CMakeFiles/folly_base.dir/folly/io/async/test/ScopedBoundPort.cpp.o CMakeFiles/folly_base.dir/folly/io/async/test/SocketPair.cpp.o CMakeFiles/folly_base.dir/folly/io/async/test/TimeUtil.cpp.o CMakeFiles/folly_base.dir/folly/memcpy.S.o /usr/lib64/libfmt.so.9.1.0 /usr/lib64/libboost_context.so.1.86.0 /usr/lib64/libboost_filesystem.so.1.86.0 /usr/lib64/libboost_atomic.so.1.86.0 /usr/lib64/libboost_program_options.so.1.86.0 /usr/lib64/libboost_regex.so.1.86.0 /usr/lib64/libboost_system.so.1.86.0 /usr/lib64/libboost_thread.so.1.86.0 -ldouble-conversion /usr/lib64/libgflags.so.2.2.2 -lglog -levent -lz -lssl -lcrypto -lbz2 -llzma -llz4 -lzstd -lsnappy -Wl,-Bstatic -liberty -Wl,-Bdynamic -laio -luring -lsodium -ldl -lunwind && :
/var/tmp/portage/dev-cpp/folly-2025.02.17.00/work/folly-2025.02.17.00/folly/io/async/EpollBackend.h:34: error: type ‘struct EpollBackend’ violates the C++ One Definition Rule [-Werror=odr]
34 | class EpollBackend : public EventBaseBackendBase {
/var/tmp/portage/dev-cpp/folly-2025.02.17.00/work/folly-2025.02.17.00/folly/io/async/EpollBackend.h:34: note: a different type is defined in another translation unit
34 | class EpollBackend : public EventBaseBackendBase {
/var/tmp/portage/dev-cpp/folly-2025.02.17.00/work/folly-2025.02.17.00/folly/io/async/EpollBackend.h:104: note: the first difference of corresponding definitions is field ‘events_’
104 | std::vector events_; // Cache allocation.
/var/tmp/portage/dev-cpp/folly-2025.02.17.00/work/folly-2025.02.17.00/folly/io/async/EpollBackend.h:104: note: a field of same name but different type is defined in another translation unit
104 | std::vector events_; // Cache allocation.
/usr/lib/gcc/x86_64-pc-linux-gnu/14/include/g++-v14/bits/stl_vector.h:428: note: type name ‘std::vector >’ should match type name ‘std::vector >’
428 | class vector : protected _Vector_base<_Tp, _Alloc>
/var/tmp/portage/dev-cpp/folly-2025.02.17.00/work/folly-2025.02.17.00/folly/io/async/EpollBackend.h:45: error: type of ‘__ct_comp ’ does not match original declaration [-Werror=lto-type-mismatch]
45 | explicit EpollBackend(Options options);
/var/tmp/portage/dev-cpp/folly-2025.02.17.00/work/folly-2025.02.17.00/folly/io/async/EpollBackend.cpp:176: note: ‘__ct_comp ’ was previously declared here
176 | EpollBackend::EpollBackend(Options options) : options_(options) {
/var/tmp/portage/dev-cpp/folly-2025.02.17.00/work/folly-2025.02.17.00/folly/io/async/EpollBackend.cpp:176: note: code may be misoptimized unless ‘-fno-strict-aliasing’ is used
/var/tmp/portage/dev-cpp/folly-2025.02.17.00/work/folly-2025.02.17.00/folly/io/async/EpollBackend.h:50: error: type of ‘getPollableFd’ does not match original declaration [-Werror=lto-type-mismatch]
50 | int getPollableFd() const override { return epollFd_; }
/var/tmp/portage/dev-cpp/folly-2025.02.17.00/work/folly-2025.02.17.00/folly/io/async/EpollBackend.h:50: note: ‘getPollableFd’ was previously declared here
50 | int getPollableFd() const override { return epollFd_; }
/var/tmp/portage/dev-cpp/folly-2025.02.17.00/work/folly-2025.02.17.00/folly/io/async/EpollBackend.h:50: note: code may be misoptimized unless ‘-fno-strict-aliasing’ is used
lto1: some warnings being treated as errors
lto-wrapper: fatal error: /usr/bin/x86_64-pc-linux-gnu-g++ returned 1 exit status
compilation terminated.
/usr/lib/gcc/x86_64-pc-linux-gnu/14/../../../../x86_64-pc-linux-gnu/bin/ld: error: lto-wrapper failed
collect2: error: ld returned 1 exit status
```
First reported for Gentoo on `2024.11.04.00`, reproduced on `2025.02.17.00`
[Build Log](https://github.com/user-attachments/files/18880427/folly-2025.02.17.00.20250220-033225.log)
See also: https://bugs.gentoo.org/949607
Contributor guide
Research direction
Start with folly/io/async/EpollBackend.h and folly/io/async/EpollBackend.cpp, then reproduce the CMake build using the diagnostic flags shown in the report. Trace the duplicate or inconsistent EpollBackend definition and confirm that the diagnostic build completes without the ODR error.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cmake, cpp, linux
- Domain
- build-system, operating-systems
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100