On Sun, Feb 4, 2018 at 1:01 PM, Gert Doering <g...@greenie.muc.de> wrote:
> Hi,
> On Sun, Feb 04, 2018 at 11:50:03AM +0100, Gert Doering wrote:
>> I've taken the liberty to change the commit message and mention that it's
>> "v3" here :-)
>> commit 849006bf17bba524e6f3344598adcbe41bedf450 (master)
>> commit 61a72ecd59a57a50d0757b56b16f4ed3ce700f3f (release/2.4)
>> Author: Arne Schwabe
>> Date:   Wed Jan 31 10:41:02 2018 +0100
>>      Treat dhcp-option DNS6 and DNS identical
> This is... interesting.  The change is minor, but seems to have pushed the
> endless if/else if/else construction in options.c over an invisible cliff,
> and some buildbots (FreeBSD 7.4, Debian 8.5) now *sometimes* bomb with
> "signal 11" when gcc is compiling options.c ...
>   gcc -DHAVE_CONFIG_H -I. -I../.. -I../../include  -I../../include  
> -I../../src/compat           
> -DPLUGIN_LIBDIR=\"/usr/local/lib/openvpn/plugins\"  -g -O2 -std=c99 -MT 
> options.o -MD -MP -MF .deps/options.Tpo -c -o options.o options.c
>   gcc: Internal error: Killed: 9 (program cc1)
>   Please submit a full bug report.
>   See <URL:http://gcc.gnu.org/bugs.html> for instructions.

Interesting indeed. In fact, 2 years ago, we had a report of msvc
failing (literally stack overflow !) on the long if-else chain in

quoting from an old thread:

>On Thu, Dec 10, 2015 at 9:47 AM, Selva Nair <selva.n...@gmail.com> wrote:
>>On Wed, Dec 9, 2015 at 5:05 PM, Gisle Vanem <gva...@yahoo.no> wrote:
>>>While compiling src/openvpn/options.c with MSVC 2015, I got this
>>>  src/openvpn/options.c(5944): fatal error C1026: parser stack overflow, 
>>> program too complex
>>>As a quick fix you can locally edit options.c to split the large if ..endif 
>>>block with 300 or so  else-if's into two groups with a couple of goto's. 
>>>I've no idea how msvc parses code, so this may or may not work.
>>>I've also seen such error in GeoIP-lib due to all the 'if..else if' 
>>>Can this be written using some kind of a table-lookup code instead?
>>The option parser code using if-else is very standard and the logic easy to 
>>follow, so I doubt there is a strong reason for re-writing it.

At that time I had done some tests. from my notes:

"gcc with 100,000 if else
compiles using
~250 MB memory and ~8 minutes on 1 core of an 8 year old athlon.
So apparently there is no limit except for memory exhaustion."

I can't recall what version of gcc I had used. Its a bit surprising
that we now exhaust memory (even on a VM with only 512 MB memory).
Possibly newer gcc versions are approaching msvc efficiency in this


Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
Openvpn-devel mailing list

Reply via email to