loading multi threaded library into executable enabled
for single thread
Barry Andrews
titanandrews at gmail.com
Fri Sep 12 15:00:23 UTC 2008
Thanks for the links! But I'm not sure what any of this has to do with
this particular issue. I have an exe that does not use threads that
loads a lib that is linked with libpthread. Why does different threading
implementations affect what I am seeing here? Is there no way for this
to work in FreeBSD v5.5? Why would this go away if I upgraded to 6.x or
better?
thanks,
B
Jeremy Chadwick wrote:
> 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"
>>
>
>
More information about the freebsd-hackers
mailing list