Subject: Re: bug#18505: 24.3.93; intermittent unexec failures when building on Mac OS X 10.10 beta, Xcode 6.0

From: Jan Djärv <[email-masked]>
Date: Sat, 20 Sep 2014 17:31:32 +0200

Hello.

19 sep 2014 kl. 06:13 skrev David Caldwell <[email-masked]>:

> Hello,
> 
> I tried to build the latest pretest on Mac OS X Yosemite Beta with the
> new Xcode 6.0 (GM) tools and ran into this error during the unexec step:
> 
> unexec: not enough room for load commands for new __DATA segments

Does it happen all the time or just some times?

	Jan D.

> 
> (Full unexec log is attached).
> 
> Poking around I discovered a couple discrepancies. The "headerpad_extra"
> setting in configure.ac says entries are 56 bytes, but they are actually
> 78 bytes (probably because the comment was originally written in the 32
> bit days). Also the number of load commands needed is variable now--it
> depends on how many malloc segments were found and how many it could
> merge (see find_emacs_zone_regions() and unexec_regions_merge() in
> unexmacosx.c).
> 
> I printed num_unexec_regions in unexmacosx.c and observed anywhere
> from about 14 to 34 regions needed. But given that it seems to be
> different on every run and it's super annoying to debug when you run out
> of space, I suggest bumping headerpad_extra up to 0x1000. This gives
> about 1.5KB of headroom (or wasted space, depending on how you look at
> it) and allows for 52 load commands, which should be future proof for
> quite a while. I have attached a patch for configure.ac that does this
> and changes the comment to reflect my understanding.
> 
> I've also provided a patch that makes the unexec error more helpful: it
> computes the size needed for headerpad_extra given the number of load
> commands that it needed for that particular unexec run.
> 
> I assume this affects the trunk code, too, though I didn't look at it.
> 
> -David
> <increase_headerpad_extra.patch><helpful_unexec_error.patch><unexec-log.txt>