pducharme / UniFi-Video-Controller

Docker for Unifi-Video Controller (Ubiquiti Networks)
199 stars 105 forks source link

Java SIGBUS on startup #46

Closed JoakimZiegler closed 6 years ago

JoakimZiegler commented 6 years ago

I'm pretty new to docker, but wanted to test this to try to run unifi-video on a CentOS system. I installed on CentOS 7.4 with a fresh docker install from the distro repo, following instructions, and I got the following:

[root@resolve02 data_4]# docker run --name unifi-video --cap-add SYS_ADMIN --cap-add DAC_READ_SEARCH -p 7442:7442 -p 7443:7443 -p 7445:7445  -p 7446:7446 -p 7447:7447 -p 7080:7080 -p 6666:6666 -v /data_4/tmp/unifi-video:/var/lib/unifi-video -v /data_4/tmp/unifi-video/data/videos:/usr/lib/unifi-video/data/videos -v /var/log/unifi-video:/var/log/unifi-video -e TZ=America/Mexico_City -e PUID=500 -e PGID=500 -e DEBUG=1 pducharme/unifi-video-controller
2017-11-08 00:58:35.939700 [info] PUID defined as '500'
2017-11-08 00:58:36.117944 [info] PGID defined as '500'
2017-11-08 00:58:36.287130 [info] Setting permissions recursively on volume mappings...
[debug] Running unifi-video service with --debug.
Starting unifi-video... Java Runtime: /usr/lib/jvm/java-8-openjdk-amd64/jre
JSVC: /usr/bin/jsvc

JVM options:  -Dav.tempdir=/var/cache/unifi-video -Djava.security.egd=file:/dev/./urandom   -Xmx25086M  -Djava.library.path=/usr/lib/unifi-video/lib  -Djava.awt.headless=true  -Djavax.net.ssl.trustStore=/usr/lib/unifi-video/data/ufv-truststore  -Dfile.encoding=UTF-8   -Dcom.sun.management.jmxremote          -Dcom.sun.management.jmxremote.ssl=false        -Dcom.sun.management.jmxremote.authenticate=false       -Dcom.sun.management.jmxremote.port=7654 -Djava.rmi.server.hostname=172.17.0.2

JSVC options:  -cwd /usr/lib/unifi-video -debug  -user unifi-video  -home /usr/lib/jvm/java-8-openjdk-amd64/jre  -cp /usr/share/java/commons-daemon.jar:/usr/lib/unifi-video/lib/airvision.jar  -pidfile /var/run/unifi-video/unifi-video.pid  -procname unifi-video   -Dav.tempdir=/var/cache/unifi-video  -Djava.security.egd=file:/dev/./urandom   -Xmx25086M  -Djava.library.path=/usr/lib/unifi-video/lib  -Djava.awt.headless=true  -Djavax.net.ssl.trustStore=/usr/lib/unifi-video/data/ufv-truststore  -Dfile.encoding=UTF-8         -Dcom.sun.management.jmxremote          -Dcom.sun.management.jmxremote.ssl=false        -Dcom.sun.management.jmxremote.authenticate=false       -Dcom.sun.management.jmxremote.port=7654 -Djava.rmi.server.hostname=172.17.0.2
+-- DUMPING PARSED COMMAND LINE ARGUMENTS --------------
| Detach:          True
| Show Version:    No
| Show Help:       No
| Check Only:      Disabled
| Stop:            False
| Wait:            0
| Run as service:  No
| Install service: No
| Remove service:  No
| JVM Name:        "null"
| Java Home:       "/usr/lib/jvm/java-8-openjdk-amd64/jre"
| PID File:        "/var/run/unifi-video/unifi-video.pid"
| User Name:       "unifi-video"
| Extra Options:   13
|   "-Djava.class.path=/usr/share/java/commons-daemon.jar:/usr/lib/unifi-video/lib/airvision.jar"
|   "-Dav.tempdir=/var/cache/unifi-video"
|   "-Djava.security.egd=file:/dev/./urandom"
|   "-Xmx25086M"
|   "-Djava.library.path=/usr/lib/unifi-video/lib"
|   "-Djava.awt.headless=true"
|   "-Djavax.net.ssl.trustStore=/usr/lib/unifi-video/data/ufv-truststore"
|   "-Dfile.encoding=UTF-8"
|   "-Dcom.sun.management.jmxremote"
|   "-Dcom.sun.management.jmxremote.ssl=false"
|   "-Dcom.sun.management.jmxremote.authenticate=false"
|   "-Dcom.sun.management.jmxremote.port=7654"
|   "-Djava.rmi.server.hostname=172.17.0.2"
| Class Invoked:   "com.ubnt.airvision.Main"
| Class Arguments: 1
|   "start"
+-------------------------------------------------------
user changed to 'unifi-video'
User 'unifi-video' validated
Attempting to locate Java Home in /usr/lib/jvm/java-8-openjdk-amd64/jre
Attempting to locate VM configuration file /usr/lib/jvm/java-8-openjdk-amd64/jre/jre/lib/jvm.cfg
Attempting to locate VM configuration file /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/jvm.cfg
Attempting to locate VM configuration file /usr/lib/jvm/java-8-openjdk-amd64/jre/jre/lib/amd64/jvm.cfg
Attempting to locate VM configuration file /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/jvm.cfg
Found VM configuration file at /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/jvm.cfg
Found VM server definition in configuration
Checking library /usr/lib/jvm/java-8-openjdk-amd64/jre/jre/lib/amd64/server/libjvm.so
Checking library /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so
Found VM client definition in configuration
Checking library /usr/lib/jvm/java-8-openjdk-amd64/jre/jre/lib/amd64/client/libjvm.so
Checking library /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/client/libjvm.so
Cannot locate library for VM client (skipping)
Found VM zero definition in configuration
Checking library /usr/lib/jvm/java-8-openjdk-amd64/jre/jre/lib/amd64/zero/libjvm.so
Checking library /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/zero/libjvm.so
Cannot locate library for VM zero (skipping)
Found VM jamvm definition in configuration
Checking library /usr/lib/jvm/java-8-openjdk-amd64/jre/jre/lib/amd64/jamvm/libjvm.so
Checking library /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/jamvm/libjvm.so
Cannot locate library for VM jamvm (skipping)
Found VM dcevm definition in configuration
Checking library /usr/lib/jvm/java-8-openjdk-amd64/jre/jre/lib/amd64/dcevm/libjvm.so
Checking library /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/dcevm/libjvm.so
Cannot locate library for VM dcevm (skipping)
Java Home located in /usr/lib/jvm/java-8-openjdk-amd64/jre
+-- DUMPING JAVA HOME STRUCTURE ------------------------
| Java Home:       "/usr/lib/jvm/java-8-openjdk-amd64/jre"
| Java VM Config.: "/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/jvm.cfg"
| Found JVMs:      1
| JVM Name:        "server"
|                  "/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so"
+-------------------------------------------------------
Using default JVM in /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so
Invoking w/ LD_LIBRARY_PATH=/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64
+-- DUMPING PARSED COMMAND LINE ARGUMENTS --------------
| Detach:          True
| Show Version:    No
| Show Help:       No
| Check Only:      Disabled
| Stop:            False
| Wait:            0
| Run as service:  No
| Install service: No
| Remove service:  No
| JVM Name:        "null"
| Java Home:       "/usr/lib/jvm/java-8-openjdk-amd64/jre"
| PID File:        "/var/run/unifi-video/unifi-video.pid"
| User Name:       "unifi-video"
| Extra Options:   13
|   "-Djava.class.path=/usr/share/java/commons-daemon.jar:/usr/lib/unifi-video/lib/airvision.jar"
|   "-Dav.tempdir=/var/cache/unifi-video"
|   "-Djava.security.egd=file:/dev/./urandom"
|   "-Xmx25086M"
|   "-Djava.library.path=/usr/lib/unifi-video/lib"
|   "-Djava.awt.headless=true"
|   "-Djavax.net.ssl.trustStore=/usr/lib/unifi-video/data/ufv-truststore"
|   "-Dfile.encoding=UTF-8"
|   "-Dcom.sun.management.jmxremote"
|   "-Dcom.sun.management.jmxremote.ssl=false"
|   "-Dcom.sun.management.jmxremote.authenticate=false"
|   "-Dcom.sun.management.jmxremote.port=7654"
|   "-Djava.rmi.server.hostname=172.17.0.2"
| Class Invoked:   "com.ubnt.airvision.Main"
| Class Arguments: 1
|   "start"
+-------------------------------------------------------
user changed to 'unifi-video'
User 'unifi-video' validated
Attempting to locate Java Home in /usr/lib/jvm/java-8-openjdk-amd64/jre
Attempting to locate VM configuration file /usr/lib/jvm/java-8-openjdk-amd64/jre/jre/lib/jvm.cfg
Attempting to locate VM configuration file /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/jvm.cfg
Attempting to locate VM configuration file /usr/lib/jvm/java-8-openjdk-amd64/jre/jre/lib/amd64/jvm.cfg
Attempting to locate VM configuration file /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/jvm.cfg
Found VM configuration file at /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/jvm.cfg
Found VM server definition in configuration
Checking library /usr/lib/jvm/java-8-openjdk-amd64/jre/jre/lib/amd64/server/libjvm.so
Checking library /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so
Found VM client definition in configuration
Checking library /usr/lib/jvm/java-8-openjdk-amd64/jre/jre/lib/amd64/client/libjvm.so
Checking library /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/client/libjvm.so
Cannot locate library for VM client (skipping)
Found VM zero definition in configuration
Checking library /usr/lib/jvm/java-8-openjdk-amd64/jre/jre/lib/amd64/zero/libjvm.so
Checking library /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/zero/libjvm.so
Cannot locate library for VM zero (skipping)
Found VM jamvm definition in configuration
Checking library /usr/lib/jvm/java-8-openjdk-amd64/jre/jre/lib/amd64/jamvm/libjvm.so
Checking library /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/jamvm/libjvm.so
Cannot locate library for VM jamvm (skipping)
Found VM dcevm definition in configuration
Checking library /usr/lib/jvm/java-8-openjdk-amd64/jre/jre/lib/amd64/dcevm/libjvm.so
Checking library /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/dcevm/libjvm.so
Cannot locate library for VM dcevm (skipping)
Java Home located in /usr/lib/jvm/java-8-openjdk-amd64/jre
+-- DUMPING JAVA HOME STRUCTURE ------------------------
| Java Home:       "/usr/lib/jvm/java-8-openjdk-amd64/jre"
| Java VM Config.: "/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/jvm.cfg"
| Found JVMs:      1
| JVM Name:        "server"
|                  "/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so"
+-------------------------------------------------------
Running w/ LD_LIBRARY_PATH=/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64
redirecting stdout to /dev/null and stderr to /dev/null
Switching umask back to 022 from 077
done.
Attemtping to load library /lib64/libcap.so.2
Attemtping to load library /lib64/libcap.so.1
Attemtping to load library /lib64/libcap.so
Attemtping to load library /usr/lib64/libcap.so.2
Attemtping to load library /usr/lib64/libcap.so.1
Attemtping to load library /usr/lib64/libcap.so
Attemtping to load library /lib/libcap.so.2
Attemtping to load library /lib/libcap.so.1
Attemtping to load library /lib/libcap.so
Attemtping to load library /usr/lib/libcap.so.2
Attemtping to load library /usr/lib/libcap.so.1
Attemtping to load library /usr/lib/libcap.so
Attemtping to load library libcap.so.2
loaded cap_free from libcap.
loaded cap_init from libcap.
loaded cap_clear from libcap.
loaded cap_get_flag from libcap.
loaded cap_set_flag from libcap.
loaded cap_set_proc from libcap.
increased capability set.
user changed to 'unifi-video'
decreased capability set to min required.
Using default JVM in /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so
Attemtping to load library /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so
JVM library /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so loaded
JVM library entry point found (0xFE1841C0)
+-- DUMPING JAVA VM CREATION ARGUMENTS -----------------
| Version:                       0x010004
| Ignore Unrecognized Arguments: True
| Extra options:                 13
|   "-Djava.class.path=/usr/share/java/commons-daemon.jar:/usr/lib/unifi-video/lib/airvision.jar" (0x00000000)
|   "-Dav.tempdir=/var/cache/unifi-video" (0x00000000)
|   "-Djava.security.egd=file:/dev/./urandom" (0x00000000)
|   "-Xmx25086M" (0x00000000)
|   "-Djava.library.path=/usr/lib/unifi-video/lib" (0x00000000)
|   "-Djava.awt.headless=true" (0x00000000)
|   "-Djavax.net.ssl.trustStore=/usr/lib/unifi-video/data/ufv-truststore" (0x00000000)
|   "-Dfile.encoding=UTF-8" (0x00000000)
|   "-Dcom.sun.management.jmxremote" (0x00000000)
|   "-Dcom.sun.management.jmxremote.ssl=false" (0x00000000)
|   "-Dcom.sun.management.jmxremote.authenticate=false" (0x00000000)
|   "-Dcom.sun.management.jmxremote.port=7654" (0x00000000)
|   "-Djava.rmi.server.hostname=172.17.0.2" (0x00000000)
+-------------------------------------------------------
| Internal options:              4
|   "-Dcommons.daemon.process.id=114" (0x00000000)
|   "-Dcommons.daemon.process.parent=113" (0x00000000)
|   "-Dcommons.daemon.version=1.0.15-dev" (0x00000000)
|   "abort" (0x00405af0)
+-------------------------------------------------------
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGBUS (0x7) at pc=0x00007f67ed7ffbfc, pid=114, tid=0x00007f67ffe85700
#
# JRE version:  (8.0_131-b11) (build )
# Java VM: OpenJDK 64-Bit Server VM (25.131-b11 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# j  java.lang.Object.<clinit>()V+0
#
# Core dump written. Default location: /usr/lib/unifi-video/core or core.114
#
# An error report file with more information is saved as:
# /usr/lib/unifi-video/hs_err_pid114.log
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.java.com/bugreport/crash.jsp
#
Reloading service
Waiting 60 s to prevent looping

The "error report file" it mentions is attached: hs_err_pid1587.log

chadhutchins182 commented 6 years ago

I run this image on a CentOS 7.3 and have no issues. When looking at your log I noticed the JVM print out for the java command is asking for a lot of memory, 25GB.

Here is my log print out for those commands:

Starting unifi-video... Java Runtime: /usr/lib/jvm/java-8-openjdk-amd64/jre
JSVC: /usr/bin/jsvc

JVM options:  -Dav.tempdir=/var/cache/unifi-video -Djava.security.egd=file:/dev/./urandom   -Xmx4094M  -Djava.library.path=/usr/lib/unifi-video/lib  -Djava.awt.headless=true  -Djavax.net.ssl.trustStore=/usr/lib/unifi-video/data/ufv-truststore  -Dfile.encoding=UTF-8        -Dcom.sun.management.jmxremote          -Dcom.sun.management.jmxremote.ssl=false        -Dcom.sun.management.jmxremote.authenticate=false       -Dcom.sun.management.jmxremote.port=7654 -Djava.rmi.server.hostname=172.17.0.4

JSVC options:  -cwd /usr/lib/unifi-video -debug  -user unifi-video  -home /usr/lib/jvm/java-8-openjdk-amd64/jre  -cp /usr/share/java/commons-daemon.jar:/usr/lib/unifi-video/lib/airvision.jar  -pidfile /var/run/unifi-video/unifi-video.pid  -procname unifi-video   -Dav.tempdir=/var/cache/unifi-video  -Djava.security.egd=file:/dev/./urandom   -Xmx4094M  -Djava.library.path=/usr/lib/unifi-video/lib  -Djava.awt.headless=true  -Djavax.net.ssl.trustStore=/usr/lib/unifi-video/data/ufv-truststore  -Dfile.encoding=UTF-8          -Dcom.sun.management.jmxremote          -Dcom.sun.management.jmxremote.ssl=false        -Dcom.sun.management.jmxremote.authenticate=false       -Dcom.sun.management.jmxremote.port=7654 -Djava.rmi.server.hostname=172.17.0.4

So your problem resembles: https://community.ubnt.com/t5/UniFi-Video/Install-on-CentOS/m-p/1978902#M82125

@pducharme can correct me if I'm wrong, but that command is a part of unifi install and not the docker container.

Edit I wonder if this is related to #30

fryfrog commented 6 years ago

@JoakimZiegler, @chadhutchins182: Did you guys get this figured out?

chadhutchins182 commented 6 years ago

@fryfrog I couldn't recreate the issue as it works on my CentOS system. As you said in #30 this is probably OBE.

fryfrog commented 6 years ago

Closing, feel free to revisit if needed.