|
From: Robey P. <ro...@da...> - 2006-11-13 21:46:12
|
On 10 Nov 2006, at 15:17, Leif Mortenson wrote: > Robey, > Unfortunately, I can't simply remove this signal handling. There > have been cases on > Solaris where the Java process was receiving TERM signals from an > unknown source > that was leading to a shutdown. The fix was to add the ignore signals > features to the > wrapper. > Under normal operation, the wrapper and its JVM are shutdown using > signals > sent to the wrapper process. But unfortunately this is not always the > only target > of signals. I think ignoring signals is fine. My patch leaves the signal handler there, but doesn't do any work inside it. I think the problem is somehow involved with doing work in the handler. My notes on the crash, in case it's helpful at all: ---------- siginfo:si_signo=11, si_errno=0, si_code=1, si_addr=0x00000000 Java frames: (J=compiled Java code, j=interpreted, Vv=VM code) j org.tanukisoftware.wrapper.WrapperManager.nativeGetControlEvent()I+0 j org.tanukisoftware.wrapper.WrapperManager.access$2200()I+0 Dump of assembler code for function Java_org_tanukisoftware_wrapper_WrapperManager_nativeGetControlEvent: 0x000014d0 <+0>: mov $0x1,%eax 0x000014d5 <+5>: mov %eax,0x0 <-- CRASH HERE 0x000014da <+10>: mov 0x0,%eax 0x000014df <+15>: push %ebp 0x000014e0 <+16>: mov %esp,%ebp 0x000014e2 <+18>: test %eax,%eax 0x000014e4 <+20>: je 0x14ee <+30> 0x000014e6 <+22>: xor %ecx,%ecx 0x000014e8 <+24>: mov %ecx,0x0 0x000014ee <+30>: pop %ebp 0x000014ef <+31>: xor %edx,%edx 0x000014f1 <+33>: mov %edx,0x0 0x000014f7 <+39>: ret ---------- I tried adding proper synchronization to the signal handling function (ie pthread locks) but I don't think it actually helped. I'm not sure why. But it fits in with my past experience that signals and the JVM do not mix. The crashes only happen during high load, of course. robey |