[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