Firefox installed from packages on my RaspBerry Pi Zero crashes every time I launch it...

Hello to everyone.

I've installed FreeBSD 14.2 on my Raspberry Pi Zero 2W. The problem that I'm having is that Firefox crashes all the time. The errors that it gives are :

Code:
freebsd@generic:~/Desktop % firefox

[Parent 2225, Main Thread] WARNING: remote volume monitor with dbus name org.gtk.vfs.UDisks2VolumeMonitor is not supported: 'glib warning', file /wrkdirs/usr/ports/www/firefox/work/firefox-136.0.2/toolkit/xre/nsSigHandlers.cpp:201

(firefox:2225): GVFS-RemoteVolumeMonitor-WARNING **: 20:14:04.342: remote volume monitor with dbus name org.gtk.vfs.UDisks2VolumeMonitor is not supported
console.error: ({})
console.error: "Experiment add-an-image-to-pdf-with-alt-text-rollout has unknown featureId: addAnImageInPDF"
JavaScript error: resource:///modules/backup/BackupService.sys.mjs, line 108: NS_ERROR_FAILURE: Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIProperties.get]
console.warn: services.settings: Could not determine network status. Message: TypeError: Cc[aContract] is undefined
console.warn: services.settings: Could not determine network status. Message: TypeError: lazy.gNetworkLinkService is undefined
console.warn: services.settings: Could not determine network status. Message: TypeError: lazy.gNetworkLinkService is undefined
console.warn: services.settings: Could not determine network status. Message: TypeError: lazy.gNetworkLinkService is undefined
console.warn: services.settings: Could not determine network status. Message: TypeError: lazy.gNetworkLinkService is undefined
console.warn: services.settings: Could not determine network status. Message: TypeError: lazy.gNetworkLinkService is undefined
console.warn: services.settings: Could not determine network status. Message: TypeError: lazy.gNetworkLinkService is undefined
console.warn: services.settings: Could not determine network status. Message: TypeError: lazy.gNetworkLinkService is undefined
console.warn: services.settings: Could not determine network status. Message: TypeError: lazy.gNetworkLinkService is undefined
console.warn: services.settings: Could not determine network status. Message: TypeError: lazy.gNetworkLinkService is undefined
console.warn: services.settings: Could not determine network status. Message: TypeError: lazy.gNetworkLinkService is undefined
console.warn: services.settings: Could not determine network status. Message: TypeError: lazy.gNetworkLinkService is undefined
console.warn: services.settings: Could not determine network status. Message: TypeError: lazy.gNetworkLinkService is undefined
console.warn: services.settings: Could not determine network status. Message: TypeError: lazy.gNetworkLinkService is undefined
console.warn: services.settings: Could not determine network status. Message: TypeError: lazy.gNetworkLinkService is undefined
console.warn: services.settings: Could not determine network status. Message: TypeError: lazy.gNetworkLinkService is undefined
console.warn: services.settings: Could not determine network status. Message: TypeError: lazy.gNetworkLinkService is undefined
console.warn: services.settings: Could not determine network status. Message: TypeError: lazy.gNetworkLinkService is undefined
console.warn: services.settings: Could not determine network status. Message: TypeError: lazy.gNetworkLinkService is undefined
console.warn: services.settings: Could not determine network status. Message: TypeError: lazy.gNetworkLinkService is undefined
console.warn: services.settings: Could not determine network status. Message: TypeError: lazy.gNetworkLinkService is undefined
console.warn: services.settings: Could not determine network status. Message: TypeError: lazy.gNetworkLinkService is undefined
console.warn: services.settings: Could not determine network status. Message: TypeError: lazy.gNetworkLinkService is undefined
console.warn: services.settings: Could not determine network status. Message: TypeError: lazy.gNetworkLinkService is undefined
console.warn: services.settings: Could not determine network status. Message: TypeError: lazy.gNetworkLinkService is undefined
console.warn: services.settings: Could not determine network status. Message: TypeError: lazy.gNetworkLinkService is undefined
console.warn: services.settings: Could not determine network status. Message: TypeError: lazy.gNetworkLinkService is undefined
console.warn: services.settings: Could not determine network status. Message: TypeError: lazy.gNetworkLinkService is undefined
console.warn: services.settings: Could not determine network status. Message: TypeError: lazy.gNetworkLinkService is undefined
console.warn: services.settings: Could not determine network status. Message: TypeError: lazy.gNetworkLinkService is undefined
console.warn: services.settings: Could not determine network status. Message: TypeError: lazy.gNetworkLinkService is undefined
console.warn: services.settings: Could not determine network status. Message: TypeError: lazy.gNetworkLinkService is undefined
console.warn: services.settings: Could not determine network status. Message: TypeError: lazy.gNetworkLinkService is undefined
console.warn: services.settings: Could not determine network status. Message: TypeError: lazy.gNetworkLinkService is undefined
console.warn: services.settings: Could not determine network status. Message: TypeError: lazy.gNetworkLinkService is undefined
console.warn: services.settings: Could not determine network status. Message: TypeError: lazy.gNetworkLinkService is undefined
console.warn: services.settings: Could not determine network status. Message: TypeError: lazy.gNetworkLinkService is undefined
console.warn: services.settings: Could not determine network status. Message: TypeError: lazy.gNetworkLinkService is undefined
console.warn: services.settings: Could not determine network status. Message: TypeError: lazy.gNetworkLinkService is undefined
console.warn: services.settings: Could not determine network status. Message: TypeError: lazy.gNetworkLinkService is undefined
console.warn: services.settings: Could not determine network status. Message: TypeError: lazy.gNetworkLinkService is undefined
console.warn: services.settings: Could not determine network status. Message: TypeError: lazy.gNetworkLinkService is undefined
console.warn: services.settings: Could not determine network status. Message: TypeError: lazy.gNetworkLinkService is undefined
console.warn: services.settings: Could not determine network status. Message: TypeError: lazy.gNetworkLinkService is undefined
console.warn: services.settings: Could not determine network status. Message: TypeError: lazy.gNetworkLinkService is undefined
Segmentation fault (core dumped)
Exiting due to channel error.
Exiting due to channel error.
Exiting due to channel error.
Exiting due to channel error.
Exiting due to channel error.

I've asked to the ML and someone replied with the following message :

Some early revisions of the Cortex-A53 have an erratum (835769) whereby it is possible for a 64-bit multiply-accumulate instruction in AArch64 state to generate an incorrect result. The details are quite complex and hard to determine statically, since branches in the code may exist in some circumstances, but all cases end with a memory (load, store, or prefetch) instruction followed immediately by the multiply-accumulate operation.

Cortex-A53_MPCore_Software_Developers_Errata_Notice_21.pdf

https://gcc.gnu.org/legacy-ml/gcc-patches/2014-10/msg00906.html

To work on these computers, all software must be compiled with the "-mfix-cortex-a53-835769" compiler option.

Compiling Firefox from the ports on the Raspberry Pi Zero is impossible. It would take ages because it has only 500 MB of memory.

I could try to compile FreeBSD from the ports adding that parameter...BUT...what are the parameters to slow down the compilation so that it does not give an error because it has exceeded the 500 mb memory buffer limit ?

Even if it takes a month, it would not matter, the important thing is that the compilation does not give errors that force me to start over. Also tell me what is the parameter that avoids starting over. Thanks.
 
I not sure I agree with the prognosis but what you should do is only build Firefox from ports and use packages for the rest. It will speed it up alot.

cd /usr/ports/www/firefox/
make build-depends-list | cut -c 12- | xargs pkg install -A -y
make install

Then if it works:
pkg lock firefox
 
what are the parameters to slow down the compilation so that it does not give an error because it has exceeded the 500 mb memory buffer limit ?
The amount of cores you tell it to use. The -j [numcpus] flag
-j1 will be slow as crap, -j4 fastest but will fail.
Try -j2 to start with and see if it builds.

Ports dont respect the flag much though.
How much actual RAM is on it? tmpfs might be best set at auto
 
512 MB ; 1 GHz single-core CPU. What's the parameter to add to restart the compilation from where it stops ? this is very important.
 
Make usually keeps its object files. So all you need to do is restart make after fixing error.

But with 512MB ram you are not going to be in bad shape. You need to consider cross-compiling.
 
Code:
# cd /usr/ports/www/firefox/
# make build-depends-list | cut -c 12- | xargs pkg install -A -y
# make MAKE_JOBS_UNSAFE=yes install

seems to be able to compile Firefox slowly but without errors...
 
The compilation is stopping itself from time to time,maybe when I'm sleeping and I'm losing a lot of time. What I need here is a script that detect that the compilation is stopped and it restarts it automatically,writing again and again the command "make MAKE_JOBS_UNSAFE=yes install". Have you created something like this for your own use already ? I'm interested to do it,but it will take a lot of time for me to complete the script.
 
Maybe Firefox can be optimized to run with 512 MB. For example,installing the 32 bit version of Firefox on the Raspberry Pi zero (if it exists),according with this post :


just because on a 64 bit os we can run 32 bit applications....at least in Linux...or..installing FreeBSD at 32 bit on the raspberry pi zero ?

Actually maybe this version can be installed :

FreeBSD-13.5-STABLE-arm-armv6-RPI-B-20250403-f8cd0c8e20b0-259236.img.xz

and it maybe lighter than the 64 bit version...so,Firefox at 32 bit may work better...
 
I will try to cross compile Firefox for 32 and 64 bit on my PC where I have installed FreeBSD for x86-64 following this fresh tutorial :

https://www.siberoloji.com/how-to-c...arm-architecture-on-freebsd-operating-system/

because doing it directly on the raspberry pi zero is impossible...

For the cross compilation of Firefox for the Raspberry Pi zero 2W at 32 bit on my AMD64 PC,should I choose armv6 or armv7 ?

Define the cross-compilation toolchain variables:
Code:
export TARGET=arm
export TARGET_ARCH=armv7

Thanks.
 
Trying to cross compile Firefox for armv7 / 32 bit for the Raspy Zero 2W / on my AMD64 PC following this tutorial :

https://www.siberoloji.com/how-to-c...arm-architecture-on-freebsd-operating-system/

failing...please give a look below :

Code:
marietto# cd /usr/ports/www/firefox
marietto# pkg install gcc llvm binutils

marietto# export TARGET=arm
marietto# export TARGET_ARCH=armv7
marietto# export CROSS_TOOLCHAIN=llvm
marietto# export CC=clang
marietto# export CXX=clang++
marietto# export AS=llvm-as
marietto# export LD=ld.lld

marietto# ls
Makefile distinfo pkg-descr
Makefile.options files pkg-message

marietto# cmake -DCMAKE_SYSTEM_NAME=Generic \
-DCMAKE_SYSTEM_PROCESSOR=armv7 \
-DCMAKE_C_COMPILER=arm-none-eabi-gcc \
-DCMAKE_CXX_COMPILER=arm-none-eabi-g++ .

CMake Warning:
  No source or binary directory provided.  Both will be assumed to be the
  same as the current working directory, but note that this warning will
  become a fatal error in future CMake releases.

CMake Error: The source directory "/usr/ports/www/firefox" does not appear to contain CMakeLists.txt.
Specify --help for usage, or press the help button on the CMake GUI.

marietto# make CC=arm-none-eabi-gcc CXX=arm-none-eabi-g++

make: "/usr/ports/Mk/bsd.port.mk" line 1061: Cannot open /usr/local/share/toolchains/gcc.mk
make: "/usr/ports/Mk/bsd.port.mk" line 1083: Unknown directive "export"
make: Fatal errors encountered -- cannot continue
make: stopped in /usr/ports/www/firefox
 
Let's say I want to run Firefox at 32 bit,for armv7 on FreeBSD at 64 bit,arm64,on my Raspberry Pi Zero 2W. Where I can find this version of Firefox ? Between the packages or the ports ? or somewhere else ?
 
Back
Top