Re: Calling libiptc API from a separate thread in a C program throws segmentati
- From: Kaz Kylheku <kaz@xxxxxxxxxxx>
- Date: Tue, 17 Jan 2012 23:13:23 +0000 (UTC)
On 2012-01-17, Richard Kettlewell <rjk@xxxxxxxxxxxxxxx> wrote:
Kaz Kylheku <kaz@xxxxxxxxxxx> writes:
Richard Kettlewell <rjk@xxxxxxxxxxxxxxx> wrote:
errno ends up indirected either way though (at least here)."Either way" between which alternatives?
$ cat t.c
#include <errno.h>
int main() { return errno; }
$ gcc -E t.c|grep main
int main() { return (*__errno_location ()); }
$ gcc -pthread -E t.c|grep main
int main() { return (*__errno_location ()); }
I think you must have misread the condition in bits/errno.h.
Indeed I did. But what's shocking is how long ago that behavior changed, wow.
They have all the history back-ported into git.
It was in 1997 that checks for __USE_REENTRANT was dropped from there and other
numerous other places:
http://sourceware.org/git/?p=glibc.git;a=commit;f=sysdeps/unix/sysv/linux/bits/errno.h;h=19361cb768c280e47f2ca69ed63e1d75f332e592
In the commit comment, Drepper declared a policy:
``Don't use __USE_REENTRENT. All code must be prepared to be running in a
multi-threaded environment.''
So that's that. On glibc, -lpthread is basically enough. Everything is switched
to thread-safe by linkage to stub pthread routines that get overriden by the
real ones.
(I was just thinking that errno was still an exception.)
.
- References:
- Calling libiptc API from a separate thread in a C program throws segmentati
- From: kkgarg78
- Re: Calling libiptc API from a separate thread in a C program throws segmentati
- From: Kaz Kylheku
- Re: Calling libiptc API from a separate thread in a C program throws segmentati
- From: Jorgen Grahn
- Re: Calling libiptc API from a separate thread in a C program throws segmentati
- From: Kaz Kylheku
- Re: Calling libiptc API from a separate thread in a C program throws segmentati
- From: Richard Kettlewell
- Re: Calling libiptc API from a separate thread in a C program throws segmentati
- From: Kaz Kylheku
- Re: Calling libiptc API from a separate thread in a C program throws segmentati
- From: Richard Kettlewell
- Calling libiptc API from a separate thread in a C program throws segmentati
- Prev by Date: Re: Calling libiptc API from a separate thread in a C program throws segmentati
- Next by Date: Re: Calling libiptc API from a separate thread in a C program throws segmentati
- Previous by thread: Re: Calling libiptc API from a separate thread in a C program throws segmentati
- Next by thread: Re: Calling libiptc API from a separate thread in a C program throws segmentati
- Index(es):
Relevant Pages
|