Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8004124

Handle and/or warn about SI_KERNEL

XMLWordPrintable

    • b39
    • linux


        Running javac on linux 32 bit (carrs) from specjvm98 with product VM gets an intermittent crash with si_code = 128 which is SI_KERNEL. The code that the crash points to is perfectly valid. I don't know why we get these signals and other products get them also, but we should either warn and/or ignore when we get these so we don't confuse this with a real bug.

        From digging in the kernel, I think this is the source of the signal. I don't know why things have gone wrong with the linux signal handler.

        http://www.takatan.net/lxr/source/kernel/signal.c#L1250
        1262 void
        1263 force_sig(int sig, struct task_struct *p)
        1264 {
        1265 force_sig_info(sig, SEND_SIG_PRIV, p);
        1266 }
        1267
        1268 /*
        1269 * When things go south during signal handling, we
        1270 * will force a SIGSEGV. And if the signal that caused
        1271 * the problem was already a SIGSEGV, we'll want to
        1272 * make sure we don't even try to deliver the signal..
        1273 */
        1274 int
        1275 force_sigsegv(int sig, struct task_struct *p)
        1276 {
        1277 if (sig == SIGSEGV) {
        1278 unsigned long flags;
        1279 spin_lock_irqsave(&p->sighand->siglock, flags);
        1280 p->sighand->action[sig - 1].sa.sa_handler = SIG_DFL;
        1281 spin_unlock_irqrestore(&p->sighand->siglock, flags);
        1282 }
        1283 force_sig(SIGSEGV, p);
        1284 return 0;
        1285 }

              coleenp Coleen Phillimore
              coleenp Coleen Phillimore
              Votes:
              0 Vote for this issue
              Watchers:
              9 Start watching this issue

                Created:
                Updated:
                Resolved: