[wix-devs] Black-Box Analysis of the "Unexpected PDB error while running build.cmd" Problem
Rob Mensching
rob at firegiant.com
Tue Jul 13 09:27:28 PDT 2021
> but we still need to isolate some action associated with one layer that does not finish before
starting another layer
The build_all batch file does not does not stop at the first failed layer today. It probably should.
> the implementation of parallelism in the build chain
At this point, there is pretty minimal parallelism within some of the layers. There is an opportunity to add much more parallelism within layers.
AFAICT, parallelism is not the cause of the “Unexpected PDB” failures. The “Unexpected PDB” problem appears to be a bug in the ARM64 build tooling from Microsoft. Hopefully, their fix rolls out quickly.
From: Ron Martin <cpuwzd at comcast.net>
Sent: Tuesday, July 13, 2021 8:32 AM
To: Bob Arnson <bob at firegiant.com>; WiX Toolset Developer Mailing List <wix-devs at lists.wixtoolset.org>; Rob Mensching <rob at firegiant.com>
Subject: Re: [wix-devs] Black-Box Analysis of the "Unexpected PDB error while running build.cmd" Problem
I believe that, but we still need to isolate some action associated with one layer that does not finish before
starting another layer. Does the compiler guarantee that the external process is complete before claiming
its own completion?
I know nothing (yet) about the implementation of parallelism in the build chain, but in general terms, if
you create a queue of parallelizable tasks, the main thread must explicitly wait for those tasks to be complete
before allowing (in our case) the next layer to begin.
On 7/13/2021 10:53 AM, Bob Arnson wrote:
It's an intermittent failure in an external process the compiler uses.
-----Original Message-----
From: wix-devs <wix-devs-bounces at lists.wixtoolset.org><mailto:wix-devs-bounces at lists.wixtoolset.org> On Behalf Of Ron Martin via wix-devs
Sent: Tuesday, 13 July, 2021 10:26
To: Rob Mensching <rob at firegiant.com><mailto:rob at firegiant.com>; WiX Toolset Developer Mailing List <wix-devs at lists.wixtoolset.org><mailto:wix-devs at lists.wixtoolset.org>
Cc: Ron Martin <cpuwzd at comcast.net><mailto:cpuwzd at comcast.net>
Subject: Re: [wix-devs] Black-Box Analysis of the "Unexpected PDB error while running build.cmd" Problem
If there is no way that a layer can be declared as finished while still having one or more active worker threads, what is your explanation for the success of starting each layer manually vs. the likely failure of starting all the layers from a script?
On 7/12/2021 12:24 AM, Rob Mensching wrote:
Can I conclude that the multi-threading is contained within one or
more of your "layers"?
Yes, there is some. Bob is adding more.
I'm assuming that the roblems arise because there is no mechanism to
assure
that all 0f the multi-threaded building commenced within a layer is
completed before the next layer can be processed.
No. There is no parallelism across layers. The output of earlier
layers are consumed by later layers. That’s why the layers exist.
Is the required mechanism simply missing?
No. The batch files are the mechanism.
*From:* Ron Martin <cpuwzd at comcast.net><mailto:cpuwzd at comcast.net>
*Sent:* Sunday, July 11, 2021 8:13 PM
*To:* Rob Mensching <rob at firegiant.com><mailto:rob at firegiant.com>; WiX Toolset Developer Mailing
List <wix-devs at lists.wixtoolset.org><mailto:wix-devs at lists.wixtoolset.org>
*Subject:* Re: [wix-devs] Black-Box Analysis of the "Unexpected PDB
error while running build.cmd" Problem
Rob,
I think I saw some mention of switches to enable or disable
multi-threaded building, but I haven't researched them yet. Can I
conclude that the multi-threading is contained within one or more of
your "layers"? If so, since manual building has such a positive
effect, I'm assuming that the roblems arise because there is no
mechanism to assure that all 0f the multi-threaded building commenced
within a layer is completed before the next layer can be processed.
Is the required mechanism simply missing? Is there any way to create
our own such mechanism?
Ron
On 7/11/2021 12:36 PM, Rob Mensching wrote:
Yes.
That list defines the "layers" of the build.
Build/rebuilding layers in order is a way to minimize the chance of hitting the Microsoft PDB error.
Once a layer is built successfully, you don't have to go back and build it again until you change something in it.
-----Original Message-----
From: wix-devs<wix-devs-bounces at lists.wixtoolset.org><mailto:wix-devs-bounces at lists.wixtoolset.org>
<mailto:wix-devs-bounces at lists.wixtoolset.org><mailto:wix-devs-bounces at lists.wixtoolset.org> On Behalf Of Ron
Martin via wix-devs
Sent: Sunday, July 11, 2021 7:10 AM
To: wix-devs<wix-devs at lists.wixtoolset.org><mailto:wix-devs at lists.wixtoolset.org>
<mailto:wix-devs at lists.wixtoolset.org><mailto:wix-devs at lists.wixtoolset.org>
Cc: Ron Martin<cpuwzd at comcast.net><mailto:cpuwzd at comcast.net> <mailto:cpuwzd at comcast.net><mailto:cpuwzd at comcast.net>
Subject: [wix-devs] Black-Box Analysis of the "Unexpected PDB
error while running build.cmd" Problem
build.cmd is executed from the wix4 folder. It takes an optional "release" parameter. It executes build_all.cmd from the wix4\src folder, passing along the optional "release" parameter.
build_all.cmd is executed from the wix4\src folder. It takes an optional "release" parameter.
The functionality of executing build.cmd from the wix4 folder with an optional "release" parameter can be achieved by executing a series of commands from the wix4\src folder. All but the first take an optional "release" parameter.
We will refer to this series of commands as the primary command sequence.
* call build_init.cmd
* call dtf\dtf.cmd
* call internal\internal.cmd
* call libs\libs.cmd
* call api\api.cmd
* call burn\burn.cmd
* call wix\wix.cmd
* call ext\ext.cmd
* call test\test.cmd
Hypothesis:
Executing the primary command sequence manually will
accomplish the
desired goal without
generating an "unexpected PDB error" error. This will be
considered
the quiescent state.
Furthermore, once quiescence has been reached, source code
changes
can be made. Using
a list of the changed files, you can hopefully deduce a
sub-sequence
of the primary command
sequence (notably not including the first command of the
primary
command sequence) that will
restore quiescence.
Example:
While working on Issue 5371, specifically in the area of C++
code
that implements custom
actions for the Util extension, I was repeatably able to
return to
quiescence by executing
call ext\ext.cmd from wix4\src.
I look forward to confirmation of my hypothesis and any simplification or improvement in our build process to which it might lead.
Ron
____________________________________________________________________
WiX Toolset Developer Mailing List provided by
FireGianthttp://www.firegiant.com/ <http://www.firegiant.com/><http://www.firegiant.com/>
____________________________________________________________________
WiX Toolset Developer Mailing List provided by FireGiant http://www.firegiant.com/
More information about the wix-devs
mailing list