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:
- Gecko checks
media.hls.enabled→true - Gecko attempts to instantiate the HLS player via
GeckoHLSResourceWrapper.create() -
GeckoPlayerFactoryreturnsnullbecauseGeckoHlsPlayerclass doesn't exist -
GeckoHLSResourceWrapper.create()calls.init()on null →NullPointerException - 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
- Verified issue does not occur in stock Firefox 146 or 148
- Verified issue persists with all extensions disabled
- Ruled out memory pressure
- Ruled out JavaScript-initiated reload (
beforeunloadevent listener did not fire) - Captured logcat with Gecko logging enabled
- Identified
GeckoHlsPlayerClassNotFoundException followed by NPE and content process crash - Confirmed
media.hls.enabled = trueinabout:config - Confirmed workaround: setting
media.hls.enabled = falseeliminates 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
Releasespage (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
FAQpage (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
- Open IronFox
- Navigate to an Amazon product page with video content (e.g., at time of writing
https://www.amazon.com/gp/aw/d/B0CSPLB4HY) - Observe the page crash and reload