Attached patch fixes the way ruby-glib handles signals from threads.
means it reverts to using a pipe like system so the main ruby thread
select on it to ensure it runs when needed. The main difference that
we use IO.pipe instead of pipe() to create the pipe, which should make
code portable. I also added a test-case showing the effect, it would
if someone could test this on a win32 system just to be sure