[Xquartz-dev] ALLOCATE_LOCAL / crashes
gparker at apple.com
Thu Dec 6 21:44:10 PST 2007
On Dec 6, 2007, at 9:07 PM, Ben Byer wrote:
> So, it seems that ALLOCATE_LOCAL is responsible for at least some of
> the "rootless crashes" we're seeing -- specifically, all of the ones
> where the crash fell in any of the mi* functions.
> (My understanding is that ALLOCATE_LOCAL is more dangerous to use on
> Leopard due to virtual memory layout -- it should never be used to
> allocate more than about a kilobyte, and I just saw miFillPolyArc
> crash by trying to allocate 900k.)
ALLOCATE_LOCAL has caused trouble since XDarwin's earliest days.
(Symptom then: remotely run Solaris Netscape on some golfing web page,
then select all. Crash while filling some very large number of
rectangles.) The problem can be simple stack overflow, or exceeding
the maximum single stack frame. (The latter may only be a problem on
ppc with old versions of gcc.)
I see that the Xserver thread is using the default pthread stack size,
only 500K. Boosting that to 8MB (matching the stack size for the main
thread) would help, but you'll still probably have pathological cases.
Linux gets to grow its stack until it runs into some other allocation,
so it can cope better with alloca(bignum).
Still, 900KB? How big of an arc was it trying to draw?
Greg Parker gparker at apple.com Runtime Wrangler
More information about the Xquartz-dev