Re: EDB installer should check for valid %COMSPEC%

From: Dave Page <dpage(at)pgadmin(dot)org>
To: Craig Ringer <craig(at)2ndquadrant(dot)com>
Cc: "pgsql-general(at)postgresql(dot)org" <pgsql-general(at)postgresql(dot)org>, Sachin Srivastava <sachin(dot)srivastava(at)enterprisedb(dot)com>, Sandeep Thakkar <sandeep(dot)thakkar(at)enterprisedb(dot)com>
Subject: Re: EDB installer should check for valid %COMSPEC%
Date: 2012-11-19 09:14:31
Message-ID: CA+OCxow9cXEexZYfVWHHWXWXzd4gVwXQ32O_BvVBBL2+ryjkqQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Hi

On Mon, Nov 19, 2012 at 4:29 AM, Craig Ringer <craig(at)2ndquadrant(dot)com> wrote:
> Hi folks
>
> Some recent discussion on Stack Overflow has revealed another exciting
> way for Windows computers to be subtly broken.
>
> For as yet unknown reasons - probably related to security/virus scanner
> software, since everything else seems to be - some Windows machines have
> an invalid COMSPEC environment variable.
>
> Two variants have been sighted in the wild:
>
> %SystemRoot%\system32\cmd.exe;
>
> (note the trailing semicolon), and:
>
> C:\Windows\System32
>
> Both will produce the delightfully helpful initdb failure:
>
> initdb: could not execute command ""C:/Program
> Files/PostgreSQL/9.2/bin/postgres.exe" --boot -x1 -F ": No error
>
> while running:
>
> cscript //NoLogo "C:\Program
> Files\PostgreSQL\9.2/installer/server/initcluster.vbs" "NT
> AUTHORITY\NetworkService" "postgres" "****" "C:\Program
> Files\PostgreSQL\9.2" "C:\Program Files\PostgreSQL\9.2\data" 5432 "DEFAULT"
>
> which will exit with:
>
> Script exit code: 1
>
> In the one I was looking into, fixing COMSPEC in the System control
> panel's Environment Variables page by removing the trailing semicolon
> corrected the issue. It can be verified as correct by opening a new
> command prompt after you've changed the variable (not just re-using an
> existing already-open one) and running:
>
> "%COMSPEC%" /C "echo test ok"
>
> which should print:
>
> test ok
>
> not something like:
>
> '"C:\Windows\System32\cmd.exe;"' is not recognized as an internal or
> external command,
> operable program or batch file."
>
>
>
> Since I can find several reports of this spanning over a couple of
> years, I'd love to see a test for this integrated into the EDB
> installer. Just verify that popen() actually works before running the
> initdb script, and if it doesn't, check %COMSPEC% to see if it really
> points to cmd.exe .

Interesting - thanks for the info Craig. Sandeep; can you please look
into adding such a check to the installer. We already test the
VBscript interpreter, so this should go in the same place.

--
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake

EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Devrim GÜNDÜZ 2012-11-19 10:55:27 Re: Fuzzystrmatch contrib module on RHEL63
Previous Message Thomas Hill 2012-11-19 08:02:27 Experiences with pl/Java