This is the mail archive of the
libc-alpha@sources.redhat.com
mailing list for the glibc project.
Re: [libc-alpha] mt-application hanging in exit()
- From: Kaz Kylheku <kaz at ashi dot footprints dot net>
- To: Bertold Kolics <Bertold dot Kolics at Sun dot COM>
- Cc: Andreas Jaeger <aj at suse dot de>, <libc-alpha at sources dot redhat dot com>
- Date: Tue, 22 Jan 2002 11:49:05 -0800 (PST)
- Subject: Re: [libc-alpha] mt-application hanging in exit()
On Tue, 22 Jan 2002, Bertold Kolics wrote:
> Just one more comment on this (and that is why I think it should be clearly
> indicated in the documentation of glibc that use of pthread_sigmask is
> mandatory on Linux): UNIX International compliant systems make sigprocmask()
> equivalent to pthread_sigmask().
One implementor representing IBM's operating system already came
forward to tell you that your code essentially works by fluke on
that system.
You can never prove that something works with empirical tests, only
that it doesn't work.
In the case of platform interfaces, you are not only concerned with
whether something works presently, but whether it can be relied upon
in other releases of the same platform. Something that works today,
but is not documented, may break your program tomorrow.
Why should glibc support features of other platforms that are not
even documented as working on those platforms? That is the path
to lunacy.
There is no requirement for Unix compliant systems to make the two
functions unconditionally equivalent. The standard calls for them to be
equivalent *in single-threaded applications*.
In GNU/Linux, a single-threaded application is one that is
compiled without the preprocessor symbol _REENTRANT and without
linking to libpthread.
Being single or multithreaded is not a run-time state which changes with
your first successful call to pthread_create; it's determined when
the program is built.