Page 1 of 1

CEF overrides Java's signal handlers

PostPosted: Mon Jul 06, 2020 12:27 pm
by Czarek
In a Java app during the call to CefInitialize I can see in logs that Java's signal handlers were detached. When I remove the call to CefInitialize the warnings disappear. Why would CEF library override signal handlers and how can I prevent this from happening? I know that cefclient app for example sets signal handlers, but that's not the case, I am using raw CEF library, just calling CefInitialize. Logs below:

Code: Select all
Warning: SIGSEGV handler expected:libjvm.dylib+0x4804ec  found:0x0000000000000000
Signal Handlers:
SIGSEGV: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGBUS: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGFPE: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGPIPE: SIG_IGN, sa_mask[0]=00000000000000000000000000000000, sa_flags=SA_RESTART
SIGXFSZ: [libjvm.dylib+0x4804ec], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_RESTART|SA_SIGINFO
SIGILL: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGUSR1: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=SA_RESTART
SIGUSR2: [libjvm.dylib+0x48000a], sa_mask[0]=00100000000000000000000000000000, sa_flags=SA_RESTART|SA_SIGINFO
SIGHUP: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGINT: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGTERM: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGQUIT: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
Warning: SIGILL handler expected:libjvm.dylib+0x4804ec  found:0x0000000000000000
Signal Handlers:
SIGSEGV: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGBUS: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGFPE: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGPIPE: SIG_IGN, sa_mask[0]=00000000000000000000000000000000, sa_flags=SA_RESTART
SIGXFSZ: [libjvm.dylib+0x4804ec], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_RESTART|SA_SIGINFO
SIGILL: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGUSR1: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=SA_RESTART
SIGUSR2: [libjvm.dylib+0x48000a], sa_mask[0]=00100000000000000000000000000000, sa_flags=SA_RESTART|SA_SIGINFO
SIGHUP: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGINT: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGTERM: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGQUIT: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
Warning: SIGFPE handler expected:libjvm.dylib+0x4804ec  found:0x0000000000000000
Signal Handlers:
SIGSEGV: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGBUS: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGFPE: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGPIPE: SIG_IGN, sa_mask[0]=00000000000000000000000000000000, sa_flags=SA_RESTART
SIGXFSZ: [libjvm.dylib+0x4804ec], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_RESTART|SA_SIGINFO
SIGILL: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGUSR1: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=SA_RESTART
SIGUSR2: [libjvm.dylib+0x48000a], sa_mask[0]=00100000000000000000000000000000, sa_flags=SA_RESTART|SA_SIGINFO
SIGHUP: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGINT: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGTERM: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGQUIT: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
Warning: SIGBUS handler expected:libjvm.dylib+0x4804ec  found:0x0000000000000000
Signal Handlers:
SIGSEGV: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGBUS: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGFPE: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGPIPE: SIG_IGN, sa_mask[0]=00000000000000000000000000000000, sa_flags=SA_RESTART
SIGXFSZ: [libjvm.dylib+0x4804ec], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_RESTART|SA_SIGINFO
SIGILL: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGUSR1: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=SA_RESTART
SIGUSR2: [libjvm.dylib+0x48000a], sa_mask[0]=00100000000000000000000000000000, sa_flags=SA_RESTART|SA_SIGINFO
SIGHUP: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGINT: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGTERM: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGQUIT: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
Warning: SIGPIPE handler expected:libjvm.dylib+0x4804ec  found:0x0000000000000001
Signal Handlers:
SIGSEGV: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGBUS: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGFPE: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGPIPE: SIG_IGN, sa_mask[0]=00000000000000000000000000000000, sa_flags=SA_RESTART
SIGXFSZ: [libjvm.dylib+0x4804ec], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_RESTART|SA_SIGINFO
SIGILL: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGUSR1: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=SA_RESTART
SIGUSR2: [libjvm.dylib+0x48000a], sa_mask[0]=00100000000000000000000000000000, sa_flags=SA_RESTART|SA_SIGINFO
SIGHUP: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGINT: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGTERM: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGQUIT: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
Warning: SIGHUP handler expected:libjvm.dylib+0x47e5e1  found:0x0000000000000000
Signal Handlers:
SIGSEGV: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGBUS: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGFPE: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGPIPE: SIG_IGN, sa_mask[0]=00000000000000000000000000000000, sa_flags=SA_RESTART
SIGXFSZ: [libjvm.dylib+0x4804ec], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_RESTART|SA_SIGINFO
SIGILL: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGUSR1: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=SA_RESTART
SIGUSR2: [libjvm.dylib+0x48000a], sa_mask[0]=00100000000000000000000000000000, sa_flags=SA_RESTART|SA_SIGINFO
SIGHUP: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGINT: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGTERM: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGQUIT: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
Warning: SIGINT handler expected:libjvm.dylib+0x47e5e1  found:0x0000000000000000
Running in non-interactive shell, SIGINT handler is replaced by shell
Signal Handlers:
SIGSEGV: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGBUS: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGFPE: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGPIPE: SIG_IGN, sa_mask[0]=00000000000000000000000000000000, sa_flags=SA_RESTART
SIGXFSZ: [libjvm.dylib+0x4804ec], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_RESTART|SA_SIGINFO
SIGILL: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGUSR1: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=SA_RESTART
SIGUSR2: [libjvm.dylib+0x48000a], sa_mask[0]=00100000000000000000000000000000, sa_flags=SA_RESTART|SA_SIGINFO
SIGHUP: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGINT: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGTERM: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGQUIT: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
Warning: SIGTERM handler expected:libjvm.dylib+0x47e5e1  found:0x0000000000000000
Signal Handlers:
SIGSEGV: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGBUS: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGFPE: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGPIPE: SIG_IGN, sa_mask[0]=00000000000000000000000000000000, sa_flags=SA_RESTART
SIGXFSZ: [libjvm.dylib+0x4804ec], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_RESTART|SA_SIGINFO
SIGILL: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGUSR1: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=SA_RESTART
SIGUSR2: [libjvm.dylib+0x48000a], sa_mask[0]=00100000000000000000000000000000, sa_flags=SA_RESTART|SA_SIGINFO
SIGHUP: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGINT: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGTERM: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGQUIT: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
Warning: SIGQUIT handler expected:libjvm.dylib+0x47e5e1  found:0x0000000000000000
Signal Handlers:
SIGSEGV: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGBUS: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGFPE: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGPIPE: SIG_IGN, sa_mask[0]=00000000000000000000000000000000, sa_flags=SA_RESTART
SIGXFSZ: [libjvm.dylib+0x4804ec], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_RESTART|SA_SIGINFO
SIGILL: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGUSR1: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=SA_RESTART
SIGUSR2: [libjvm.dylib+0x48000a], sa_mask[0]=00100000000000000000000000000000, sa_flags=SA_RESTART|SA_SIGINFO
SIGHUP: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGINT: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGTERM: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGQUIT: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none

Re: CEF overrides Java's signal handlers

PostPosted: Mon Jul 06, 2020 1:44 pm
by Czarek
Found this code in Java-CEF wrapper:

Code: Select all
#if defined(OS_POSIX)
  // CefInitialize will reset signal handlers. Backup/restore the original
  // signal handlers to avoid crashes in the JVM (see issue #41).
  BackupSignalHandlers();
#endif

#if defined(OS_MACOSX)
  res = util_mac::CefInitializeOnMainThread(main_args, settings,
                                            client_app.get());
#else
  res = CefInitialize(main_args, settings, client_app.get(), NULL);
#endif

#if defined(OS_POSIX)
  RestoreSignalHandlers();
#endif


So I think I must do similarly in my app. Do I understand correctly that CEF initialization must be executed on the very first line in a Java app? Because if I initalize CEF late then some Java thread could throw an Exception during CEF initialization and due to detached Java signal handlers such Java exception would be fatal?

Re: CEF overrides Java's signal handlers

PostPosted: Tue Jul 07, 2020 1:32 am
by Phylanx
I can't tell for the new versions but our application (using version 3325) is initializing JCEF/CEF far beyong user authentification.
So I don't think you need to do this on the first line of your application (at least we don't do it).