loading multi threaded library into executable enabled for
single thread
Jeremy Chadwick
koitsu at FreeBSD.org
Fri Sep 12 13:51:14 UTC 2008
On Fri, Sep 12, 2008 at 09:26:37AM -0400, Barry Andrews wrote:
> I don't understand. If it was not broken, then why did it change in later
> FreeBSD versions?
I should be more explicit: the threading library and implementations
have changed over time. There was libc_r, then there was libthr, then
there was libkse. This is what we call "evolution". :-)
http://www.unobvious.com/bsd/freebsd-threads.html
http://kerneltrap.org/node/624
http://www.freebsd.org/kse/
The gcc -pthread flag is still there on present-day FreeBSD (6 through
HEAD), and *should* be used. You can choose not to use it but you must
ensure during linktime that you explicitly link to -lpthread.
> On Fri, Sep 12, 2008 at 9:10 AM, Jeremy Chadwick <koitsu at freebsd.org> wrote:
>
> > On Fri, Sep 12, 2008 at 07:41:14AM -0400, Barry Andrews wrote:
> > > Do you know if this is documented in Release Notes or Known Issues or
> > > somewhere?
> >
> > Why would it be an "issue"? gcc -pthread and libpthread linking is
> > documented pretty much everywhere on the web. There isn't anything
> > broken about it, it's how it's done on older FreeBSD.
> >
> > Note that all of this has significantly changed in later FreeBSD
> > versions, and that the 5.x series was deprecated a very long time ago.
> >
> > >> On Thu, 11 Sep 2008, Barry Andrews wrote:
> > >>
> > >>> Hi All,
> > >>>
> > >>> I have a multi-threaded library that is linked against libpthread.
> > >>> When I
> > >>> load this lib into a tclsh process on FreeBSD, I get this error,
> > >>> "Recurse on
> > >>> private mutex". and crash. I understand that I can have this issue
> > >>> when the
> > >>> executable is not linked against libpthread but one of the loaded
> > >>> libs is.
> > >>> Basically, it thinks it's in single threaded mode.
> > >>
> > >> This must be an older version of FreeBSD. I think you must
> > >> link your application (tclsh or whatever) against libpthread
> > >> in order for this to work. The libc functions won't get properly
> > >> overloaded by their equivalents in libpthread unless you do
> > >> this.
> >
> > --
> > | Jeremy Chadwick jdc at parodius.com |
> > | Parodius Networking http://www.parodius.com/ |
> > | UNIX Systems Administrator Mountain View, CA, USA |
> > | Making life hard for others since 1977. PGP: 4BD6C0CB |
> >
> >
> _______________________________________________
> freebsd-hackers at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
> To unsubscribe, send any mail to "freebsd-hackers-unsubscribe at freebsd.org"
--
| Jeremy Chadwick jdc at parodius.com |
| Parodius Networking http://www.parodius.com/ |
| UNIX Systems Administrator Mountain View, CA, USA |
| Making life hard for others since 1977. PGP: 4BD6C0CB |
More information about the freebsd-hackers
mailing list