Closed Bug 286179 Opened 15 years ago Closed 15 years ago

make parallel builds possible on Windows using MSVC

Categories

(Firefox Build System :: General, defect)

x86
Windows XP
defect
Not set

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: chase, Assigned: chase)

Details

(Keywords: fixed1.8.1.1)

Attachments

(2 files)

Figure out why distcc and parallel builds fail on Windows.  My last try to make
this work was on chroma.  The build error log is at:

 
http://tinderbox.mozilla.org/showlog.cgi?log=Mozilla-l10n/1110855013.8962.gz&fulltext=1

At the time, I was running distccd on sweetlou.
Parallel builds fail on MSVC builds because certain versions of MSVC write debug
information to a .pdb file per directory.  During a parallel build, 2 instances
of MSVC are attempting to write to the same file which doesn't work.  gcc builds
do not have this problem.

I thought newer versions of MSVC used a different debugging mechanism so that
this was no longer a problem?
Summary: make distcc/parallel builds possible on Windows → make distcc/parallel builds possible on Windows using MSVC
(In reply to comment #1)
> Parallel builds fail on MSVC builds because certain versions of MSVC write debug
> information to a .pdb file per directory.  During a parallel build, 2 instances
> of MSVC are attempting to write to the same file which doesn't work.  gcc builds
> do not have this problem.

Hmm, from config/rules.mk the code appears to use $LIBRARY_NAME.pdb if
$LIBRARY_NAME is defined and <filename>.pdb otherwise.  This code is only
invoked on Windows if the compiler isn't gcc.  Can someone confirm this?

http://lxr.mozilla.org/mozilla/source/config/rules.mk#175

I'm tempted to tender a patch that removes the $LIBRARY_NAME conditional and
dump debug information into <filename>.pdb files across the board instead.  What
reasons were there to dump debugging information from multiple files into a
single .pdb file?  Are they still valid?

> I thought newer versions of MSVC used a different debugging mechanism so that
> this was no longer a problem?

I'm not certain what MSVC versions you mean when you say "newer" but we're still
using MSVC 6 for builds in-house.
Status: NEW → ASSIGNED
Summary: make distcc/parallel builds possible on Windows using MSVC → make parallel builds possible on Windows using MSVC
The /PDB:file rules came from the legacy Netscape nmake build system so I'm not
sure what the justification for a single .pdb file is.  Can you pass multiple
.pdb files to the linker?  Yes, the .pdb files are not used by gcc.

I thought that bryner was doing some work to support debugging using something
other than .pdb files for MSVC7.1 but I could just be misremembering an old bug.
Attachment #182988 - Flags: superreview?(cls)
Attachment #182988 - Flags: review?(bryner)
Attachment #182988 - Flags: review?(bryner) → review+
Attachment #182988 - Flags: superreview?(cls) → superreview+
Comment on attachment 182988 [details] [diff] [review]
write debug symbols into separate pdb files - v 1 [checked in]

I'll work with Jay to monitor symbol generation and Talkback.  At some point we
should have enough crash data on 1.1a1 to be certain that keeping this fix is
the right thing to do.
Attachment #182988 - Flags: approval-aviary1.1a2?
Comment on attachment 182988 [details] [diff] [review]
write debug symbols into separate pdb files - v 1 [checked in]

a=chase
Attachment #182988 - Flags: approval-aviary1.1a2? → approval-aviary1.1a2+
Comment on attachment 182988 [details] [diff] [review]
write debug symbols into separate pdb files - v 1 [checked in]

Landed this on the trunk plus an accompanying comment to make intent clear.

Checking in rules.mk;
/cvsroot/mozilla/config/rules.mk,v  <--  rules.mk
new revision: 3.475; previous revision: 3.474
done
Attachment #182988 - Attachment description: write debug symbols into separate pdb files - v 1 → write debug symbols into separate pdb files - v 1 [checked in]
Status: ASSIGNED → RESOLVED
Closed: 15 years ago
Resolution: --- → FIXED
Attached patch missing linkSplinter Review
Attachment #242403 - Flags: review?(chase)
Attachment #242403 - Flags: review?(chase) → review+
Comment on attachment 242403 [details] [diff] [review]
missing link

MSVC debug build config only, no effect on releases.
Attachment #242403 - Flags: approval1.8.1?
Not for 1.8.1. Let's have this bake for a week on trunk and we can pick it up for 1.8.1.1
Comment on attachment 242403 [details] [diff] [review]
missing link

as per bsmedberg's comment
Attachment #242403 - Flags: approval1.8.1?
Attachment #242403 - Flags: approval1.8.1.1?
Attachment #242403 - Flags: approval1.8.1-
Comment on attachment 242403 [details] [diff] [review]
missing link

approved for 1.8 branch, a=dveditz for drivers
Attachment #242403 - Flags: approval1.8.1.1? → approval1.8.1.1+
Fix checked in to the branch.
Keywords: fixed1.8.1.1
Component: Build Config → General
Product: Firefox → Firefox Build System
You need to log in before you can comment on or make changes to this bug.