Multiple random crashes in Firefox under Linux, when started in a docker container with errors of the kind:
[myuser@92ee57f7f63a ~]$ Exiting due to channel error. Exiting due to channel error. [myuser@92ee57f7f63a ~]$ firefox ExceptionHandler::GenerateDump cloned child 4864 ExceptionHandler::SendContinueSignalToChild sent continue signal to child ExceptionHandler::WaitForContinueSignal waiting for continue signal... Exiting due to channel error. Exiting due to channel error. Exiting due to channel error. Exiting due to channel error. Bus error (core dumped) [myuser@92ee57f7f63a ~]$ ###!!! [Parent][MessageChannel] Error: (msgtype=0x5A001C,name=PHttpChannel::Msg_DeleteSelf) Channel error: cannot send/recv ###!!! [Parent][MessageChannel] Error: (msgtype=0x5A001C,name=PHttpChannel::Msg_DeleteSelf) Channel error: cannot send/recv ###!!! [Parent][MessageChannel] Error: (msgtype=0x5A001C,name=PHttpChannel::Msg_DeleteSelf) Channel error: cannot send/recv ###!!! [Parent][MessageChannel] Error: (msgtype=0x5A001C,name=PHttpChannel::Msg_DeleteSelf) Channel error: cannot send/recv ###!!! [Parent][MessageChannel] Error: (msgtype=0x5A001C,name=PHttpChannel::Msg_DeleteSelf) Channel error: cannot send/recv
The chances to stop these multiple random crashes if you just increase the memory for the /dev/shm device in the docker container is really good! The default values in the docker /dev/shm are really low (in the tested machine only 64Mbytes) and the recommended values are at least 2Gbytes. More shared tabs more shared memory is needed.
Such strange and random crashes might cause a testing case to fail in an automation testing suite using the Selenium driver to start a Firefox headless instance.
To increase the shared memory size in the docker container, the container should be started with “–shm-size” option. For example:
docker run -it --shm-size=2048m my-gui-fedora:31
If the option –shm-size is missing (probably an old docker software) mapping an already mounted tmpfs directory in the host machine to the container is also a solution:
mkdir /dev/dockershm mount -t tmpfs -o size=2048m tmpfs /dev/shmdocker chmod 1777 /dev/shmdocker docker run -d -v /mnt/shmdocker:/dev/shm my-gui-fedora:31
Remounting in the docker container is also possible:
srv myuser # docker exec -it my-gui bash [myuser@92ee57f7f63a ~]$ sudo mount -o remount,size=2048m /dev/shm
Note the container should be run with –privileged option to be able to remount the /dev/shm.
The build docker command also has the –shm-size for the purpose of the building process not changing the default shared memory size in the containers based on the image afterward.