From: | Andres Freund <andres(at)2ndquadrant(dot)com> |
---|---|
To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | Christian Kruse <christian(at)2ndQuadrant(dot)com>, "pgsql-hackers(at)postgresql(dot)org" <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: Suspicion of a compiler bug in clang: using ternary operator in ereport() |
Date: | 2014-01-28 21:22:42 |
Message-ID: | 20140128212242.GF18333@awork2.anarazel.de |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On 2014-01-28 16:19:11 -0500, Tom Lane wrote:
> Christian Kruse <christian(at)2ndQuadrant(dot)com> writes:
> > According to http://llvm.org/bugs/show_bug.cgi?id=18644#c5 this is not
> > a compiler bug but a difference between gcc and clang. Clang seems to
> > use a left-to-right order of evaluation while gcc uses a right-to-left
> > order of evaluation. So if errmsg changes errno this would lead to
> > errno == ENOMEM evaluated to false.
>
> Oh! Yeah, that is our own bug then.
Pretty nasty too. Surprising that it didn't cause more issues. It's not
like it would only be capable to cause problems because of the
evaluation order...
> > Should we work on this issue?
>
> Absolutely. Probably best to save errno into a local just before the
> ereport.
I think just resetting to edata->saved_errno is better and sufficient?
Greetings,
Andres Freund
--
Andres Freund http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services
From | Date | Subject | |
---|---|---|---|
Next Message | Robert Haas | 2014-01-28 21:28:24 | Re: WIP patch (v2) for updatable security barrier views |
Previous Message | Jason Petersen | 2014-01-28 21:20:38 | Re: Suspicion of a compiler bug in clang: using ternary operator in ereport() |