Skip to main content

Posts

Showing posts from April, 2026

Waterfox Essentials: Download, Install and Migration, Install Waterfox on Linux.

This article only applies to Linux. For instructions to install Waterfox on Windows, see How to install Waterfox on Windows . Install from your distribution package manager (Recommended) To install Waterfox using your distribution package manager, please refer to your Linux distribution’s documentation. This method is recommended because it ensures Waterfox and all the required libraries are installed and configured optimally for your distribution. However, there may be a small delay between the official release of a new version of Waterfox and the moment when your distribution updates the version it distributes. Your distribution may also distribute it without the Waterfox branding. Install from Flatpak To install Waterfox from Flatpak, install and configure Flatpak on your computer. Once Flatpak is installed, go to the Waterfox Flathub’s page and click the Install button. Alternatively, you can type the following command in a terminal: flatpak install flathub net.wat...

How can I integrate MTE crash detection and tombstone parsing into an automated Android CI/CD testing pipeline?

  Integrating ARMv9 Memory Tagging Extension (MTE) crash detection into an automated CI/CD pipeline requires a 4-stage strategy: Environment Preparation: Forcing MTE synchronous mode ( sync ) and clearing stale logs. Test Execution & Capture: Running connected tests while capturing logcat and /data/tombstones/ . Symbolication & Parsing: Filtering tombstones for SEGV_MTESERR (MTE errors) and using ndk-stack with unstripped .so binaries to pinpoint source line numbers. Pipeline Gate: Failing the build and uploading symbolicated logs as CI artifacts. Stage 1: App & Environment Configuration 1. Configure AndroidManifest.xml Ensure your app or test application requests synchronous MTE mode so the CPU aborts instantly on tag mismatches: XML <application android:name=".MainApplication" android:memtagMode="sync"> </application> 2. Prepare the Device/Emulator via ...

Waterfox Essentials: Download, install amd migration, Install an older version of Waterfox

Caution Waterfox now includes downgrade protection to prevent corruption of user profile data . If you install an older version, you’ll be prompted to create a new Waterfox profile. If there is a problem with a new version of Waterfox, some people may want to downgrade Waterfox to a previous version but we do not recommend this. The latest Waterfox version includes security updates so downgrading to an older version leaves you more vulnerable to attacks and usually doesn’t fix the problem. This article gives you some alternatives to downgrading and links to older versions of Waterfox if you do choose to downgrade. Unwanted features in the new Waterfox version If you dislike new features in the latest version of Waterfox, your first reaction might be to go back to the previous version. Rather than downgrading, try getting used to the new features or ask a question on the support forum, to see if there is a workaround or a way to restore the old behavior without downgrading Wa...

How does Permissive MTE mode work in Android system services to record tombstones without crashing the process?

Permissive MTE mode allows critical Android system services to detect memory safety bugs and generate a full debugger tombstone log without crashing or restarting the daemon. This mode is designed specifically for system services (not third-party apps) to audit native code for memory vulnerabilities during OS bring-up or production rollouts without triggering bootloops or system instability. Technical Mechanism: How It Works When a system service configured in Permissive MTE mode experiences a tag mismatch, Android handles the fault through a four-step kernel and debuggerd handler routine: +-------------------------------------------------------------------------+ | 1. Hardware Memory Tag Mismatch | | • CPU raises SIGSEGV (SEGV_MTESERR or SEGV_MTEAERR) | +-------------------------------------------------------------------------+ | v +----------...

Waterfox Essentials: Download, install amd migration, Importing Safari data into Waterfox

Note This article only applies to Mac. Waterfox allows you to easily and safely import data from other browsers , such as bookmarks, browsing history, and custom preferences. This article explains how to allow Waterfox full disk access to your computer, so that you can import data into Waterfox from your Safari browser on macOS 10.14 (Mojave) or higher. Starting in moder Waterfox versions , full disk access is only required on macOS 10.14 ( bug 1493103 ). Before importing: Enable full disk access for the necessary Waterfox applications If you’re using a Mac and running macOS version 10.14 or higher, please be sure to enable full disk access for the necessary Waterfox applications, before importing data. Note Quit Safari and the Waterfox applications that you’re enabling full disk access for, prior to performing the steps below. Otherwise, these changes won’t take effect until these applications have been terminated. To enable full disk access for the necessary Waterfo...

How do I analyze and debug an Android debuggerd tombstone crash log caused by an MTE tag mismatch?

When an ARMv9 Memory Tagging Extension (MTE) tag mismatch occurs on Android, the bionic libc signal handler catches the SIGSEGV signal and requests a crash dump from debuggerd . The resulting tombstone file located in /data/tombstones/ contains diagnostic metadata generated by the hardware and the Scudo memory allocator. 1. Locating and Pulling the Tombstone Retrieve the tombstone from the device using adb : Bash # Find the latest tombstone path from logcat adb logcat | grep -i "tombstone" # Pull the specific tombstone file (requires root or debuggable build) adb pull /data/tombstones/tombstone_00 . # Alternatively, capture via bugreport on non-rooted production devices adb bugreport bugreport.zip 2. Key Sections of an MTE Tombstone An MTE crash log is divided into five distinct sections: A. Signal & Fault Address Header Look at the signal code and the fault address near the top of the file: Plaintext Cmd line: com.example.myapp pid:...

Waterfox Essentials: Download, install and migration, Import data from another browser.

c You can import bookmarks, passwords, browsing history, cookies, and more into Waterfox from other browsers such as Chrome, Edge, Safari, and Internet Explorer. You can do this during first-run or any time later from Waterfox settings. If you use a Mozilla account with Waterfox on multiple devices, you can also sync data instead of importing. See Set up Sync on your computer . What you can import Depending on the source browser and platform, Waterfox can import: Bookmarks/Favorites Browsing history Saved passwords Cookies (session-related site data) Other data the source browser supports exporting Extensions from Google Chrome (when compatible; see below) Notes: The exact list of importable items depends on the source browser and may vary by platform. Some browsers restrict access to certain data or profiles while they are running; close the other browser before importing. Import during setup When you first install Waterfox, you ma...

How do developers enable and compile C/C++ code with ARMv9 MTE flags for Windows or Android applications?

To enable and compile C/C++ code with ARMv9 Memory Tagging Extension (MTE) support, developers rely on the LLVM/Clang compiler toolchain, which generates the hardware instrumentation passes for memory allocations and pointer operations. 1. Core Clang/LLVM Compiler & Linker Flags Because MTE requires both instruction set architecture (ISA) support and compiler instrumentation, both target flags and sanitizer options must be passed to the driver. Target ISA Flags MTE was introduced in ARMv8.5-A and made standard in ARMv9-A. You must instruct the compiler to output MTE-capable instructions: -march=armv8.5-a+memtag or -march=armv9-a Sanitizer Flags LLVM uses the -fsanitize=memtag flag to instrument memory allocations: Full Instrumentation: -fsanitize=memtag (enables stack, heap, and global tagging) Granular Options: -fsanitize=memtag-heap : Instruments dynamic allocations via the system memory allocator (e.g.,...