On 12 July 2011 13:40, Dave Martin <dave.mar...@linaro.org> wrote:
> On Tue, Jul 12, 2011 at 01:10:24PM +0100, David Gilbert wrote:

>> Does it help address rth's concerns though?
>
> Which ones in particular?

Good question - hence my prompt to rth at the bottom; I know he originally
asked why not go to VDSO, so what I don't yet understand is whether
he would accept the other alternatives.


>> Isn't this a bit over-the-top for the failure we're trying to catch?
>
> Yes and no.  Implementing such a solution just for this case would be very
> over-the-top.  But integrating with a general mechanism for reporting errors
> if it exists (now or in the future) is very sensible.

Right - but I don't think we should be doing anything new here; we
can't be the first people to be trying to detect running on an older kernel
and exiting relatively cleanly.

> If it's necessary to to any check at all before concluding that it's safe
> to call a function, I don't see the difference.  Checking a magic number
> in one place seems no better than checking for a version number in another
> place, AFAICT.

Something like AUXV would have seemed cleaner to me; but that's
just preference.

> Having a faulting instruction doesn't permit the program to abort cleanly
> ahead of time (unless you check in advance -- in which case you're really
> back to a magic number again).
>
> This matters if constructors might do things like screwing up the terminal --
> if so, the chance to un-screw thing up should be offered to the program before
> it exits.
>
> Possibly constructors should never do things like that, in which case these
> concerns don't apply.  I don't know what the official line is regarding
> what kind of things global constructors should and shouldn't do.

If I understand correctly that's the whole point of abort() - if they
need to tidy
up then they should be handling SIGABRT.

>> Also, remember this whole discussion is just to print a message and exit 
>> nicely
>> in the case of someone using a currently incredibly rare function on an old
>> kernel!
>
> I'd say we want to notify the operating environment and/or the user.  This
> may be realised by writing some text to stderr, but that's not useful in
> the context of GUI environments.

Yes it is; exiting with a non-zero return value and writing to stderr
is perfectly
normal - whatever launched it can go and display that text.
(Or as I say trapping SIGABRT).

> I am not suggesting that we should engineer a special solution to that
> problem here, so long as we don't defeat potential solutions either.
> For now, it doesn't like any of the proposals risk that though.

Dave

_______________________________________________
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev

Reply via email to