Outstanding issues with current DLL?
Christopher Faylor
cgf@redhat.com
Mon Mar 19 11:40:00 GMT 2001
On Mon, Mar 19, 2001 at 10:28:05PM +0300, Egor Duda wrote:
>Hi!
>
>Monday, 19 March, 2001 Christopher Faylor cgf@redhat.com wrote:
>
>CF> On Mon, Mar 19, 2001 at 09:47:25PM +0300, Egor Duda wrote:
>>>CF> I assume that the SIGCHLD is getting delivered but it's blocked for
>>>CF> some reason. That is usually what causes this kind of symptom.
>>>CF> If you can attach to a hung rxvt, could you look at myself->_sigtodo[SIGCHLD+3]?
>>>If that has a >>0 number in it, then the signal is blocked.
>>>
>>>bull's eye! it does contain 1.
>>>
>>>I've also noticed that chance of freezing increases greatly if
>>>you're actively move mouse pointer over rxvt's gui window while
>>>pressing ctrl-d.
>
>CF> Hmm. What about myself->sigaction[SIGCHLD]. What does that look like?
>
> (gdb) p myself->procinfo->sigs[20]
> $4 = {sa_handler = 0x401048, sa_mask = 0, sa_flags = 0}
>
>looks pretty valid to me.
>
>moreover, 'kill -USR1 <rxvt_pid>' closes rxvt window! i think i know
>the reason why. see below.
>
>CF> If that has masked SIGCHLD then that means there is probably a race
>CF> somewhere. It's hard to imagine what this would be in a long-running
>CF> program that just starts one subprocess (bash), though.
>
>below is strace.
>
> 2032 771795 [proc] rxvt 193 proc_subproc: args: 2, 0
> 468 772263 [proc] rxvt 193 proc_subproc: pid 206[0] terminated, handle 0x188, nchildren 1, nzombies 0
> 284 772547 [proc] rxvt 193 proc_subproc: removing [0], pid 206, handle 0x188, nchildren 1
> 247 772794 [proc] rxvt 193 proc_subproc: returning 1
> 243 773037 [proc] rxvt 193 sig_send: pid 193, signal 20, its_me 1
> 242 773279 [proc] rxvt 193 sig_send: Not waiting for sigcomplete. its_me 1 sig 20
> 239 773518 [proc] rxvt 193 sig_send: returning 0 from sending signal 20
> 242 773760 [proc] rxvt 193 wait_subproc: looping
> 711 774471 [select_pipe] rxvt 193 fhandler_pty_master::hit_eof: all other handles closed
> 294 774765 [select_pipe] rxvt 193 peek_pipe: /dev/ptmx, saw EOF
> 233 774998 [select_pipe] rxvt 193 peek_pipe: saw eof on '/dev/ptmx'
> 236 775234 [select_pipe] rxvt 193 thread_pipe: stopping
> 842 776076 [main] rxvt 193 select_stuff::~select_stuff: deleting select records
> 766 776842 [sig] rxvt 193 wait_sig: awake
> 265 777107 [sig] rxvt 193 wait_sig: processing signal 20
> 232 777339 [sig] rxvt 193 wait_sig: Got signal 20
> 232 777571 [sig] rxvt 193 sig_handle: signal 20
> 229 777800 [sig] rxvt 193 sig_handle: signal 20, about to call 0x401048
> 236 778036 [sig] rxvt 193 setup_handler: suspending mainthread
> 1421 779457 [sig] rxvt 193 setup_handler: couldn't send signal 20
> 336 779793 [main] rxvt 193 cygwin_select: 5, 0x242FDFC, 0x0, 0x0, 0x0
> 446 780239 [main] rxvt 193 dtable::select_read: /dev/windows fd 3
> 418 780657 [main] rxvt 193 dtable::select_read: /dev/ptmx fd 4
> 217 780874 [main] rxvt 193 cygwin_select: to NULL, ms FFFFFFFF
> 203 781077 [main] rxvt 193 cygwin_select: sel.always_ready 0
> 688 781765 [main] rxvt 193 select_stuff::wait: m 2, ms 4294967295
> 481 782246 [sig] rxvt 193 setup_handler: ResumeThread returned 1
> 300 782546 [sig] rxvt 193 setup_handler: returning 0
> 239 782785 [sig] rxvt 193 sig_handle: returning 0
> 246 783031 [sig] rxvt 193 proc_subproc: args: 3, 0
> 236 783267 [sig] rxvt 193 proc_subproc: looking for processes to reap
> 238 783505 [sig] rxvt 193 proc_subproc: finished processing terminated/stopped child
> 241 783746 [sig] rxvt 193 proc_subproc: returning 1
>
>
>i've added some sigproc_printf()'s and it looks that sigchild is added
>to sigtodo, because we're in kernel (interruptible() returns FALSE).
>but sigtodo isn't scanend again until new signal arrives. but it never
>arrives if we won't send it explicitly via 'kill'. note, that it
>doesn't matter, which signal it will be.
>
>looks like sigtodo array should be rescanned on periodic basis.
It's not supposed to be necessary. Can you send me a little more of the
previous state? I'd like to see more of what the main thread was doing.
cgf
More information about the Cygwin-developers
mailing list