kern/86029: undefined reference to `_thread_dump_info'
Daniel Eischen
deischen at freebsd.org
Wed Sep 21 10:30:12 PDT 2005
The following reply was made to PR kern/86029; it has been noted by GNATS.
From: Daniel Eischen <deischen at freebsd.org>
To: Christopher Sean Morrison <brlcad at mac.com>
Cc: David Xu <davidxu at freebsd.org>, <bug-followup at freebsd.org>
Subject: Re: kern/86029: undefined reference to `_thread_dump_info'
Date: Wed, 21 Sep 2005 13:28:09 -0400 (EDT)
On Wed, 21 Sep 2005, Christopher Sean Morrison wrote:
> David,
>
> This function was being used by a chunk of low level threading code in
> the BRL-CAD that has been in use since '98 for dumping out extra state
> information when thread creation fails. We don't "want" to use it, it
> just has been used for so long in the code for the very same reason
> that it's used by the posix threading library -- it's very useful for
> debugging and investigating failures.
That's what SIGINFO is for. Again, that's undocumented and
allowed to change, but it's better than calling a library
internal function.
> For what it's worth, this routine was in fact documented in the OpenBSD
> notes for c_r as being useful for exactly that purpose. Again, this is
> nothing new, either -- doesn't make it right, but what are the
> alternatives? The only difference seems to be the change on this AMD64
> box to not utilize -lc_r when -pthread is provided on the compile line.
OpenBSD took our libc_r. If _thread_dump_info() was supposed to be
callable from the outside, it would have been named pthread_dump_info_np().
> I've got no issue removing the call from our code, but it seems
> indicative of a larger change to what -pthread means. If -pthread no
> longer implies linking against c_r for whatever reason, that would be
> the fundamental difference here that we'll need to accommodate in our
> build. In that regard, what non-private routine will provide similar
> details when thread creation fails?
-pthread means do whatever is necessary to link in the threads
library. In 5.x and subsequent, the threads library is libpthread,
not libc_r.
pthread_create() should return a useful errno if it can't create
a thread.
--
DE
More information about the freebsd-threads
mailing list