malloc(): error: recursive call
Daniel Eischen
eischen at pcnet1.pcnet.com
Tue May 27 15:02:48 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.
I'm going to need a sample. Nothing I have here has this problem,
from KDE & mozilla, to the ACE tests.
There's also a patch for spinlocks at:
http://people.freebsd.org/~deischen/kse/spinlock.diffs
This is just a different way for libkse to do spinlocks,
and I don't see how it's going to solve your problem, but
you can try it.
> I have only I686_CPU on my kernel config and I don=B4t include pthread.h
> to all object files because it=B4s not supposed to be neccessary. (only t=
hose
> which call pthread_* functions) The code is compiled on a machine with
> no SMP and run on both SMP and non-SMP machines.
>=20
> Do I understand correctly that libkse mutexes always require syscall
> when locking and unlocking?
No, it doesn't. It only requires syscalls when a thread's
parent KSE has no more threads to run.
--=20
Dan Eischen
More information about the freebsd-threads
mailing list