Thread: BUG #10436: Can't compile 9.4 with this mingw64-w32 gcc 4.8.1, 4.8.2, 4.8.3

The following bug has been logged on the website:

Bug reference:      10436
Logged by:          Regina Obe
Email address:      lr@pcorp.us
PostgreSQL version: Unsupported/Unknown
Operating system:   Windows 7 (64-bit) mingw64-w32 4.8.1 chain
Description:

Side bug -- you don't have 9.4beta listed in PostgreSQL version dropdown on
this form -- this might be intentional, but seems if you want bug reports on
it would be nice to have it listed.

Main bug:
In trying to track down the issue I am having here:
http://trac.osgeo.org/postgis/ticket/2746

I tried to see if I'd have better luck with newer chains -- but none of the
chains I tried 4.8.3, 4.8.2, 4.8.1 (mingw64-w32 sjlj exception (win32
threading) can even get past configure step with the latest snapshot from:
ftp://ftp.postgresql.org/pub/snapshot/dev/

The error I got trying to compile with 4.8.1 is:

undefined reference to `_set_invalid_parameter_handler'

The 4.8.3 I got a different error, but can't remember what that was.

To rule out just the chains, I tried rebuilding 9.3.4 with 4.8.1 chain and
had no issue.  So it seems something has changed in the 9.4 code that makes
it not possible to build with these newer mingw64-w32 chains.
lr@pcorp.us writes:
> In trying to track down the issue I am having here:
> http://trac.osgeo.org/postgis/ticket/2746

> I tried to see if I'd have better luck with newer chains -- but none of the
> chains I tried 4.8.3, 4.8.2, 4.8.1 (mingw64-w32 sjlj exception (win32
> threading) can even get past configure step with the latest snapshot from:
> ftp://ftp.postgresql.org/pub/snapshot/dev/

> The error I got trying to compile with 4.8.1 is:

> undefined reference to `_set_invalid_parameter_handler'

> The 4.8.3 I got a different error, but can't remember what that was.

> To rule out just the chains, I tried rebuilding 9.3.4 with 4.8.1 chain and
> had no issue.  So it seems something has changed in the 9.4 code that makes
> it not possible to build with these newer mingw64-w32 chains.

If it's not getting through configure, the only plausible explanation
seems to be that something in autoconf 2.69 broke it.

It's not immediately clear what that would be, though :-(

            regards, tom lane
On 2014-05-24 12:35:08 -0400, Tom Lane wrote:
> lr@pcorp.us writes:
> > In trying to track down the issue I am having here:
> > http://trac.osgeo.org/postgis/ticket/2746
>
> > I tried to see if I'd have better luck with newer chains -- but none of the
> > chains I tried 4.8.3, 4.8.2, 4.8.1 (mingw64-w32 sjlj exception (win32
> > threading) can even get past configure step with the latest snapshot from:
> > ftp://ftp.postgresql.org/pub/snapshot/dev/
>
> > The error I got trying to compile with 4.8.1 is:
>
> > undefined reference to `_set_invalid_parameter_handler'
>
> > The 4.8.3 I got a different error, but can't remember what that was.
>
> > To rule out just the chains, I tried rebuilding 9.3.4 with 4.8.1 chain and
> > had no issue.  So it seems something has changed in the 9.4 code that makes
> > it not possible to build with these newer mingw64-w32 chains.
>
> If it's not getting through configure, the only plausible explanation
> seems to be that something in autoconf 2.69 broke it.

It could also be the linking changes made while trying to make missing
PGDLLIMPORTs more visible.

Greetings,

Andres Freund

--
 Andres Freund                       http://www.2ndQuadrant.com/
 PostgreSQL Development, 24x7 Support, Training & Services
Andres Freund <andres@2ndquadrant.com> writes:
> On 2014-05-24 12:35:08 -0400, Tom Lane wrote:
>> If it's not getting through configure, the only plausible explanation
>> seems to be that something in autoconf 2.69 broke it.

> It could also be the linking changes made while trying to make missing
> PGDLLIMPORTs more visible.

None of those changes touched the configure script, though.
If you look at what has:


http://git.postgresql.org/gitweb/?p=postgresql.git;a=history;f=configure;h=17f3f2654f81c3c986b205c0d47e925bacfaccce;hb=HEAD

the 2.69 upgrade seems like the only plausible suspect.

            regards, tom lane
On 2014-05-24 14:21:32 -0400, Tom Lane wrote:
> Andres Freund <andres@2ndquadrant.com> writes:
> > On 2014-05-24 12:35:08 -0400, Tom Lane wrote:
> >> If it's not getting through configure, the only plausible explanation
> >> seems to be that something in autoconf 2.69 broke it.
>
> > It could also be the linking changes made while trying to make missing
> > PGDLLIMPORTs more visible.
>
> None of those changes touched the configure script, though.

Right.

Regina, can you post config.log from 9.3 and 9.4?

There's a couple of bugreports referencing _set_invalid_parameter_handle
and mingw. With confusingly different explanations...

Greetings,

Andres Freund

--
 Andres Freund                       http://www.2ndQuadrant.com/
 PostgreSQL Development, 24x7 Support, Training & Services
On Sat, May 24, 2014 at 08:51:45PM +0200, Andres Freund wrote:
> On 2014-05-24 14:21:32 -0400, Tom Lane wrote:
> > Andres Freund <andres@2ndquadrant.com> writes:
> > > On 2014-05-24 12:35:08 -0400, Tom Lane wrote:
> > >> If it's not getting through configure, the only plausible explanation
> > >> seems to be that something in autoconf 2.69 broke it.
> >
> > > It could also be the linking changes made while trying to make missing
> > > PGDLLIMPORTs more visible.
> >
> > None of those changes touched the configure script, though.
>
> Right.
>
> Regina, can you post config.log from 9.3 and 9.4?
>
> There's a couple of bugreports referencing _set_invalid_parameter_handle
> and mingw. With confusingly different explanations...

I, too, ran into this problem.  It boils down to recent MinGW-w64 not
tolerating -Wl,--disable-auto-import:
https://sourceforge.net/p/mingw-w64/bugs/415

For now, I work around this locally by removing -Wl,--disable-auto-import from
src/template/win32.  (Commit 1c9acd5 introduced our use of that flag for this
target.)  Let's see how that MinGW-w64 bug progresses; if needed, we can have
"configure" check whether -Wl,--disable-auto-import works before using it.

Thanks,
nm
On Sun, Aug 17, 2014 at 07:55:03PM -0400, Noah Misch wrote:
> On Sat, May 24, 2014 at 08:51:45PM +0200, Andres Freund wrote:
> > On 2014-05-24 14:21:32 -0400, Tom Lane wrote:
> > > Andres Freund <andres@2ndquadrant.com> writes:
> > > > On 2014-05-24 12:35:08 -0400, Tom Lane wrote:
> > > >> If it's not getting through configure, the only plausible explanation
> > > >> seems to be that something in autoconf 2.69 broke it.
> > >
> > > > It could also be the linking changes made while trying to make missing
> > > > PGDLLIMPORTs more visible.
> > >
> > > None of those changes touched the configure script, though.
> >
> > Right.
> >
> > Regina, can you post config.log from 9.3 and 9.4?
> >
> > There's a couple of bugreports referencing _set_invalid_parameter_handle
> > and mingw. With confusingly different explanations...
>
> I, too, ran into this problem.  It boils down to recent MinGW-w64 not
> tolerating -Wl,--disable-auto-import:
> https://sourceforge.net/p/mingw-w64/bugs/415

Jonathan Yong quickly committed a fix for that bug, and some of the latest
MinGW-w64 binary distributions (mingw64-x86_64-runtime 3.2.0-1 from Cygwin;
x86_64-4.9.1-release-posix-seh-rt_v3-rev1 from Mingw-builds) include it.

> For now, I work around this locally by removing -Wl,--disable-auto-import from
> src/template/win32.  (Commit 1c9acd5 introduced our use of that flag for this
> target.)  Let's see how that MinGW-w64 bug progresses; if needed, we can have
> "configure" check whether -Wl,--disable-auto-import works before using it.

I lean against doing that.