discuss-gnustep
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: GSWeb crash upon startup [Was: Re: Eeeagh! I'm at my wits end.]


From: Simon Stapleton
Subject: Re: GSWeb crash upon startup [Was: Re: Eeeagh! I'm at my wits end.]
Date: Tue, 27 Apr 2004 20:04:54 +0200


On 27 Apr 2004, at 13:38, Richard Frith-Macdonald wrote:
By the way, what's with all the IF_NO_GC(RELEASE(x)) stuff in NSProcessInfo.m, anyway? The RELEASE/RETAIN etc macros should deal with GC transparently anyway, no? Seems like a bunch of irrelevancies to me, although I'm willing to admit I may well be wrong on this ;-)

IF_NO_GC is generally used to avoid compiler warnings and to wrap larger sections of code. eg rather than having a loop with with RETAIN() operations inside it, you could avoid executing the loop.

Well, I'd say they're at best irrelevant in _gnu_process_args(), in that case, and at worst, obfuscation.

The values of _gnu_noobjc_argv and _gnu_noobjc_env should be zero after +initialize is called, while _gnu_processName, _gnu_arguments and _gnu_environment should be non-nil.

Yep, that's what I'm seeing (at least at the end of +initialize). It seems that they are being released later, although why, I can't say. I _can_ say it's not me (explicitly) doing it, though. They might be being trampled, but I can't see any reason why that should happen, either.

I don't know of any reason for them being overwritten ... which is what you need to look for. The objects are not just being released ... the actual values in the variables are being changed.

OK.  Here's _exactly_ what happens in my app.

My main() is absolutely bog-stock, create an autorelease pool and call GSWApplicationMain() with the name of the app and argc/argv At this point, the args have been stored away by [NSProcessInfo load], but [NSProcessInfo initialize] has not been called
GSWApplicationMain calls GSWApplicationMainReal
This calls +[NSProcessInfo processInfo]
This triggers +[NSProcessInfo initialize], which correctly, but for some reason transiently, sets _gnu_environment and friends
On entry to +[NSProcessInfo processInfo], they have been reset to null.

What can I possibly be doing wrong? There Is absolutely no logic to this that I can see. And certainly nothing that I'm explicitly doing to cause it. It's all in the GNUstep code.

some further information on the Application, in case it's of any interest/relevance

The EOs for the app are built into their own framework, which includes the model The Components for the app are built into a number of other frameworks, some of which depend on the EO framework
The App itself relies on all the above-mentioned frameworks.

Simon

--
PGP Key Id : 0x50D0698D
--
If the answer isn't obvious, the question is a distraction. Go find an easier question.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]