From: craig.berry@signaltreesolutions.com Sent: Friday, February 15, 2002 1:49 PM To: Info-VAX@Mvb.Saic.Com Subject: Re: ASTFLT in emacs21 - was Re: emacs21 working a little bit more Roar Thronęs wrote in message news:... > And the Emacs garbage collector do not know anything at all about what > the CC internal alloca does on the stack, so it will not touch it. Good. I wasn't sure it was that smart. From my (admittedly limited) knowledge of GNU alloca, the other thing to watch out for is the STACK_DIRECTION macro. I seem to remember undef'ing it and allowing stack direction to be determined at run-time worked best. > : The documentation of CC /OPTIMIZE=INTRINSICS (part of the default > : optimize behavior) explicitly mentions alloca (not __alloca) as > : something that will be implemented as an intrinsic unless you take > : steps to prevent it. That documentation is here: > > The .mms-files have /NOOPTIMIZE. Ah, that should rule out the problem I was speculating about. > :> It must be something new with atimer and it's use of signals? > :> (Get the same results with HAVE_SETITIMER, but I suspect the implemention > :> is about the same) > :> > :> Anyone who knows how alarm is implemented nowadays? > > : Dunno. I think signals are implemented with sys$sigprc. > > That one is undocumented (belongs with NSA$, it seems) > > I know that the crtl alarm 9 years ago was implemented by using the > system services $setimr and $cantim (no surprise there...) Well, if we have to worry about how the C RTL implements such things, then something's wrong with the C RTL. That might be the case, but it's a lot less likely than it was even 3 or 4 years ago. I'm afraid I have nothing else to offer except a couple of generally related speculations. See the docs on ualarm() for caveats regarding ASTs. It also says "Interactions between ualarm and either alarm , or sleep are unspecified." If there is a sigaction() involved, make sure the signals passed to it are supported. For example, if you pass a SIGCONT, the docs correctly state this is invalid; however, the C RTL routine is broken and will not return -1 as it should in this case, so you could have a signal delivery appearing to succeed that doesn't really.