malloc(): error: recursive call

Daniel Eischen eischen at pcnet5.pcnet.com
Tue May 27 16:29:40 PDT 2003


On Wed, 28 May 2003, Petri Helenius wrote:

> >And what does `ldd libnetsnmp.so.x`, `ldd libfoo.y`, show?
>=20
> They give empty replies.
>=20
> >What is `ldd yourexecutable` show?
>=20
> It=B4s usually linked static but if I remove the -static line it says:
>        libnetsnmp.so.5 =3D> /usr/local/lib/libnetsnmp.so.5 (0x2807f000)
>         libcrypto.so.3 =3D> /usr/lib/libcrypto.so.3 (0x280fe000)
>         libpcap.so.2 =3D> /usr/lib/libpcap.so.2 (0x28209000)
>         libkse.so.1 =3D> /usr/lib/libkse.so.1 (0x28225000)
>         libc.so.5 =3D> /usr/lib/libc.so.5 (0x28246000)
>=20
> >malloc is thread safe and we've been using it fine
> >with all our tests.  I suspect you're using another
> >library that is using libc_r or something.
>=20
> malloc works for me with for example linuxthreads. So I do believe that
> the the trigger for malloc locking works, however looking at the code,
> spinlocks are implemented differently depending on which thread library i=
s
> linked in.

Also, you do need a relatively recent kernel.  There are
a couple of flags in each thread's mailbox that the
kernel needs to recognize.  This change was committed
to the kernel around April 21, 2003

--=20
Dan Eischen



More information about the freebsd-threads mailing list