Duplicate :
|
|
Duplicate :
|
|
Duplicate :
|
|
Relates :
|
|
Relates :
|
|
Relates :
|
|
Relates :
|
|
Relates :
|
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 }
|