question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

unknown error: Chrome failed to start: exited abnormally

See original GitHub issue

Small note: I use ‘example.com’ in place of the actual domain throughout my logs and configs below, so you can assume I set the correct domain name throughout as far as possible.

When I installed Jibri, it successfully started, and seemed to work just fine according to the logs, and the Jibri service was running, with this log under “journalctl -u jibri”:

Jun 22 19:13:44 example launch.sh[1274]: SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
Jun 22 19:13:44 example launch.sh[1274]: SLF4J: Defaulting to no-operation (NOP) logger implementation
Jun 22 19:13:44 example launch.sh[1274]: SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further d
Jun 22 19:14:31 example launch.sh[1274]: Starting ChromeDriver 83.0.4103.39 (ccbf011cb2d2b19b506d844400483861342c20c
Jun 22 19:14:31 example launch.sh[1274]: Only local connections are allowed.
Jun 22 19:14:31 example launch.sh[1274]: Please see https://chromedriver.chromium.org/security-considerations for su
Jun 22 19:14:31 example launch.sh[1274]: ChromeDriver was started successfully.

However, when I attempt to record the call on example.com, the browser will “prepare to record the call”, then fail after a while say that “Recording was stopped.” In the background, the following error appeared in /var/log/jitsi/jibri/log.0.txt:

2020-06-22 19:14:30.723 INFO: [37] org.jitsi.jibri.JibriManager.startFileRecording() Starting a file recording with params: FileRecordingRequestParams(callParams=CallParams(callUrlInfo=CallUrlInfo(baseUrl=https://example.com, callName=exampleroom, urlParams=[])), sessionId=epjumhbrqtumjhuq, callLoginParams=XmppCredentials(domain=recorder.example.com, username=recorder, password=ExampleRecorderAuthenticationPass)) finalize script path: /home/example/jitsi/finalize_recordings.sh and recordings directory: /tmp/recordings
2020-06-22 19:14:38.949 SEVERE: [37] org.jitsi.jibri.api.xmpp.XmppApi.run() Error starting Jibri service : org.openqa.selenium.WebDriverException: unknown error: Chrome failed to start: exited abnormally.
  (unknown error: DevToolsActivePort file doesn't exist)
  (The process started from chrome location /usr/bin/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)
  (Driver info: chromedriver=83.0.4103.39 (ccbf011cb2d2b19b506d844400483861342c20cd-refs/branch-heads/4103@{#416}),platform=Linux 4.9.0-12-amd64 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 6.91 seconds
Build info: version: 'unknown', revision: 'unknown', time: 'unknown'

System info: host: 'example', ip: '127.0.1.1', os.name: 'Linux', os.arch: 'amd64', os.version: '4.9.0-12-amd64', java.version: '1.8.0_252'
Driver info: driver.version: ChromeDriver with stack:
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
java.lang.reflect.Constructor.newInstance(Constructor.java:423)
............
// and there's a very huge stack trace that I don't think would be relevant

My /etc/jitsi/jibri/config.json:

{
    // NOTE: this is a *SAMPLE* config file, it will need to be configured with
    // values from your environment

    // Where recording files should be temporarily stored
    "recording_directory":"/tmp/recordings",
    // The path to the script which will be run on completed recordings
    "finalize_recording_script_path": "/home/example/jitsi/finalize_recordings.sh",
    "xmpp_environments": [
        {
            // A friendly name for this environment which can be used
            //  for logging, stats, etc.
            "name": "Example",
            // The hosts of the XMPP servers to connect to as part of
            //  this environment
            "xmpp_server_hosts": [
                "IP ADDRESS OF EXAMPLE MACHINE IS HERE - ACTUALLY SET IN FILE WITHIN QUOTES"
            ],
            // The xmpp domain we'll connect to on the XMPP server
            "xmpp_domain": "example.com",
            // Jibri will login to the xmpp server as a privileged user
            "control_login": {
                // The domain to use for logging in
                "domain": "auth.example.com",
                // The credentials for logging in
                "username": "jibri",
                "password": "ExampleJibriAuthenticationPass"
            },
            // Using the control_login information above, Jibri will join
            //  a control muc as a means of announcing its availability
            //  to provide services for a given environment
            "control_muc": {
                "domain": "internal.auth.example.com",
                "room_name": "JibriBrewery",
                "nickname": "jibri-nickname"
            },
            // All participants in a call join a muc so they can exchange
            //  information.  Jibri can be instructed to join a special muc
            //  with credentials to give it special abilities (e.g. not being
            //  displayed to other users like a normal participant)
            "call_login": {
                "domain": "recorder.example.com",
                "username": "recorder",
                "password": "ExampleRecorderAuthenticationPass"
            },
            // When jibri gets a request to start a service for a room, the room
            //  jid will look like:
            //  roomName@optional.prefixes.subdomain.xmpp_domain
            // We'll build the url for the call by transforming that into:
            //  https://xmpp_domain/subdomain/roomName
            // So if there are any prefixes in the jid (like jitsi meet, which
            //  has its participants join a muc at conference.xmpp_domain) then
            //  list that prefix here so it can be stripped out to generate
            //  the call url correctly
            "room_jid_domain_string_to_strip_from_start": "conference.",
            // The amount of time, in minutes, a service is allowed to continue.
            //  Once a service has been running for this long, it will be
            //  stopped (cleanly).  A value of 0 means an indefinite amount
            //  of time is allowed
            "usage_timeout": "0"
        }
    ]
}

I’ve also ensured (as per the instructions on the main Jibri GitHub page), that the configurations for Prosody, Jicofo, and Jitsi Meet were updated accordingly. The only deviation from what was mentioned on that page is the existence of the following line (it was already in there) in /etc/jitsi/jicofo/sip-communicator.properties:

org.jitsi.jicofo.BRIDGE_MUC=JvbBrewery@internal.auth.example.com
org.jitsi.jicofo.jibri.BREWERY=JibriBrewery@internal.auth.example.com
org.jitsi.jicofo.jibri.PENDING_TIMEOUT=90

I’ve run the prosodyctl commands to create accounts with the necessary usernames and passwords for the auth.example.com and recorder.example.com domains.

I also made sure to restart all of the above services after installing Jibri andsetting up its configuration. I then restarted Jibri. I did the restarts by using systemctl.

I’ve been debugging for a while, and I’m at a loss to know where to go from here. What should I be checking to make this work?

Issue Analytics

  • State:closed
  • Created 3 years ago
  • Comments:5 (1 by maintainers)

github_iconTop GitHub Comments

1reaction
SSpeckencommented, Mar 23, 2021

On DevToolsActivePort file doesn't exist use "--no-sandbox" in the “chrome” section of your jibri.conf. On Only local connections are allowed insert option -Dwebdriver.chrome.allowed-ips="<IP of your Jitsi server>" into the java execution line in /opt/jitsi/jibri/launch.sh. These two things helped me to get Jibri running again.

0reactions
vuhanguyencommented, Apr 1, 2021

@SSpecken Thanks, your hint solved my problem On DevToolsActivePort file doesn't exist use "--no-sandbox" in the "chrome" section of your jibri.conf.

Read more comments on GitHub >

github_iconTop Results From Across the Web

unknown error: Chrome failed to start: exited abnormally ...
It is failing to start due to a mismatch between the chrome version and the chromedriver version. Downloading and installing the same versions ......
Read more >
unknown error: Chrome failed to start: exited abnormally
"Chrome failed to start: exited abnormally" means that ChromeDriver started Chrome as a subprocess, but then Chrome crashed. It could help you to...
Read more >
How to resolve this Chrome failed to start
Try running it in elevated /admin/root mode · Update Chrome and check if any extension/ URL blocking the automation functionality. · Try reinstalling...
Read more >
unknown error: Chrome failed to start: exited abnormally · ...
BTW, I found a workaround by starting chrome at --no-sandbox mode (which is notbthe bewt practice). So it's a permission issue. …
Read more >
Message: unknown error: Chrome failed to start: exited ...
Hello, people! I have been trying for over a week to dockerize a Flask application with the MongoDB database.
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found