The guest tends to get confused when it receives signals it doesn't
know about. Given the gprof magic has also set up it's own handler we
would do well to avoid stomping on it as well.
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
---
linux-user/signal.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/linux-user/signal.c b/linux-user/signal.c
index e2c0b37173..44b2d3b35a 100644
--- a/linux-user/signal.c
+++ b/linux-user/signal.c
@@ -508,6 +508,11 @@ void signal_init(void)
act.sa_flags = SA_SIGINFO;
act.sa_sigaction = host_signal_handler;
for(i = 1; i <= TARGET_NSIG; i++) {
+#ifdef TARGET_GPROF
+ if (i == SIGPROF) {
+ continue;
+ }
+#endif
host_sig = target_to_host_signal(i);
sigaction(host_sig, NULL, &oact);
if (oact.sa_sigaction == (void *)SIG_IGN) {
--
2.20.1
On 02/05/2019 16:58, Alex Bennée wrote: > The guest tends to get confused when it receives signals it doesn't > know about. Given the gprof magic has also set up it's own handler we > would do well to avoid stomping on it as well. > > Signed-off-by: Alex Bennée <alex.bennee@linaro.org> > --- > linux-user/signal.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/linux-user/signal.c b/linux-user/signal.c > index e2c0b37173..44b2d3b35a 100644 > --- a/linux-user/signal.c > +++ b/linux-user/signal.c > @@ -508,6 +508,11 @@ void signal_init(void) > act.sa_flags = SA_SIGINFO; > act.sa_sigaction = host_signal_handler; > for(i = 1; i <= TARGET_NSIG; i++) { > +#ifdef TARGET_GPROF > + if (i == SIGPROF) { > + continue; > + } > +#endif > host_sig = target_to_host_signal(i); > sigaction(host_sig, NULL, &oact); > if (oact.sa_sigaction == (void *)SIG_IGN) { > Perhaps merge this with the previous one and send a v2: it will ease bisecting. Thanks, Laurent
On Thu, May 2, 2019 at 6:17 PM Laurent Vivier <laurent@vivier.eu> wrote: > > On 02/05/2019 16:58, Alex Bennée wrote: > > The guest tends to get confused when it receives signals it doesn't > > know about. Given the gprof magic has also set up it's own handler we > > would do well to avoid stomping on it as well. > > > > Signed-off-by: Alex Bennée <alex.bennee@linaro.org> > > --- > > linux-user/signal.c | 5 +++++ > > 1 file changed, 5 insertions(+) > > > > diff --git a/linux-user/signal.c b/linux-user/signal.c > > index e2c0b37173..44b2d3b35a 100644 > > --- a/linux-user/signal.c > > +++ b/linux-user/signal.c > > @@ -508,6 +508,11 @@ void signal_init(void) > > act.sa_flags = SA_SIGINFO; > > act.sa_sigaction = host_signal_handler; > > for(i = 1; i <= TARGET_NSIG; i++) { > > +#ifdef TARGET_GPROF > > + if (i == SIGPROF) { > > + continue; > > + } > > +#endif > > host_sig = target_to_host_signal(i); > > sigaction(host_sig, NULL, &oact); > > if (oact.sa_sigaction == (void *)SIG_IGN) { > > > > Perhaps merge this with the previous one and send a v2: it will ease > bisecting. I agree it would be better, though it should be noted that the signal issue has existed for at least 8 years (that's when I had to add a specific patch in my private repository). Thanks, Laurent
On 02/05/2019 18:27, Laurent Desnogues wrote: > On Thu, May 2, 2019 at 6:17 PM Laurent Vivier <laurent@vivier.eu> wrote: >> >> On 02/05/2019 16:58, Alex Bennée wrote: >>> The guest tends to get confused when it receives signals it doesn't >>> know about. Given the gprof magic has also set up it's own handler we >>> would do well to avoid stomping on it as well. >>> >>> Signed-off-by: Alex Bennée <alex.bennee@linaro.org> >>> --- >>> linux-user/signal.c | 5 +++++ >>> 1 file changed, 5 insertions(+) >>> >>> diff --git a/linux-user/signal.c b/linux-user/signal.c >>> index e2c0b37173..44b2d3b35a 100644 >>> --- a/linux-user/signal.c >>> +++ b/linux-user/signal.c >>> @@ -508,6 +508,11 @@ void signal_init(void) >>> act.sa_flags = SA_SIGINFO; >>> act.sa_sigaction = host_signal_handler; >>> for(i = 1; i <= TARGET_NSIG; i++) { >>> +#ifdef TARGET_GPROF >>> + if (i == SIGPROF) { >>> + continue; >>> + } >>> +#endif >>> host_sig = target_to_host_signal(i); >>> sigaction(host_sig, NULL, &oact); >>> if (oact.sa_sigaction == (void *)SIG_IGN) { >>> >> >> Perhaps merge this with the previous one and send a v2: it will ease >> bisecting. > > I agree it would be better, though it should be noted that the signal > issue has existed for at least 8 years (that's when I had to add a > specific patch in my private repository). I can also apply the second first, and the first then... Thanks, Laurent
On 02/05/2019 16:58, Alex Bennée wrote: > The guest tends to get confused when it receives signals it doesn't > know about. Given the gprof magic has also set up it's own handler we > would do well to avoid stomping on it as well. > > Signed-off-by: Alex Bennée <alex.bennee@linaro.org> > --- > linux-user/signal.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/linux-user/signal.c b/linux-user/signal.c > index e2c0b37173..44b2d3b35a 100644 > --- a/linux-user/signal.c > +++ b/linux-user/signal.c > @@ -508,6 +508,11 @@ void signal_init(void) > act.sa_flags = SA_SIGINFO; > act.sa_sigaction = host_signal_handler; > for(i = 1; i <= TARGET_NSIG; i++) { > +#ifdef TARGET_GPROF > + if (i == SIGPROF) { > + continue; > + } > +#endif > host_sig = target_to_host_signal(i); > sigaction(host_sig, NULL, &oact); > if (oact.sa_sigaction == (void *)SIG_IGN) { > Applied to my linux-user branch. Thanks, Laurent
© 2016 - 2024 Red Hat, Inc.