KeDeng has posted comments on this change. ( http://gerrit.cloudera.org:8080/22977 )
Change subject: [arm64] Fix SIGBUS errors for atomic operations ...................................................................... Patch Set 1: (2 comments) Thank you for your response. Our current environment runs on Docker instances deployed on ARM architecture. The operating system information is as follows: # cat /etc/os-release NAME="Rocky Linux" VERSION="9.5 (Blue Onyx)" ID="rocky" ID_LIKE="rhel centos fedora" VERSION_ID="9.5" PLATFORM_ID="platform:el9" PRETTY_NAME="Rocky Linux 9.5 (Blue Onyx)" ANSI_COLOR="0;32" LOGO="fedora-logo-icon" CPE_NAME="cpe:/o:rocky:rocky:9::baseos" HOME_URL="https://rockylinux.org/" VENDOR_NAME="RESF" VENDOR_URL="https://resf.org/" BUG_REPORT_URL="https://bugs.rockylinux.org/" SUPPORT_END="2032-05-31" ROCKY_SUPPORT_PRODUCT="Rocky-Linux-9" ROCKY_SUPPORT_PRODUCT_VERSION="9.5" REDHAT_SUPPORT_PRODUCT="Rocky Linux" REDHAT_SUPPORT_PRODUCT_VERSION="9.5" The CPU information shows: # lscpu Architecture: aarch64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 16 On-line CPU(s) list: 0-15 Vendor ID: ARM Model name: Neoverse-N1 Model: 1 Thread(s) per core: 1 Core(s) per cluster: 16 Socket(s): - Cluster(s): 1 Stepping: r3p1 BogoMIPS: 50.00 Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp ssbs NUMA: NUMA node(s): 1 NUMA node0 CPU(s): 0-15 http://gerrit.cloudera.org:8080/#/c/22977/1/src/kudu/tablet/concurrent_btree.h File src/kudu/tablet/concurrent_btree.h: http://gerrit.cloudera.org:8080/#/c/22977/1/src/kudu/tablet/concurrent_btree.h@461 PS1, Line 461: alignas(8) AtomicVersionValue versionPlaceholder_; > This actually has a measurable performance impact on was graviton and kills Would adding a new conditional compilation symbol help in this case? http://gerrit.cloudera.org:8080/#/c/22977/1/src/kudu/tablet/concurrent_btree.h@1636 PS1, Line 1636: arch64__ : // Make sure the alignment is sufficient for the atomic version. : constexpr size_t kMaxAlign = std::max(alignof(AtomicVersion), : alignof(LeafNode<Traits>)); : #else : constexpr size_t kMaxAlign = sizeof(AtomicVersion); : #endif : void* m > On what platform is it not 8? This isn't the primary root cause - the alignas(8) above is actually the most critical fix. I suspect the SIGBUS was triggered because versionPlaceholder_ likely lost its natural alignment within the PACKED struct. -- To view, visit http://gerrit.cloudera.org:8080/22977 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-Project: kudu Gerrit-Branch: master Gerrit-MessageType: comment Gerrit-Change-Id: I6f8ea46308f942ded97d93d27ae466fd13a31b53 Gerrit-Change-Number: 22977 Gerrit-PatchSet: 1 Gerrit-Owner: KeDeng <[email protected]> Gerrit-Reviewer: KeDeng <[email protected]> Gerrit-Reviewer: Kudu Jenkins (120) Gerrit-Reviewer: Marton Greber <[email protected]> Gerrit-Reviewer: Zoltan Martonka <[email protected]> Gerrit-Comment-Date: Thu, 05 Jun 2025 02:45:13 +0000 Gerrit-HasComments: Yes
