Avoid non-portable signal(SIGCHLD, SIG_IGN)

Gerald Pfeifer pfeifer at dbai.tuwien.ac.at
Wed Apr 30 05:04:42 CDT 2003

On Fri, 25 Apr 2003, Joerg Wunsch wrote:
> I didn't test that yet, but i think that should work.  If SA_NOCLDWAIT
> is set (in a call for SIGCHLD), sa_handler ought to be ignored anyway.

I'm note sure whether that's related (in it's, unfortunately, beyond
my knowledge of threads and/or Wine to debug this), but...

With current CVS sources of Wine, every single Windows program I try
fails with the following error:

  assertion "libc_sigaction" failed: file "../../scheduler/pthread.c",
  line 661

which stems from the following snippet of code:

  int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact)
      if (!libc_sigaction)
          libc_sigaction = dlsym( RTLD_NEXT, "sigaction" );
          assert( libc_sigaction );
      return libc_sigaction(signum, act, oldact);

The backtrace looks as follows:

  (gdb) bt
  #0  0x5c06cbac in kill () from /usr/lib/libc.so.4
  #1  0x5c0ae152 in abort () from /usr/lib/libc.so.4
  #2  0x5c08a14f in __assert () from /usr/lib/libc.so.4
  #3  0x5c16c404 in sigaction (signum=12, act=0xbfbfdce0, oldact=0xbfbfdcc8) at ../../scheduler/pthread.c:661
  #4  0x5c074f09 in getcwd () from /usr/lib/libc.so.4
  #5  0x5c167400 in CLIENT_InitServer () at ../../scheduler/client.c:618
  #6  0x5c1685ab in process_init (argv=0xbfbff2e4) at ../../scheduler/process.c:414
  #7  0x5c1689e1 in __wine_process_init (argc=2, argv=0xbfbff2e4) at ../../scheduler/process.c:585
  #8  0x5c02130b in wine_init (argc=2, argv=0xbfbff2e4, error=0xbfbfee90 "", error_size=1024) at loader.c:429
  #9  0x3c000569 in main (argc=2, argv=0xbfbff2e4) at main.c:32
  #10 0x3c0004ae in _start ()

Gerald "Jerry"   pfeifer at dbai.tuwien.ac.at   http://www.pfeifer.com/gerald/

More information about the wine-devel mailing list