Content process crash on HLS video despite HLS being disabled in build configuration / media.hls.enabled defaulting to true in IronFox 147.0

BUG

Summary

IronFox crashes the content process when loading pages containing HLS video (e.g., certain Amazon product pages), despite the build configuration explicitly disabling HLS support. The crash occurs because media.hls.enabled is set to true at runtime, but the GeckoHlsPlayer class is not included in the build—resulting in a NullPointerException in GeckoHLSResourceWrapper.create() that kills the content process.

Expected Behavior

Page loads normally. If HLS is unsupported, video should fail gracefully without crashing the tab.

Actual Behavior

The content process crashes with a NullPointerException, the tab dies, and IronFox automatically restores/reloads the page, creating a crash loop on affected pages.

Root Cause Analysis

The build configuration at https://gitlab.com/ironfox-oss/IronFox/-/blob/dev/patches/gecko-overlay/ironfox/ironfox.configure explicitly disables HLS:

# Disable HLS (HTTP Live Streaming)
## To address privacy and security concerns due to the use of an external ExoPlayer library
## https://gitlab.torproject.org/tpo/applications/tor-browser/-/issues/29859
imply_option("MOZ_ANDROID_HLS_SUPPORT", False)

I also see that the media.hls.enabled default should be false, per https://gitlab.com/ironfox-oss/IronFox/-/blob/ba69bb8dc98777d31cd05ee2c17b78e5ff46548d/patches/preferences/phoenix-android.js#L2174:

/// Disable HLS
// This uses an additional external library (ExoPlayer), and poses privacy & security concerns
// This is already the default for all platforms except Android
// https://gitlab.torproject.org/tpo/applications/tor-browser/-/issues/29859
pref("media.hls.enabled", false);

However, media.hls.enabled remains true at runtime (verified in about:config). When a page attempts to load HLS content:

  1. Gecko checks media.hls.enabled → true
  2. Gecko attempts to instantiate the HLS player via GeckoHLSResourceWrapper.create()
  3. GeckoPlayerFactory returns null because GeckoHlsPlayer class doesn't exist
  4. GeckoHLSResourceWrapper.create() calls .init() on null → NullPointerException
  5. Content process crashes

Relevant Logcat Output

01-14 21:27:54.406 E GeckoPlayerFactory: Class GeckoHlsPlayer not found or failed to create
01-14 21:27:54.406 E GeckoPlayerFactory: java.lang.ClassNotFoundException: org.mozilla.gecko.media.GeckoHlsPlayer
01-14 21:27:54.406 E GeckoPlayerFactory:    at java.lang.Class.classForName(Native Method)
01-14 21:27:54.406 E GeckoPlayerFactory:    at java.lang.Class.forName(Class.java:591)
01-14 21:27:54.406 E GeckoPlayerFactory:    at java.lang.Class.forName(Class.java:496)
01-14 21:27:54.406 E GeckoPlayerFactory:    at org.mozilla.gecko.media.GeckoHLSResourceWrapper.create(GeckoHLSResourceWrapper.java:19)
01-14 21:27:54.406 E GeckoPlayerFactory:    at org.mozilla.gecko.mozglue.GeckoLoader.nativeRun(Native Method)
01-14 21:27:54.406 E GeckoPlayerFactory:    at org.mozilla.gecko.GeckoThread.run(GeckoThread.java:971)
01-14 21:27:54.406 E GeckoPlayerFactory: Caused by: java.lang.ClassNotFoundException: org.mozilla.gecko.media.GeckoHlsPlayer
01-14 21:27:54.406 E GeckoPlayerFactory:    ... 6 more
01-14 21:27:54.407 E GeckoHLSResourceWrapper: Failed to create GeckoHlsResourceWrapper !
01-14 21:27:54.407 E GeckoHLSResourceWrapper: java.lang.NullPointerException: Attempt to invoke interface method 'void org.mozilla.gecko.media.BaseHlsPlayer.init()' on a null object reference
01-14 21:27:54.407 E GeckoHLSResourceWrapper:       at org.mozilla.gecko.media.GeckoHLSResourceWrapper.create(GeckoHLSResourceWrapper.java:50)
01-14 21:27:54.407 E GeckoHLSResourceWrapper:       at org.mozilla.gecko.mozglue.GeckoLoader.nativeRun(Native Method)
01-14 21:27:54.407 E GeckoHLSResourceWrapper:       at org.mozilla.gecko.GeckoThread.run(GeckoThread.java:971)

01-14 21:27:54.920 F DEBUG   : pid: 18260, tid: 18292, name: Isolated Web Co  >>> org.ironfoxoss.ironfox:isolatedTab0:... <
01-14 21:27:55.028 I ActivityManager: Process ... has died: fg BTOP
01-14 21:27:55.037 D GeckoViewContent: observe: oop-frameloader-crashed

This crash was reproduced multiple times with identical stack traces.

Workaround

Setting media.hls.enabled to false in about:config completely resolves the issue.

Important Note

I did not manually enable media.hls.enabled. My IronFox configuration has not been modified to enable HLS, this preference appears to be incorrectly defaulting to true despite the phoenix-android.js patch. Additionally, about:config shows both Reset and Toggle buttons when media.hls.enabled is set to false, but only has the Toggle button when media.hls.enabled is set to true, which is behavior consistent with the default value being true.

Debugging Steps Performed

  1. Verified issue does not occur in stock Firefox 146 or 148
  2. Verified issue persists with all extensions disabled
  3. Ruled out memory pressure
  4. Ruled out JavaScript-initiated reload (beforeunload event listener did not fire)
  5. Captured logcat with Gecko logging enabled
  6. Identified GeckoHlsPlayer ClassNotFoundException followed by NPE and content process crash
  7. Confirmed media.hls.enabled = true in about:config
  8. Confirmed workaround: setting media.hls.enabled = false eliminates crashes

Confirmation Checklist

  • I confirm that this issue occurs on the latest release of IronFox. You can check what the latest version is on the Releases page (https://gitlab.com/ironfox-oss/IronFox/-/releases).
  • I confirm that this issue occurs on the latest Nightly release of IronFox. You can find steps on how to find and install the latest Nightly release here.
  • I confirm that this issue has NOT already been reported on the GitLab issue tracker (https://gitlab.com/ironfox-oss/IronFox/-/issues) and/or the Codeberg issue tracker (https://codeberg.org/ironfox-oss/IronFox/issues).
  • I confirm that this issue is NOT already covered on the FAQ page (https://ironfoxoss.org/docs/faq/).
  • I confirm that this issue is NOT related to a website breakage or compatibility issue as described above.
  • I confirm that this issue does NOT occur on the latest release of Mozilla Firefox. You can find the latest APKs here: https://ftp.mozilla.org/pub/fenix/releases/.
  • I confirm that this issue does NOT occur on the latest release of Mozilla Firefox Nightly. You can find the latest APKs here: https://ftp.mozilla.org/pub/fenix/nightly/.

Android

  • Device: Pixel 8 Pro
  • Android version: 16
  • ROM: GrapheneOS, build number 2026011001

Version

IronFox version: IronFox 147.0 (Build #2016137775), 444ab875, GV: 147.0-20260113212102, AS: 147.0

Obtained through Accrescent app store.

First Version

IronFox 147.0

Add-ons

uBlock Origin, SponsorBlock, LibRedirect, Dark Reader, Video Background Play Fix.

I have verified that uninstalling and reinstalling Video Background Play Fix does not set media.hls.enabled to true.

Reproduce

  1. Open IronFox
  2. Navigate to an Amazon product page with video content (e.g., at time of writing https://www.amazon.com/gp/aw/d/B0CSPLB4HY)
  3. Observe the page crash and reload
Edited Jan 15, 2026 by Anonymous Contributor
Assignee Loading
Time tracking Loading