Skip to content

Bug Report: Android App Crashes on Max Zoom-Out with "Indistinct Marsh" Area Symbol Overview #2518

Description

@andrisgr

The OpenOrienteering Mapper Android app experiences a fatal crash to the home screen when completely zooming out to full map extents on large vector files (\approx 30\text{ MB}). The crash has been isolated to the rendering of the Indistinct Marsh area symbol (ISOM 310). Replacing this symbol with a standard, solid-line Marsh symbol (ISOM 312) completely resolves the issue.
Environment
• Application: OpenOrienteering Mapper (Android Port)
• OS: Android (Multiple versions impacted)
• File Size: \approx 30\text{ MB} .omap / .omz (Pure vector data, no background templates loaded)
• Desktop Status: The same file opens, pans, zooms, and performs flawlessly on the Desktop version (Windows/Linux/macOS).
Steps to Reproduce

  1. Load a relatively large map file containing large area polygons designated with the Indistinct Marsh (dashed-line pattern) symbol onto an Android device.
  2. Open the file in the OpenOrienteering Mapper Android app.
  3. Use the pinch-to-zoom gesture or the "Zoom to Extents" tool to completely zoom out until the entire map boundary is visible on the screen.
  4. The application freezes momentarily and immediately crashes to the Android home screen.
    Expected Behavior
    The app should downsample or scale the dash patterns dynamically, allowing the user to view the full map extents without crashing, or drop the sub-pixel details during low-zoom rendering.
    Actual Behavior
    The application terminates abruptly without an explicit error prompt when the dense dashed lines of the indistinct marsh pattern collapse into sub-pixel space.
    Technical Root Cause Analysis
    • Pattern Density & Vertex Blowup: The standard marsh symbol uses simple, solid lines. The indistinct marsh symbol uses multi-segment dashed lines. To render this as an area fill, the rendering engine must calculate individual coordinate start/stop positions for every single micro-dash inside the boundary.
    • Viewport Culling Failure: When zoomed in, Android's engine only renders the visible dashes (Frustum Culling). When zooming completely out, culling is disabled, forcing the mobile GPU/CPU to buffer and render millions of tiny line segments simultaneously into a tight pixel cluster.
    • Mobile Driver Limits: This triggers a vertex buffer overflow or a calculation exception in the mobile Qt/OpenGL rendering layer, causing Android to force-close the app due to unexpected memory/rendering exhaustion.
    Confirmed Workaround
    • Symbol Substitution: Select all objects using the Indistinct Marsh symbol on a desktop computer and change their symbol to the standard Marsh (solid lines) symbol.
    • Once saved and reloaded onto the Android device, the map can be fully zoomed out to maximum extents with zero lag or crashes.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions