OK I'll change it to NSIG. That's used in other places in os_linux, too. So it's really more consistent.
Best regards, Goetz > -----Original Message----- > From: Dmitry Samersoff [mailto:dmitry.samers...@oracle.com] > Sent: Donnerstag, 12. November 2015 09:22 > To: David Holmes; Lindenmaier, Goetz; hotspot-runtime- > d...@openjdk.java.net; serviceability-dev > Subject: Re: RFR(M): 8141529: Fix handling of _JAVA_SR_SIGNUM > > David, > > I think it's better to use NSIG (without underscore) defined in signal.h > > -Dmitry > > > On 2015-11-12 10:35, David Holmes wrote: > > Hi Goetz, > > > > Adding in serviceability-dev > > > > On 9/11/2015 6:22 PM, Lindenmaier, Goetz wrote: > >> Hi, > >> > >> The environment variable _JAVA_SR_SIGNUM can be set to a signal > number > >> do be used by the JVM's suspend/resume mechanism. > >> > >> If set, a signal handler is installed and the current signal handler > >> is saved to an array. > >> On linux, this array had size MAXSIGNUM=32, and _JAVA_SR_SIGNUM > was > >> allowed > >> to range up to _NSIG=65. This could cause memory corruption. > >> > >> Further, in jsig.c, an unsinged int is used to set a bit for signals. > >> This also > >> is too small, as only 32 signals can be supported. Further, the > >> signals are mapped > >> wrong to these bits. '0' is not a valid signal, but '32' was. 1<<32 > >> happens to map to > >> zero, so the signal could be stored, but this probably was not > >> intended that way. > >> > >> This change increases MAXSIGNUM to 65 on linux, and to 64 on aix. It > >> introduces > >> proper checking of the signal read from the env var, and issues a > >> warning if it > >> does not use the signal set. It adapts the data types in jisig.c > >> properly. > >> > >> Please review this change. I please need a sponsor. > >> http://cr.openjdk.java.net/~goetz/webrevs/8141529-NSIG/webrev.00 > > > > This all sounds very good to me. (I must find out why Solaris is not > > involved here :) ). > > > > On Linux you didn't add the bounds check to os::Linux::set_our_sigflags. > > > > I'm also wondering about documenting where we are determining the > > maximum from? Is it simply _NSIG on some/all distributions? And I see > > _NSIG is supposed to be the biggest signal number + one. Also linux > > defines NSIG = _NSIG so which should we be using? > > > > Thanks, > > David > > > >> Best regards, > >> Goetz. > >> > > > -- > Dmitry Samersoff > Oracle Java development team, Saint Petersburg, Russia > * I would love to change the world, but they won't give me the sources.