Fri Jan 06 23:51:32 2012: Request 73747 was acted upon. Transaction: Correspondence added by cary.le...@gmail.com Queue: Win32-IPC Subject: Re: [rt.cpan.org #73747] signal handlers don't work while waiting Broken in: (no value) Severity: (no value) Owner: Nobody Requestors: cary.le...@gmail.com Status: stalled Ticket <URL: https://rt.cpan.org/Ticket/Display.html?id=73747 >
I've tried everything I could think of, but was not successful in getting the signal handler to work while perl was sitting inside the WaitForSingleObject, inside of ipc code. However, I was able to work around the issue by utilizing threads - if I spin up a perl thread and do the change notify in it, and detach this thread from the main thread, both the change notify blocking functionality works, and the signal handler works. I can use condition variables to signal the change in the directory to the main thread. So, this isn't really a fix, just a workaround, but I wonder where I can post this little titbit of knowledge. On Wed, Jan 4, 2012 at 4:54 PM, Christopher J. Madsen via RT < bug-win32-...@rt.cpan.org> wrote: > <URL: https://rt.cpan.org/Ticket/Display.html?id=73747 > > > The behavior I see with Windows XP and Perl 5.14.2 is this: if a signal > handler is active, it's not called until the wait completes (because a > notification happens or it times out). I'm not clear whether you're > seeing the same thing. > > I believe this is because of Perl's deferred signal handling: > http://perldoc.perl.org/perlipc.html#Deferred-Signals-%28Safe-Signals%29 > > I agree that's probably not the most desirable behavior, but I don't > know how to change it. I'd welcome a pull request > (https://github.com/madsen/win32-ipc) if you have a solution. >