Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 29 Mar 2001 11:41:06 -0800
From:      Alfred Perlstein <bright@wintelcom.net>
To:        michael_class@gmx.net
Cc:        current@FreeBSD.ORG
Subject:   Re: malloc not recurseable?
Message-ID:  <20010329114105.D9431@fw.wintelcom.net>
In-Reply-To: <Pine.BSF.4.33.0103291229090.62371-100000@tmbbobmc.bbn.hp.com>; from michaelc@tmbbobmc.bbn.hp.com on Thu, Mar 29, 2001 at 12:35:38PM %2B0200
References:  <Pine.BSF.4.33.0103291229090.62371-100000@tmbbobmc.bbn.hp.com>

next in thread | previous in thread | raw e-mail | index | archive | help
* Michael Class <michaelc@tmbbobmc.bbn.hp.com> [010329 02:36] wrote:
> Hello,
> 
> on a FBSD-5.0-current (as of yesterday) system I am having a
> question about the way malloc works. The manpage states
> that malloc cannot be recursed. Does this mean that our
> malloc is not thread safe? I checked the manpage on HPUX
> and there it explicitely states that malloc is thread-safe.
> 
> The reason I am asking is that my X-Server is crashing randomly
> (not very often though, approx. once a day) with the following
> trace: (This is XFree86-4.0.3 from ports)
> 
> #0  0x2820a9e8 in kill () from /usr/lib/libc.so.5
> #1  0x2825bb3d in abort () from /usr/lib/libc.so.5
> #2  0x2825a682 in isatty () from /usr/lib/libc.so.5
> #3  0x2825a6b0 in isatty () from /usr/lib/libc.so.5
> #4  0x2825b6a6 in malloc () from /usr/lib/libc.so.5
> #5  0x80d19ff in Xalloc (amount=16) at utils.c:1225
> #6  0x80cc30c in TimerSet (timer=0x0, flags=0, millis=50, func=0x8788ef0,
>     arg=0x88acb00) at WaitFor.c:744
> #7  0x87890fa in ?? ()
> #8  0x878927d in ?? ()
> #9  0x8788bf0 in ?? ()
> #10 0x807da23 in xf86SigioReadInput (fd=7, closure=0x88acb00)
>     at xf86Events.c:1039
> #11 0x8093d48 in xf86SIGIO (sig=23) at sigio.c:99
> #12 0xbfbfffac in ?? ()
> #13 0x2825ad74 in isatty () from /usr/lib/libc.so.5
> #14 0x2825afcd in isatty () from /usr/lib/libc.so.5
> #15 0x2825b6f1 in malloc () from /usr/lib/libc.so.5
> #16 0x80d19ff in Xalloc (amount=256) at utils.c:1225
> #17 0x87578ac in ?? ()
> #18 0x8757a98 in ?? ()
> #19 0x8758f13 in ?? ()
> #20 0x8759e26 in ?? ()
> #21 0x80c8b6d in QueryFont (pFont=0x8c22a00, pReply=0xbfbfeba4,
>     nProtoCCIStructs=256) at dixfonts.c:580
> #22 0x80ad639 in ProcQueryFont (client=0x8b52d00) at dispatch.c:1388
> #23 0x80ac045 in Dispatch () at dispatch.c:456
> #24 0x80bc395 in main (argc=3, argv=0xbfbffdc0, envp=0xbfbffdd0) at main.c:439
> #25 0x806b31d in _start ()
> 
> To me this looks like malloc is called in a signal-handler. But I
> am not sure, if this is the right interpretation.
> Any comments?


There's a difference between being thread safe and signal safe.

Malloc is not signal safe and the XFree coders need to remove the
signal handler's use of malloc, basically rework the problem they
are trying to solve.

-- 
-Alfred Perlstein - [bright@wintelcom.net|alfred@freebsd.org]
Represent yourself, show up at BABUG http://www.babug.org/

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20010329114105.D9431>