Re: mingw check hung - Mailing list pgsql-hackers

From Magnus Hagander
Subject Re: mingw check hung
Date
Msg-id 4986E414.4040106@hagander.net
Whole thread Raw
In response to Re: mingw check hung  (Andrew Dunstan <andrew@dunslane.net>)
Responses Re: mingw check hung
List pgsql-hackers
Andrew Dunstan wrote:
> 
> 
> Magnus Hagander wrote:
>> Andrew Dunstan wrote:
>>  
>>> Hiroshi Inoue wrote:
>>>    
>>>> Eventually does the crash come from the call SetEnvironemntVariable
>>>> (.., NULL) on mingw-XP(or older?)?
>>>> I'm also interested in this issue and want to know the cause.
>>>>
>>>>
>>>>       
>>> The debugger shows that we actually fail on a popen() call in intdb.
>>> However, if we replace the calls to SetEnvironmentVariable("foo",NULL)
>>> with calls to SetEnvironmentVariable("foo","") then there is no failure.
>>> My theory is that on XP somehow the former is corrupting the environment
>>> such that when popen() tries to copy the environment for the new child
>>> process, it barfs.
>>>     
>>
>> Well, XP only does it when it's built with mingw!
>>
>> Or is this actually dependent on if the binary is run under msys or cmd?
>>
>>
>>   
> 
> Even weirder. It has now started working. For no apparent reason. I am
> seriously confused.

This is just strange :S

We could #ifdef out that thing on mingw, but I'm still worried that it
will not work in all cases. I'd like to think there's a reason that
thing was in there in the first place.

Hmm. Actually, if I look at how things were before, I think we only
called SetEnvironmentVariable() in case we set a variable, and never if
we removed one. I'm not sure that's correct behavior, but it's
apparently non-crashing behavior. Perhaps we need to restore that one?

I'd be in favor of restoring it for both mingw and msvc in that case -
that way we keep the platforms as close to each other as possible.

Comments?

//Magnus



pgsql-hackers by date:

Previous
From: Peter Eisentraut
Date:
Subject: Re: parallel restore
Next
From: Andrew Dunstan
Date:
Subject: Re: mingw check hung