[Bug boehm-gc/52179] boehm-gc incompatible with aslr on darwin11
howarth at nitro dot med.uc.edu
gcc-bugzilla@gcc.gnu.org
Thu Feb 9 15:06:00 GMT 2012
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52179
--- Comment #6 from Jack Howarth <howarth at nitro dot med.uc.edu> 2012-02-09 15:05:50 UTC ---
All of these crashes appear in the section in the GC_mark_from subroutine of
mark.c commented as...
/* Try to prefetch the next pointer to be examined asap. */
/* Empirically, this also seems to help slightly without */
/* prefetches, at least on linux/X86. Presumably this loop */
/* ends up with less register pressure, and gcc thus ends up */
/* generating slightly better code. Overall gcc code quality */
/* for this loop is still not great. */
GC_mark_from itself is commented as...
/*
* Mark objects pointed to by the regions described by
* mark stack entries between GC_mark_stack and GC_mark_stack_top,
* inclusive. Assumes the upper limit of a mark stack entry
* is never 0. A mark stack entry never has size 0.
* We try to traverse on the order of a hblk of memory before we return.
* Caller is responsible for calling this until the mark stack is empty.
* Note that this is the most performance critical routine in the
* collector. Hence it contains all sorts of ugly hacks to speed
* things up. In particular, we avoid procedure calls on the common
* path, we take advantage of peculiarities of the mark descriptor
* encoding, we optionally maintain a cache for the block address to
* header mapping, we prefetch when an object is "grayed", etc.
*/
More information about the Gcc-bugs
mailing list