I've created a job, that builds the same sources into 32- or 64-bit binaries depending on the build parameter. The name of the job is "Compile".
I then created two convenience wrapper-projects, one for each architecture: "Compile-64" and "Compile-32".
The wrapper-projects do nothing other than trigger a build of compile with the correct parameter (using the Parametrized Parameter Plugin as suggested here). The checkbox for "Block until the triggered projects finish their builds" is On.
If I start both of the wrapper projects ("Compile-64" and "Compile-32") they both kick off an instance of "Compile", as one would expect.
Unfortunately, those triggered instances of "Compile" never actually begin – they remain pending, because our only two Executors are occupied by the blocked wrappers.
A classic deadlock caused by the blocked builds still occupying an executor...