This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH] pthread_once hangs when init routine throws an exception [BZ #18435]
- From: Jonathan Wakely <jwakely at redhat dot com>
- To: Torvald Riegel <triegel at redhat dot com>
- Cc: Martin Sebor <msebor at redhat dot com>, Rich Felker <dalias at libc dot org>, Szabolcs Nagy <szabolcs dot nagy at arm dot com>, GNU C Library <libc-alpha at sourceware dot org>
- Date: Mon, 8 Jun 2015 12:27:55 +0100
- Subject: Re: [PATCH] pthread_once hangs when init routine throws an exception [BZ #18435]
- Authentication-results: sourceware.org; auth=none
- References: <556B7F10 dot 40209 at redhat dot com> <556C31DE dot 4020803 at arm dot com> <556CA772 dot 2060207 at redhat dot com> <1433329427 dot 21461 dot 101 dot camel at triegel dot csb> <20150603191444 dot GM17573 at brightrain dot aerifal dot cx> <556F6012 dot 6090502 at redhat dot com> <1433404311 dot 21461 dot 231 dot camel at triegel dot csb>
On 04/06/15 09:51 +0200, Torvald Riegel wrote:
We wanted to change to void* with GCC-5, but missed that boat
unfortunately. We can document that we don't give ABI/API guarantees
for it, but this would be much clearer to users if this would return
void* I believe.
I think it's still OK to change it to void* now, and document that it
is currently the address of the POSIX primitive, but that the function
could be modified or removed in future.
A disadvantage of returning void* is that if we do change what it
returns then code using it still compiles and links. If we change it
from returning pthread_xxx_t* to something else, or just remove it
entirely, then code using it fails earlier, at compile-time.
So we need to document that there are no guarantees for it, whatever
it returns. Simply changing to void* isn't enough.