Date: Tue, 15 Jul 2014 15:03:01 -0400 From: Rich Felker <dalias@...c.org> To: Isaac Dunham <ibid.ag@...il.com> Cc: musl@...ts.openwall.com, alpine-devel@...ts.alpinelinux.org Subject: Re: what should be done with SA_INTERRUPT? (gpm 1.20.7) On Tue, Jul 15, 2014 at 06:16:47PM -0700, Isaac Dunham wrote: > On alpine, gpm 1.20.7 doesn't build completely, so I've been poking at it. > There were numerous cases of sys/select.h being omitted, but the biggest > issue I've hit so far is the use of SA_INTERRUPT in a call to sigaction(); > the purpose is to break out of select() without it getting restarted. > musl does not define or support SA_INTERRUPT, as far as I can tell (I > seem to recall that musl forces SA_RESTART). No, per POSIX, interrupting is the default behavior of sigaction; SA_RESTART is needed to override this. The default you're thinking about is for the signal() function which should not be used anyway. There is no point at all in SA_INTERRUPT since it's required to be the default for sigaction; I'm assuming it came from some pre-POSIX era when the default was not clear. > This is in src/prog/gpm-root.y, which is the source for the "gpm-root" > utility. > > Any idea what to do about this? > I could build gpm without it, but (a) I'd like to see the whole mess > build, and (b) I'm not sure how to tell make that it can skip gpm-root. > > As a temporary fix, I'm using this patch: > -#if defined(__GLIBC__) > - __sigemptyset(&childaction.sa_mask); > -#else /* __GLIBC__ */ > - childaction.sa_mask=0; > -#endif /* __GLIBC__ */ > + sigemptyset(&childaction.sa_mask); > +#ifdef SA_INTERRUPT > childaction.sa_flags=SA_INTERRUPT; /* need to break the select() call */ > +#endif Just remove the SA_INTERRUPT line entirely and (like you're doing) use sigemptyset unconditionally. Rich
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.