[M3devel] I386_OPENBSD hangs in stubgen
    Jay K 
    jay.krell at cornell.edu
       
    Mon Jul 19 16:34:02 CEST 2010
    
    
  
I386_OPENBSD hangs in stubgen
Problem seems to be in the "rewritten" user threads (ie: using the sigaltstack approach
instead of poking at the jmpbuf)
here:
    sigemptyset(&sigs);
    sigaddset(&sigs, SIGUSR1);
    sigprocmask(SIG_BLOCK, &sigs, &osigs);
...
    kill(getpid(), SIGUSR1);
    sigfillset(&sigs);
    sigdelset(&sigs, SIGUSR1);
    while (!mctx_called)
        sigsuspend(&sigs);
The kill seems to come in immdiately, even though sigusr1 is blocked.
And then sigsuspend hangs waiting forever.
I forgot to eheck if mctx_called has changed, or if the check is optimized out.
It seems ok if the kill comes in right away actually.
I thought I had tested all this already on OpenBSD/x86 but I guess maybe not.
I thought maybe the -pthread vs. -lpthread did it, but it seems not.
I'll poke around more.
I might resort to putting back the jmpbuf hacking, which would be unfortunate.
(OpenBSD doesn't implement get/set/make/swapcontext, at least as of previous release 4.6.)
 - Jay
 		 	   		  
    
    
More information about the M3devel
mailing list