Ticket #3289 (closed bug: fixed)

Opened 4 years ago

Last modified 4 years ago

make -j3 (or make -j30) occasionally fails on 6.11

Reported by: gbeshers Owned by:
Priority: normal Milestone: 6.12.1
Component: Build System Version: 6.11
Keywords: makefile dependency split Cc:
Operating System: Linux Architecture: x86_64 (amd64)
Type of failure: Difficulty: Unknown
Test Case: Blocked By:
Blocking: Related Tickets:

Description (last modified by igloo) (diff)

I've seen this a handful of times since the new build system was pushed. I'm using exclusively x86_64 systems. The error message is

/usr/bin/ld: cannot find libraries/base/dist-install/build/GHC/Enum_split/Enum__1.p_o

Turning on make's debug information makes it clear that some process, I presume split, is not completing before linking occurs.

Simply restarting the make completes the build most times (I think only once has a second error occurred and I'm not 100% that I had made no modifications).

This happens on a dual-core debian system and an 8-core RHEL5.3 or Fedora-11 system.

If you need make's debug output send email to gbeshers at gmail dot com, but I am hoping just adding a dependency will work.

Change History

Changed 4 years ago by igloo

  • difficulty set to Unknown
  • description modified (diff)

Changed 4 years ago by igloo

  • milestone set to 6.12.1

I can neither reproduce this, nor see why it would happen. I've sent an e-mail to gbeshers.

Changed 4 years ago by igloo

  • status changed from new to closed
  • resolution set to fixed

The problem is that both

libraries/base/dist-install/build/GHC/Float.o
libraries/base/dist-install/build/GHC/Float.p_o

used (and cleaned) the same

libraries/base/dist-install/build/GHC/Float_split

directory, so there is a race condition if both are built in parallel.

Fixed by:

Sat Jul 18 07:55:22 PDT 2009  Ian Lynagh <igloo@earth.li>
  * Add osuf to the name we use for the split dir
  This avoids a collision between the directories we use when compiling
  multiple ways, which in turn leads to a race condition in parallel
  builds.
Note: See TracTickets for help on using tickets.