4 Replies Latest reply on Apr 25, 2011 12:54 PM by 857421

    Process receiving SIGEXIT

    173650
      I am running a process on Solaris 10 sparc. It runs for several days. After that it crashes. pstack on the core shows one of the threads received SIGEXIT.

      Wondering what circumstances process would receive SIGEXIT? Proces is not using sigexit(pid,0) call. It does has signal handlers.

      Anyhelp is appreciated.
        • 1. Re: Process receiving SIGEXIT
          800381
          Solaris 10 does not have a SIGEXIT signal. Solaris 10 signals are:
          #define SIGHUP  1       /* hangup */
          #define SIGINT  2       /* interrupt (rubout) */
          #define SIGQUIT 3       /* quit (ASCII FS) */
          #define SIGILL  4       /* illegal instruction (not reset when caught) */
          #define SIGTRAP 5       /* trace trap (not reset when caught) */
          #define SIGIOT  6       /* IOT instruction */
          #define SIGABRT 6       /* used by abort, replace SIGIOT in the future */
          #define SIGEMT  7       /* EMT instruction */
          #define SIGFPE  8       /* floating point exception */
          #define SIGKILL 9       /* kill (cannot be caught or ignored) */
          #define SIGBUS  10      /* bus error */
          #define SIGSEGV 11      /* segmentation violation */
          #define SIGSYS  12      /* bad argument to system call */
          #define SIGPIPE 13      /* write on a pipe with no one to read it */
          #define SIGALRM 14      /* alarm clock */
          #define SIGTERM 15      /* software termination signal from kill */
          #define SIGUSR1 16      /* user defined signal 1 */
          #define SIGUSR2 17      /* user defined signal 2 */
          #define SIGCLD  18      /* child status change */
          #define SIGCHLD 18      /* child status change alias (POSIX) */
          #define SIGPWR  19      /* power-fail restart */
          #define SIGWINCH 20     /* window size change */
          #define SIGURG  21      /* urgent socket condition */
          #define SIGPOLL 22      /* pollable event occured */
          #define SIGIO   SIGPOLL /* socket I/O possible (SIGPOLL alias) */
          #define SIGSTOP 23      /* stop (cannot be caught or ignored) */
          #define SIGTSTP 24      /* user stop requested from tty */
          #define SIGCONT 25      /* stopped process has been continued */
          #define SIGTTIN 26      /* background tty read attempted */
          #define SIGTTOU 27      /* background tty write attempted */
          #define SIGVTALRM 28    /* virtual timer expired */
          #define SIGPROF 29      /* profiling timer expired */
          #define SIGXCPU 30      /* exceeded cpu limit */
          #define SIGXFSZ 31      /* exceeded file size limit */
          #define SIGWAITING 32   /* reserved signal no longer used by threading code */
          #define SIGLWP  33      /* reserved signal no longer used by threading code */
          #define SIGFREEZE 34    /* special signal used by CPR */
          #define SIGTHAW 35      /* special signal used by CPR */
          #define SIGCANCEL 36    /* reserved signal for thread cancellation */
          #define SIGLOST 37      /* resource lost (eg, record-lock lost) */
          #define SIGXRES 38      /* resource control exceeded */
          #define SIGJVM1 39      /* reserved signal for Java Virtual Machine */
          #define SIGJVM2 40      /* reserved signal for Java Virtual Machine */
          • 2. Re: Process receiving SIGEXIT
            173650
            Following is the pstack from the core,

            FYI.. the process has signal handler. It catches any signal and then calls abort.


            ffffffff7df04200, 2) + 2f4
            ffffffff7dc0ca18 ???????? (1042736a0, 1ea000, 0, 0, ffffffff7dc0c888, 1)
            ffffffff7c1d4060 lwpstart (0, 0, 0, 0, 0, 0)
            ----------------- lwp# 172 / thread# 172 --------------------
            ffffffff7c1d80d4 lwpkill (6, 0, ffffffff7c345538, ffffffffffffffff, ffffffff7c33a000, 0) + 8
            ffffffff7c14afd0 abort (1, 1d8, 0, 1ef13c, 0, 0) + 118
            000000010000c4ec LOGALARM_signal_handler (6, 0, ffffffff795e5660, ffffffff7c34ad08, 0, ffffffff7edc48c0) + 324
            ffffffff7c1d418c __sighndlr (6, 0, ffffffff795e5660, 10000c1c8, 0, 5) + c
            ffffffff7c1c7d28 call_user_handler (ffffffff7df02200, ffffffff7df02200, ffffffff795e5660, 10006, 0, 0) + 3e0
            ffffffff7c1c7f20 sigacthandler (0, 0, ffffffff795e5660, ffffffff7df02200, 0, ffffffff7c33a000) + 54
            --- called from signal handler with signal 0 (SIGEXIT) ---
            ffffffff7c1d80d4 lwpkill (6, 6, 5, ffffffff7c346580, ffffffff7df02200, 5) + 8
            ffffffff7c14af88 abort (0, 0, 0, 1ef13c, b, 0) + d0
            000000010000c4ec LOGALARM_signal_handler (b, 0, ffffffff795e6050, ffffffff7c34ad08, 1030d8010, ffffffff7bcca3e8) + 324
            ffffffff7c1d418c __sighndlr (b, 0, ffffffff795e6050, 10000c1c8, 0, a) + c
            ffffffff7c1c7d28 call_user_handler (ffffffff7df02200, ffffffff7df02200, ffffffff795e6050, 10006, 0, 0) + 3e0
            ffffffff7c1c7f20 sigacthandler (0, 0, ffffffff795e6050, ffffffff7df02200, 0, ffffffff7c33a000) + 54
            --- called from signal handler with signal 0 (SIGEXIT) ---
            ffffffff7aa299f4 ???????? (1023c1b50, ffffffff795e6e20, ffffffff795e6e00, 2, 1c00, 20)
            ffffffff7aa2c37c ???????? (1023c1b50, ffffffff795e6e20, ffffffff795e6e00, 20, 1c00, 20)
            ffffffff7aa2c7f8 gcrycipher_encrypt (1023c1b50, ffffffff795e6e20, 20, ffffffff795e6e00, 20, 0) + 210
            ffffffff7aa166c0 gcry_cipher_encrypt (1023c1b50, ffffffff795e6e20, 20, ffffffff795e6e00, 20, 0) + 7c
            ffffffff7ac0d51c __1cJfileCryptHencrypt6Mpv1_i_ (103681e10, ffffffff795e6e00, ffffffff795e6e20, 0, ffffffff795e6f00, 0) + ec
            ffffffff7ac0c988 __1cJfileCryptHencrypt6MrnDstdMbasic_string4Ccn0BLchar_traits4Cc__n0BJallocator4Cc_____i_ (103681e10, ffffffff795e71c8, ffffffff7bec73d8, 50, 1ee9e4, ffffffff7becca60) + f20
            • 3. Re: Process receiving SIGEXIT
              800381
              There is NO "signal 0" in Solaris. Period.

              Despite what the output from pstack tells you.
              • 4. Re: Process receiving SIGEXIT
                857421
                Strange. Are you able to see the return code of the process which owns the thread in question? There is a rare possibility that the signal handler is written in/for Linux and you are trying to use it in Solaris ( I am a newbie too and just exploring possibilties as I have seen SIGEXIT in NetBSD 5.0 version of Linux kernel ). Not sure if that helps but thinking on those lines might get us the answer. Please post if you come to know the root cause. All the best.