[Mono-bugs] [Bug 592981] UnixSignal.WaitAny not interrupted when exiting

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Fri Sep 3 08:40:02 EDT 2010


https://bugzilla.novell.com/show_bug.cgi?id=592981

https://bugzilla.novell.com/show_bug.cgi?id=592981#c10


Dick Porter <dick at acm.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|RESOLVED                    |REOPENED
         Resolution|FIXED                       |

--- Comment #10 from Dick Porter <dick at acm.org> 2010-09-03 12:39:59 UTC ---
I'm reopening this, as I think it's causing a segfault with our server.

When running mono git head with Boehm GC, I'm consistently (ie, every time)
getting a segfault inside UnixSignal.WaitAny:

Plastic SCM daemon up. 3.0.187.2 1267 ms startup time
Stacktrace:

  at (wrapper managed-to-native) Mono.Unix.UnixSignal.WaitAny
(intptr[],int,int) <0x00003>
  at (wrapper managed-to-native) Mono.Unix.UnixSignal.WaitAny
(intptr[],int,int) <0x00003>
  at Mono.Unix.UnixSignal.WaitAny (Mono.Unix.UnixSignal[],int) <0x0011e>
  at Mono.Unix.UnixSignal.WaitAny (Mono.Unix.UnixSignal[]) <0x00012>
  at Codice.CM.Daemon.Daemon.HandleSignals () <0x0013a>
  at Codice.CM.Daemon.Daemon.LaunchUnixDaemon
(Codice.CM.Server.ISystemRunner,string) <0x00036>
  at xy.c (Codice.CM.Server.SystemRunner) <0x0005f>
  at xy.a (an) <0x0035c>
  at xy.a (string[]) <0x000b1>
  at (wrapper runtime-invoke) <Module>.runtime_invoke_int_object
(object,intptr,intptr,intptr) <0x0008f>

gdb fingers the line in support/signal.c in wait_for_any() that calls the
shutting_down delegate.  Indeed, this patch fixes the crash, at the expense of
breaking the bug fix:


diff --git a/support/signal.c b/support/signal.c
index abd7638..a7f97fa 100644
--- a/support/signal.c
+++ b/support/signal.c
@@ -351,7 +351,7 @@ wait_for_any (signal_info** signals, int count, int
*currfd,
                        ptv = &tv;
                }
                r = poll (fd_structs, count, timeout);
-       } while (keep_trying (r) && !shutting_down ());
+       } while (keep_trying (r) /*&& !shutting_down ()*/);

        idx = -1;
        if (r == 0)


The crash is not triggered if I run the server with sgen GC, possibly
suggesting some sort of memory corruption?  I've also been unable to reproduce
the crash with a small test case.

-- 
Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.


More information about the mono-bugs mailing list