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

From: David Caldwell <[email-masked]>
Date: Sat, 20 Sep 2014 11:31:10 -0700

On 9/20/14 8:31 AM, Jan Djärv wrote:
> 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?

It depends on 2 variables: the number of load commands that need to be
added (num_unexec_regions) and text_seg_lowest_offset.

num_unexec_regions jumps around a lot, doing "make clean && make" over
and over it'll be different every time. Somewhere between 12 and 34.

text_seg_lowest_offset seems more stable, but it still changes. When I
first unpacked the tarball and compiled, text_seg_lowest_offset was very
low: 0x17c0. This stayed constant for about an hour while I was
debugging this (adding debug prints) and then mysteriously jumped up to
0x24f0 at which point the unexec started succeeding without the change
to headerpad_extra.

I just unpacked a clean pretest source directory and
text_seg_lowest_offset was 0x17a0 and unexec failed.

Doing
  (make clean && make) 2>&1 | grep "Lowest offset of all sections"
over and over gives me:

Lowest offset of all sections in __TEXT segment:   0x17a0
Lowest offset of all sections in __TEXT segment:   0x17a0
Lowest offset of all sections in __TEXT segment:   0x17a0
Lowest offset of all sections in __TEXT segment:   0x17a0
Lowest offset of all sections in __TEXT segment:   0x17a0
Lowest offset of all sections in __TEXT segment:   0x17a0

Though one of those times it didn't fail (presumably because
num_unexec_regions was low enough).

-David