On 25/03/2020 17:51, Adrian McCarthy via lldb-commits wrote: > > > On Wed, Mar 25, 2020 at 9:49 AM Adrian McCarthy <amcca...@google.com > <mailto:amcca...@google.com>> wrote: > > > > On Wed, Mar 25, 2020 at 9:10 AM Pavel Labath <pav...@centrum.sk > <mailto:pav...@centrum.sk>> wrote: > > On 25/03/2020 01:04, Adrian McCarthy wrote: > > I took a stab at this, but I'm not seeing any new test failures. > > That is odd. > > I was doing some stuff on windows today, so I figured I'd take a > stab at > this. I was kind of right that the check in ProcessLauncher windows > prevents us from passing an empty environment. > > However, the interesting part starts when I tried to remove that > check. > Then the test started behaving nondeterministically -- sometimes > passing > and sometimes failing due to ERROR_INVALID_PARAMETER being > returned from > CreateProcessW. I can see how windows might need some environment > variables to start up a process correctly, but I do not > understand why > this should be nondeterministic... > > > Oh, I have a guess. CreateProcessW takes a pointer to an > environment block. If that pointer is null, the process will > inherit the parent environment. If you want to pass it an empty > environment, you have to have a valid pointer to an empty string (or > possibly to a string with TWO terminating '\0's). > > > Scratch the "or possibly." You definitely need two terminating zeros. > Since it's in UTF-16, it wants two L'\0', which is four consecutive zero > bytes. >
Thanks. This is exactly what was needed. It's not what I would have expected, as the documentation says this is "null-terminated block of null-terminated strings" -- in my book that would mean that an empty list of null-terminated strings ends with a single L'\0'. But I guess this is a very weird corner case, as an empty environment is literally the only way to *not* need a double null terminator. Anyway, D76835 is the patch for that. pl _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits