This is the mail archive of the cygwin 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] |
Other format: | [Raw text] |
On 7/1/2015 9:57 AM, Corinna Vinschen wrote:
On Jul 1 12:47, Corinna Vinschen wrote:On Jun 30 16:13, Ken Brown wrote:On 6/30/2015 3:55 PM, Corinna Vinschen wrote:On Jun 27 16:52, Corinna Vinschen wrote:On Jun 26 18:28, Ken Brown wrote:On the other hand, emacs doesn't really make a full recovery. For example, if I try to call a subprocess (e.g., 'C-x d' to list a directory), I get a fork error: Debugger entered--Lisp error: (file-error "Doing vfork" "Resource temporarily unavailable")[...]Just FYI, I don't know yet what happens exactly, but this has nothing to do with the alternate stack. The child process fails with a status code 0xC00000FD, STATUS_STACK_OVERFLOW. Which is kind of weird, given that the stack overflow has been averted by calling siglongjmp. I have a hunch. The stack state in the parent is so that TEB::StackLimit points into the topmost guard area which, when poked into, triggers the stack overflow exception. When forking, Cygwin performs exactly this: It pokes into the stack to push the guard page out of the way, thus causing the stack memory to be commited, which in turn allows to copy the stack content from parent to child. Ok, I'm not sure if I can debug this soon, but at leats it's not related to sigaltstack handling nor is it a regression.Thanks for the info, that's good to know. Just out of curiosity, were you able to modify your testcase for this, or did you test with emacs?I just added a fork call to my testcase right after the last printf.My hunch was correct, apparently. I changed the way the stack info is set up for the child so only the actually used part of the stack is prepared for the stack copy in the child. This not only avoids the stack overflow in the child, it should shave a few nanoseconds from the time a fork takes ;) I uploaded new developer snapshots to https://cygwin.com/snapshots/ and I'm just building and uploading a new test release. Please give it another try.
That fixes it. Thanks! Ken -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: 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] |