This is the mail archive of the cygwin@sources.redhat.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: Make hung in WaitForMultipleObjects inside Cygwin


I got it to hang again, but this time the hang appears to be
different, and I don't know if it's related to the one about which I
sent details yesterday.

I don't recall if I've mentioned before now that we're seeing these
hangs on a dual-processor machine.  This may very well be relevant.

Here's the end of my strace log, with some irrelevant info removed to
save room, starting with cygwin decides to send signal 20 to Make
process 404 to tell it that one of its children has died:

  243 52939748 [proc] make 404 sig_send: pid 404, signal 20, its_me 1
  265 52940013 [proc] make 404 sig_send: Not waiting for sigcomplete.  its_me 1 sig 20
  372 52940385 [proc] make 404 sig_send: returning 0 from sending signal 20
  410 52940795 [proc] make 404 wait_subproc: looping
  328 52941123 [sig] make 404 wait_sig: awake
  284 52941407 [sig] make 404 wait_sig: processing signal 20
  198 52941605 [sig] make 404 wait_sig: Got signal 20
  421 52942026 [sig] make 404 sig_handle: signal 20
  284 52942310 [sig] make 404 sig_handle: signal 20, about to call 0x40BAA8
  287 52942597 [sig] make 404 setup_handler: suspending mainthread

Make process 404 is hung there.  Unlike yesterday's hang, however,
when I run "ps" this process does not show "I" in its status column.
Two other differences from yesterday: (1) gdb won't let me attach to
the hung process (it claims that it can't); (2) I can't kill the
process.  No signal, including TERM, KILL and CHLD, has any effect on
it -- it just remains in the state shown above, i.e., with no
additional output shown in the log file.

Contrast this with the time before this one that the same process was
sent signal 20:

  733 52822611 [proc] make 404 sig_send: pid 404, signal 20, its_me 1
 1988 52824599 [proc] make 404 sig_send: Not waiting for sigcomplete.  its_me 1 sig 20
  984 52825583 [proc] make 404 sig_send: returning 0 from sending signal 20
  314 52825897 [proc] make 404 wait_subproc: looping
 5073 52830970 [sig] make 404 wait_sig: awake
  205 52831175 [sig] make 404 wait_sig: processing signal 20
  290 52831465 [sig] make 404 wait_sig: Got signal 20
  455 52831920 [sig] make 404 sig_handle: signal 20
  365 52832285 [sig] make 404 sig_handle: signal 20, about to call 0x40BAA8
 4211 52836496 [sig] make 404 setup_handler: armed signal_arrived 0x1F8, res 1
  353 52836849 [sig] make 404 proc_subproc: args: 4, 1
  291 52837140 [sig] make 404 proc_subproc: clear waiting threads
  565 52837705 [sig] make 404 proc_subproc: finished clearing
  441 52838146 [sig] make 404 proc_subproc: returning 1
  497 52838643 [sig] make 404 setup_handler: didn't suspend main thread, th 0x61088514
  239 52838882 [sig] make 404 setup_handler: returning 1
  264 52839146 [sig] make 404 sig_handle: returning 1
  285 52839431 [sig] make 404 wait_sig: looping
  250 52839681 [main] make 404 call_signal_handler: sa_flags 0x0
  516 52840197 [main] make 404 reset_signal_arrived: reset signal_arrived
  794 52840991 [main] make 404 set_process_mask: old mask = 0, new mask = 80000
  345 52841336 [main] make 404 sig_dispatch_pending: pending_signals 0
  466 52841802 [main] make 404 sig_dispatch_pending: no need to wake anything up
  275 52842077 [main] make 404 _close: close (5)
 4097 52846174 [main] make 404 fhandler_base::close: handle 0xB8
 5238 52851412 [main] make 404 _close: 0 = close (5)
 5259 52856671 [main] make 404 _write: write (1, 0xA010120, 36)
 2039 52858710 [main] make 404 fhandler_base::write: binary write
  309 52859019 [main] make 404 fhandler_base::write: 36 = write (0xA010120, 36)
  295 52859314 [main] make 404 _write: 36 = write (1, 0xA010120, 36)
  320 52859634 [main] make 404 set_process_mask: old mask = 80000, new mask = 0
  301 52859935 [main] make 404 sig_dispatch_pending: pending_signals 0
  285 52860220 [main] make 404 sig_dispatch_pending: no need to wake anything up
  303 52860523 [main] make 404 _read: -1 = read (5<(null)>, 0x24AF233, 1), bin 4096, errno 4

It sure looks to me like something inside the cygwin DLL isn't
handling the SIGCHLD signal properly for this process.

Any suggestions for how to proceed?

  jik

--
Want to unsubscribe from this list?
Check out: http://cygwin.com/ml/#unsubscribe-simple


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]