Skip to main content

Posts

Showing posts from May, 2026

What are the specific SPEC CPU and real-world app benchmark results for MTE SYNC vs ASYNC on Pixel 8/9 devices?

  On Google Pixel 8 and Pixel 9 devices (powered by ARMv9-based Tensor G3 and Tensor G4 processors), hardware Memory Tagging Extension (MTE) provides native, hardware-accelerated memory checking. The performance difference between ASYNC (Asynchronous) and SYNC (Synchronous) modes reflects a trade-off between zero pipeline stalls and exact instruction-level precision . 1. SPEC CPU Benchmark Results Across the SPEC CPU2017 benchmark suite, MTE overhead is heavily determined by whether a workload is compute-bound or memory/pointer-bound (e.g., node traversal, heavy heap allocations). Benchmark Category MTE Disabled (Baseline) MTE ASYNC Mode MTE SYNC Mode SPEC CPU2017 (Overall Average) $0\%$ $\sim 1.0\% - 1.5\%$ $\sim 3.5\% - 5.2\%$ Compute-Bound (e.g., 508.namd_r , 511.povray_r ) $0\%$ $< 0.5\%$ $\sim 1.0\% - 1.8\%$ Memory/Pointer-Heavy (e.g., 505.mcf_r , 520.omnetpp_r ) $0\%$ $\sim 2.0\% - 3.0\%$ $\sim 8.0\% - 11.5\%...

Waterfox Essentials: Download, Install and Migration, Update Waterfox to the latest release

Note If you installed Waterfox from the Microsoft Store , then you will receive Waterfox updates through the Microsoft Store. This article only applies if you installed Waterfox by downloading it from Waterfox. To check for Waterfox updates on the Microsoft Store, see this Microsoft article . Note If you use your Linux distribution’s packaged version of Waterfox, you will need to wait for an updated package to be released to its package repository. This article only applies if you installed Waterfox manually (without using your distribution’s package manager). Waterfox updates automatically by default, but you can always check for updates at any time. Update Waterfox Windows and Linux: Click the menu button at the right side of the Waterfox toolbar, go to Help, and select About Waterfox. macOS: In the menu bar, open the Waterfox menu and choose About Waterfox. The About Waterfox window will open. Waterfox will check for updates automatically. If an update is avai...

How can I tune Scudo allocator flags and Primary/Secondary allocator parameters to minimize memory overhead?

To minimize memory overhead (Resident Set Size / RSS and virtual memory footprint) in the Scudo Hardened Allocator , you need to tune four key areas: quarantine sizing , page release frequency , thread cache (TSD) pooling , and secondary allocator caching . When ARMv9 MTE is enabled, you can safely apply aggressive memory-saving configurations—such as disabling quarantine—because hardware tag re-tagging already handles Use-After-Free (UAF) protection. 1. Runtime Tuning via SCUDO_OPTIONS / __scudo_default_options() Scudo can be configured at runtime via the SCUDO_OPTIONS environment variable or programmatically by exposing the __scudo_default_options() function in your C/C++ binary. C++ extern "C" const char* __scudo_default_options() { // Aggressive memory-saving defaults return "quarantine_size_kb=0:" "thread_local_quarantine_size_kb=0:" "release_to_os_interval_ms=0:" "secondary_cache_max_entrie...

Waterfox Essentials: Download, Install and Migration, Recovering important data from an old profile

A Waterfox profile stores all of your important data, such as your bookmarks, history, cookies, and passwords. This article explains how to copy the files to a new profile, lists important files in the profile and describes what information is stored in these files. To sync and share data among multiple profiles and devices, see How do I set up Sync on my computer? . To switch to another profile to recover missing data and settings, see Recover user data missing after Waterfox update . Note Because your preferences and extensions often cause problems, this article does not explain how to copy these between profiles. If you follow the steps in this article, you will have to reinstall your extensions and reconfigure your Waterfox preferences. Back up your current profile Before starting it is recommended that you make a complete backup of your existing Waterfox profile in case something goes wrong. Please read the Back up and restore information in Waterfox profiles ...

How does Scudo heap tagging with MTE compare to LLVM compiler-generated stack variable tagging?

While both Scudo heap tagging and LLVM stack variable tagging rely on ARMv9 Memory Tagging Extension (MTE) hardware to enforce memory safety, they operate at different layers of the software stack and target distinct memory domains. Scudo handles dynamic memory at runtime via the C library allocator , whereas LLVM stack tagging is generated at compile time by the compiler backend ( -fsanitize=memtag-stack ). 1. Architectural Comparison Matrix Architectural Feature Scudo Heap Tagging (-fsanitize=memtag-heap) LLVM Stack Tagging (-fsanitize=memtag-stack) Execution Layer Runtime Allocator ( libc / Bionic) Compiler Code Generation ( AArch64StackTagging LLVM Pass) Target Memory Domain Heap ( malloc , calloc , free , new , delete ) Stack (Local variables, function frames, stack buffers) Tag Generation Method IRG instruction generates a new random tag per malloc() call. One base IRG tag for the stack frame; individual local variables derive...

Waterfox Essentials: Download, Install and Migration, Profiles - Where Waterfox stores your bookmarks, passwords and other user data

All of the changes you make in Waterfox, such as your home page, what toolbars you use, extensions you have installed, saved passwords and your bookmarks, are stored in a special folder called a profile . Your profile folder is stored in a separate place from the Waterfox program so that, if something ever goes wrong with Waterfox, your information will still be there. It also means that you can uninstall Waterfox without losing your settings and you don’t have to reinstall Waterfox to clear your information or troubleshoot a problem. How do I find my profile? Click the menu button , click Help and select Troubleshooting Information. The Troubleshooting Information tab will open. Under the Application Basics section next to Profile Folder , click Open Folder. Your profile folder will open. Note If you are unable to open or use Waterfox, follow the instructions in Finding your profile without opening Waterfox . Finding your profile without opening Waterfox ...

What is the CPU and memory performance overhead of Scudo with MTE enabled compared to standard malloc?

When compared to standard malloc implementations (such as glibc malloc or non-MTE jemalloc / Scudo ), enabling ARMv9 Memory Tagging Extension (MTE) in the Scudo Hardened Allocator introduces low single-digit performance and memory overheads. This represents a major leap over software-based sanitizers (like ASan or HWASan), which typically incur a $100\text{--}200\%$ execution penalty. 1. CPU Performance Overhead The CPU overhead of Scudo with MTE depends heavily on whether the system runs in ASYNCHRONOUS (ASYNC) or SYNCHRONOUS (SYNC) mode. TYPICAL CPU PERFORMANCE OVERHEAD +---------------------------------------------------------------+ | Standard Scudo / malloc | 0% (Baseline) | | Scudo + MTE (ASYNC) | 1% - 3% | | Scudo + MTE (SYNC) | 3% - 6% (up to ~15-20% full-stack)| | HWASan / ASan | 100% - 200% | +-----------------------------------------------------------...

Waterfox Essentials: Download, Install and Migration, Profile Manager — Create, remove or switch Waterfox profiles

  Profiles keep your Waterfox data separate (bookmarks, passwords, settings, and extensions). Use the Profile Manager to create, rename, remove, or switch profiles. About profiles Each profile has its own data and settings. Multiple profiles let you separate work and personal browsing or test changes safely. Waterfox uses a dedicated profile per installation . Switching channels or downgrading creates or requires a different profile to protect your data. Open the Profile Manager Option A — From about:profiles Type about:profiles in the address bar and press Enter. The About Profiles page opens. Click Create a New Profile to add one. Use the Launch profile in new browser button to open another profile. Option B — Command line (Waterfox closed) Windows: Press Windows+R, type waterfox.exe -P and press Enter. macOS: Quit Waterfox, open Terminal, run /Applications/Waterfox.app/Contents/MacOS/waterfox -P . Linux: Quit Waterfox, run waterfox -...

How does the Scudo memory allocator manage MTE tags during malloc and free calls in C/C++?

The Scudo Hardened Allocator (the default dynamic heap allocator in Android Bionic and LLVM compiler-rt) integrates directly with ARMv9 Memory Tagging Extension (MTE) hardware to prevent heap buffer overflows and Use-After-Free (UAF) vulnerabilities. Because MTE hardware tags physical memory in 16-byte granules , Scudo enforces a strict 16-byte minimum alignment on all heap allocations. 1. What Happens During malloc(size) When an application calls malloc() , Scudo executes a four-step hardware tagging sequence: Step 1: IRG Step 2 & 3: STGP / STG Step 4 +---------------------------------------------+ +---------------------------------------+ +----------------------+ | Generate Random Tag (e.g., 0x9) for Pointer | | Write Tag 0x9 to Physical RAM Granules| | Return Tagged Pointer| | Upper Byte: [0x09][Address Bits 0..59] | | [Granule 0: 0x9] [Granule 1: 0x9] | | 0x09000073c323d590 | +--------------...