Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

make check fails for parallel classic build of 4.4.1.1 (but make all check works) #339

Closed
edhartnett opened this issue Dec 19, 2016 · 12 comments
Assignees
Milestone

Comments

@edhartnett
Copy link
Contributor

Trying to build 4.4.1.1 (what is with that version number BTW? What's wrong with 4.1.2?)

My configure:

CC=mpicc ./configure --enable-parallel-tests --prefix=/usr/local/netcdf-classic-4.4.1.1 --disable-netcdf4

When I do a make check the ncgen tests fail. I went into the ncgen directory and ran run_tests.sh:

[ed@localhost ncgen]$ ./run_tests.sh
*** Testing ncgen.
*** creating classic file c0.nc from c0.cdl...
*** generating c0.nc ***
./run_tests.sh: line 22: ../ncdump/ncdump: No such file or directory
*** comparing c0.nc against /home/ed/Downloads/netcdf-4.4.1.1/ncgen/c0.cdl ***
1,388d0
< netcdf c0 {
< dimensions:
< Dr = UNLIMITED ; // (2 currently)
< D1 = 1 ;
< D2 = 2 ;
< D3 = 3 ;
< dim-name-dashes = 4 ;
< dim.name.dots = 5 ;
< dim+name+plusses = 6 ;
< dim@name@ats = 7;
< variables:
< char c ;
< c:att-name-dashes = 4 ;
< c:att.name.dots = 5 ;
< c:att+name+plusses = 6 ;
< c:att@name@ats = 7 ;
< byte b ;
< b:c = "" ;
< short s ;
< s:b = 0b, 127b, -128b, -1b ;
< s:s = -32768s, 0s, 32767s ;
< int i ;
< i:i = -2147483647, 0, 2147483647 ;
< i:f = -1.e+36f, 0.f, 1.e+36f ;
< i:d = -1.e+308, 0., 1.e+308 ;
< float f ;
< f:c = "x" ;
< double d ;
< d:c = "abcd\tZ$&" ;
< char cr(Dr) ;
< byte br(Dr) ;
< short sr(Dr) ;
< int ir(Dr) ;
< float fr(Dr) ;
< double dr(Dr) ;
< char c1(D1) ;
< byte b1(D1) ;
< short s1(D1) ;
< int i1(D1) ;
< float f1(D1) ;
< double d1(D1) ;
< char c2(D2) ;
< byte b2(D2) ;
< short s2(D2) ;
< int i2(D2) ;
< float f2(D2) ;
< double d2(D2) ;
< char c3(D3) ;
< byte b3(D3) ;
< short s3(D3) ;
< int i3(D3) ;
< float f3(D3) ;
< double d3(D3) ;
< char cr1(Dr, D1) ;
< byte br2(Dr, D2) ;
< short sr3(Dr, D3) ;
< float f11(D1, D1) ;
< double d12(D1, D2) ;
< char c13(D1, D3) ;
< short s21(D2, D1) ;
< int i22(D2, D2) ;
< float f23(D2, D3) ;
< char c31(D3, D1) ;
< byte b32(D3, D2) ;
< short s33(D3, D3) ;
< short sr11(Dr, D1, D1) ;
< int ir12(Dr, D1, D2) ;
< float fr13(Dr, D1, D3) ;
< char cr21(Dr, D2, D1) ;
< byte br22(Dr, D2, D2) ;
< short sr23(Dr, D2, D3) ;
< float fr31(Dr, D3, D1) ;
< double dr32(Dr, D3, D2) ;
< char cr33(Dr, D3, D3) ;
< char c111(D1, D1, D1) ;
< byte b112(D1, D1, D2) ;
< short s113(D1, D1, D3) ;
< float f121(D1, D2, D1) ;
< double d122(D1, D2, D2) ;
< char c123(D1, D2, D3) ;
< short s131(D1, D3, D1) ;
< int i132(D1, D3, D2) ;
< float f133(D1, D3, D3) ;
< float f211(D2, D1, D1) ;
< double d212(D2, D1, D2) ;
< char c213(D2, D1, D3) ;
< short s221(D2, D2, D1) ;
< int i222(D2, D2, D2) ;
< float f223(D2, D2, D3) ;
< char c231(D2, D3, D1) ;
< byte b232(D2, D3, D2) ;
< short s233(D2, D3, D3) ;
< short s311(D3, D1, D1) ;
< int i312(D3, D1, D2) ;
< float f313(D3, D1, D3) ;
< double var-name-dashes ;
< double var.name.dots ;
< double var+name+plusses ;
< double var@name@ats ;
<
< // global attributes:
< :Gc = "" ;
< :Gb = -128b, 127b ;
< :Gs = -32768s, 0s, 32767s ;
< :Gi = -2147483647, 0, 2147483647 ;
< :Gf = -1.e+36f, 0.f, 1.e+36f ;
< :Gd = -1.e+308, 0., 1.e+308 ;
< :Gatt-name-dashes = -1 ;
< :Gatt.name.dots = -2 ;
< :Gatt+name+plusses = -3 ;
< :Gatt@name@ats = -4 ;
< data:
<
< c = "2" ;
<
< b = -2 ;
<
< s = -5 ;
<
< i = -20 ;
<
< f = -9 ;
<
< d = -10 ;
<
< cr = "ab" ;
<
< br = -128, 127 ;
<
< sr = -32768, 32767 ;
<
< ir = -2147483646, 2147483647 ;
<
< fr = -1e+36, 1e+36 ;
<
< dr = -1e+308, 1e+308 ;
<
< c1 = "" ;
<
< b1 = -128 ;
<
< s1 = -32768 ;
<
< i1 = -2147483646 ;
<
< f1 = -1e+36 ;
<
< d1 = -1e+308 ;
<
< c2 = "ab" ;
<
< b2 = -128, 127 ;
<
< s2 = -32768, 32767 ;
<
< i2 = -2147483646, 2147483647 ;
<
< f2 = -1e+36, 1e+36 ;
<
< d2 = -1e+308, 1e+308 ;
<
< c3 = "\001\177." ;
<
< b3 = -128, 127, -1 ;
<
< s3 = -32768, 0, 32767 ;
<
< i3 = -2147483646, 0, 2147483647 ;
<
< f3 = -1e+36, 0, 1e+36 ;
<
< d3 = -1e+308, 0, 1e+308 ;
<
< cr1 =
< "x",
< "y" ;
<
< br2 =
< -24, -26,
< -20, -22 ;
<
< sr3 =
< -375, -380, -385,
< -350, -355, -360 ;
<
< f11 =
< -2187 ;
<
< d12 =
< -3000, -3010 ;
<
< c13 =
< "\tb\177" ;
<
< s21 =
< -375,
< -350 ;
<
< i22 =
< -24000, -24020,
< -23600, -23620 ;
<
< f23 =
< -2187, -2196, -2205,
< -2106, -2115, -2124 ;
<
< c31 =
< "+",
< "-",
< " " ;
<
< b32 =
< -24, -26,
< -20, -22,
< -16, -18 ;
<
< s33 =
< -375, -380, -385,
< -350, -355, -360,
< -325, -330, -335 ;
<
< sr11 =
< 2500,
< 2375 ;
<
< ir12 =
< 640000, 639980,
< 632000, 631980 ;
<
< fr13 =
< 26244, 26235, 26226,
< 25515, 25506, 25497 ;
<
< cr21 =
< "@",
< "D",
< "H",
< "L" ;
<
< br22 =
< 64, 62,
< 68, 66,
< 56, 54,
< 60, 58 ;
<
< sr23 =
< 2500, 2495, 2490,
< 2525, 2520, 2515,
< 2375, 2370, 2365,
< 2400, 2395, 2390 ;
<
< fr31 =
< 26244,
< 26325,
< 26406,
< 25515,
< 25596,
< 25677 ;
<
< dr32 =
< 40000, 39990,
< 40100, 40090,
< 40200, 40190,
< 39000, 38990,
< 39100, 39090,
< 39200, 39190 ;
<
< cr33 =
< "1",
< "two",
< "3",
< "4",
< "5",
< "six" ;
<
< c111 =
< "@" ;
<
< b112 =
< 64, 62 ;
<
< s113 =
< 2500, 2495, 2490 ;
<
< f121 =
< 26244,
< 26325 ;
<
< d122 =
< 40000, 39990,
< 40100, 40090 ;
<
< c123 =
< "one",
< "2" ;
<
< s131 =
< 2500,
< 2525,
< 2550 ;
<
< i132 =
< 640000, 639980,
< 640400, 640380,
< 640800, 640780 ;
<
< f133 =
< 26244, 26235, 26226,
< 26325, 26316, 26307,
< 26406, 26397, 26388 ;
<
< f211 =
< 26244,
< 25515 ;
<
< d212 =
< 40000, 39990,
< 39000, 38990 ;
<
< c213 =
< "",
< "" ;
<
< s221 =
< 2500,
< 2525,
< 2375,
< 2400 ;
<
< i222 =
< 640000, 639980,
< 640400, 640380,
< 632000, 631980,
< 632400, 632380 ;
<
< f223 =
< 26244, 26235, 26226,
< 26325, 26316, 26307,
< 25515, 25506, 25497,
< 25596, 25587, 25578 ;
<
< c231 =
< "@",
< "D",
< "H",
< "H",
< "L",
< "P" ;
<
< b232 =
< 64, 62,
< 68, 66,
< 72, 70,
< 56, 54,
< 60, 58,
< 64, 62 ;
<
< s233 =
< 2500, 2495, 2490,
< 2525, 2520, 2515,
< 2550, 2545, 2540,
< 2375, 2370, 2365,
< 2400, 2395, 2390,
< 2425, 2420, 2415 ;
<
< s311 =
< 2500,
< 2375,
< 2250 ;
<
< i312 =
< 640000, 639980,
< 632000, 631980,
< 624000, 623980 ;
<
< f313 =
< 26244, 26235, 26226,
< 25515, 25506, 25497,
< 24786, 24777, 24768 ;
<
< var-name-dashes = -1 ;
<
< var.name.dots = -2 ;
<
< var+name+plusses = _ ;
<
< var@name@ats = _;
< }
[ed@localhost ncgen]$

I've attached the config.log.
config.log.txt

@WardF
Copy link
Member

WardF commented Dec 19, 2016

Hi Ed,

I went 4.4.1.1 instead of 4.4.2 because it was an bug-fix/maintenance release we had to get out in short order; 4.4.2 is still coming down the pike pretty quickly, hopefully, now that AGU is over :). Let me see if I can recreate the other issue and then figure out what the heck is going on. I presume it's correct when it says no such file ../ncdump/ncdump?

@edhartnett edhartnett changed the title make check fails for parallel classic build of 4.4.1.1 make check fails for parallel classic build of 4.4.1.1 (but make all check works) Dec 19, 2016
@edhartnett
Copy link
Contributor Author

OK, this is pretty simple. make check did not work, but make all check did. I should have tried that, but I am used to make check working. ;-)

@edhartnett
Copy link
Contributor Author

edhartnett commented Dec 19, 2016

I just checked out the netCDF C library from github and it also has this issue.

The funny thing is, I distinctly remember having this same bug when I re-did the netCDF autoconf, and added automake and libtool. But unfortunately, I don't remember how it was solved. You somehow have to indicate that ncdump depends on the ncgen executable.

Actually it is not enough to do it by directory order, IIRC, because then make -j check won't work.

You should be using make -j check in your CI servers. It is the most demanding form of the build, and therefore good for testing. And on modern multi-core systems, make -j check is a LOT faster than make check. So it would be great if that worked.

I know it worked at one time, but I don't know when it stopped working. ;-)

I think the answer is that you want to move ncgen/run_tests.sh into ncdump and run it there, since it depends on ncdump to exist. THe ncdump testing already depends on ncgen. THat is the directory where tests go which need both ncgen and ncdump to exist.

@DennisHeimbigner
Copy link
Collaborator

I formally propose we create a new directory: utilitiestests
and move all the ncgen3, ncgen, and ncdump tests into that directory.
Then the dependencies will all be confined to that directory.

@WardF
Copy link
Member

WardF commented Dec 19, 2016

Yeah the issue can be solved as Dennis suggests, although I'm going to hold off a bit just because there will be some overhead in modifying some of the test scripts, which always breaks things and somehow I manage to miss some regardless of how well I check :).

The problem I encountered early on in my time here with make -j check is that some individual tests rely on each other, and I was unclear how to ensure the order at an individual test level. I can look into that again I suppose :)

@edhartnett
Copy link
Contributor Author

I agree with Denis, that sounds very sensible.

I believe that should be the only dependency in the tests.

@WardF
Copy link
Member

WardF commented Dec 19, 2016

It should be, perhaps, but currently it's not; some tests assume that other tests have already completed running, and expect to find "output from previous test" to use as input. I'll have to dig through for the specifics, but I encountered this in multiple places when wiring tests in to cmake; e.g., the order in which tests were run mattered.

@edhartnett
Copy link
Contributor Author

Well I just remembered that the examples have to be run in order. One way to handle that is to make a bash script that runs the examples in order, and then have the makefile run that. I seem to recall there is also a way to turn off parallel builds in a subdirectory.

@WardF
Copy link
Member

WardF commented Dec 19, 2016 via email

@WardF
Copy link
Member

WardF commented May 24, 2017

This appears to be fixed, closing out in prep for the 4.5.0 release candidate.

@WardF WardF closed this as completed May 24, 2017
@WardF
Copy link
Member

WardF commented May 24, 2017

Actually this needs correcting still. Oops, shouldn't be a big fix.

@WardF WardF reopened this May 24, 2017
@WardF WardF added this to the 4.5 milestone May 24, 2017
@WardF WardF self-assigned this May 24, 2017
@WardF
Copy link
Member

WardF commented May 25, 2017

Moved the tests around so that make check will work even if make or make all had not been run first. Funny what you learn about alternative work flows with bugs like this; I had never considered running make check without first running make :)

@WardF WardF closed this as completed May 25, 2017
netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this issue May 16, 2018
Upstream changes:
## 4.6.1 - March 15, 2018

* [Bug Fix] Corrected an issue which could result in a dap4 failure. See [Github #888](Unidata/netcdf-c#888) for more information.
* [Bug Fix][Enhancement] Allow `nccopy` to control output filter suppresion.  See [Github #894](Unidata/netcdf-c#894) for more information.
* [Enhancement] Reverted some new behaviors that, while in line with the netCDF specification, broke existing workflows.  See [Github #843](Unidata/netcdf-c#843) for more information.
* [Bug Fix] Improved support for CRT builds with Visual Studio, improves zlib detection in hdf5 library. See [Github #853](Unidata/netcdf-c#853) for more information.
* [Enhancement][Internal] Moved HDF4 into a distinct dispatch layer. See [Github #849](Unidata/netcdf-c#849) for more information.

## 4.6.0 - January 24, 2018
* [Enhancement] Full support for using HDF5 dynamic filters, both for reading and writing. See the file docs/filters.md.
* [Enhancement] Added an option to enable strict null-byte padding for headers; this padding was specified in the spec but was not enforced.  Enabling this option will allow you to check your files, as it will return an E_NULLPAD error.  It is possible for these files to have been written by older versions of libnetcdf.  There is no effective problem caused by this lack of null padding, so enabling these options is informational only.  The options for `configure` and `cmake` are `--enable-strict-null-byte-header-padding` and `-DENABLE_STRICT_NULL_BYTE_HEADER_PADDING`, respectively.  See [Github #657](Unidata/netcdf-c#657) for more information.
* [Enhancement] Reverted behavior/handling of out-of-range attribute values to pre-4.5.0 default. See [Github #512](Unidata/netcdf-c#512) for more information.
* [Bug] Fixed error in tst_parallel2.c. See [Github #545](Unidata/netcdf-c#545) for more information.
* [Bug] Fixed handling of corrupt files + proper offset handling for hdf5 files. See [Github #552](Unidata/netcdf-c#552) for more information.
* [Bug] Corrected a memory overflow in `tst_h_dimscales`, see [Github #511](Unidata/netcdf-c#511), [Github #505](Unidata/netcdf-c#505), [Github #363](Unidata/netcdf-c#363) and [Github #244](Unidata/netcdf-c#244) for more information.

## 4.5.0 - October 20, 2017

* Corrected an issue which could potential result in a hang while using parallel file I/O. See [Github #449](Unidata/netcdf-c#449) for more information.
* Addressed an issue with `ncdump` not properly handling dates on a 366 day calendar. See [GitHub #359](Unidata/netcdf-c#359) for more information.

### 4.5.0-rc3 - September 29, 2017

* [Update] Due to ongoing issues, native CDF5 support has been disabled by **default**.  You can use the options mentioned below (`--enable-cdf5` or `-DENABLE_CDF5=TRUE` for `configure` or `cmake`, respectively).  Just be aware that for the time being, Reading/Writing CDF5 files on 32-bit platforms may result in unexpected behavior when using extremely large variables.  For 32-bit platforms it is best to continue using `NC_FORMAT_64BIT_OFFSET`.
* [Bug] Corrected an issue where older versions of curl might fail. See [GitHub #487](Unidata/netcdf-c#487) for more information.
* [Enhancement] Added options to enable/disable `CDF5` support at configure time for autotools and cmake-based builds.  The options are `--enable/disable-cdf5` and `ENABLE_CDF5`, respectively.  See [Github #484](Unidata/netcdf-c#484) for more information.
* [Bug Fix] Corrected an issue when subsetting a netcdf3 file via `nccopy -v/-V`. See [Github #425](Unidata/netcdf-c#425) and [Github #463](Unidata/netcdf-c#463) for more information.
* [Bug Fix] Corrected `--has-dap` and `--has-dap4` output for cmake-based builds. See [GitHub #473](Unidata/netcdf-c#473) for more information.
* [Bug Fix] Corrected an issue where `NC_64BIT_DATA` files were being read incorrectly by ncdump, despite the data having been written correctly.  See [GitHub #457](Unidata/netcdf-c#457) for more information.
* [Bug Fix] Corrected a potential stack buffer overflow.  See [GitHub #450](Unidata/netcdf-c#450) for more information.

### 4.5.0-rc2 - August 7, 2017

* [Bug Fix] Addressed an issue with how cmake was implementing large file support on 32-bit systems. See [GitHub #385](Unidata/netcdf-c#385) for more information.
* [Bug Fix] Addressed an issue where ncgen would not respect keyword case. See [GitHub #310](Unidata/netcdf-c#310) for more information.

### 4.5.0-rc1 - June 5, 2017

* [Enhancement] DAP4 is now included. Since dap2 is the default for urls, dap4 must be specified by
(1) using "dap4:" as the url protocol, or
(2) appending "#protocol=dap4" to the end of the url, or
(3) appending "#dap4" to the end of the url
Note that dap4 is enabled by default but remote-testing is
disbled until the testserver situation is resolved.
* [Enhancement] The remote testing server can now be specified with the `--with-testserver` option to ./configure.
* [Enhancement] Modified netCDF4 to use ASCII for NC_CHAR.  See [Github Pull request #316](Unidata/netcdf-c#316) for more information.
* [Bug Fix] Corrected an error with how dimsizes might be read. See [Github #410](Unidata/netcdf-c#410) for more information.
* [Bug Fix] Corrected an issue where 'make check' would fail if 'make' or 'make all' had not run first.  See [Github #339](Unidata/netcdf-c#339) for more information.
* [Bug Fix] Corrected an issue on Windows with Large file tests. See [Github #385](Unidata/netcdf-c#385]) for more information.
* [Bug Fix] Corrected an issue with diskless file access, see [Pull Request #400](Unidata/netcdf-c#400) and [Pull Request #403](Unidata/netcdf-c#403) for more information.
* [Upgrade] The bash based test scripts have been upgraded to use a common test_common.sh include file that isolates build specific information.
* [Upgrade] The bash based test scripts have been upgraded to use a common test_common.sh include file that isolates build specific information.
* [Refactor] the oc2 library is no longer independent of the main netcdf-c library. For example, it now uses ncuri, nclist, and ncbytes instead of its homegrown equivalents.
* [Bug Fix] `NC_EGLOBAL` is now properly returned when attempting to set a global `_FillValue` attribute. See [GitHub #388](Unidata/netcdf-c#388) and [GitHub #389](Unidata/netcdf-c#389) for more information.
* [Bug Fix] Corrected an issue where data loss would occur when `_FillValue` was mistakenly allowed to be redefined.  See [Github #390](Unidata/netcdf-c#390), [GitHub #387](Unidata/netcdf-c#387) for more information.
* [Upgrade][Bug] Corrected an issue regarding how "orphaned" DAS attributes were handled. See [GitHub #376](Unidata/netcdf-c#376) for more information.
* [Upgrade] Update utf8proc.[ch] to use the version now maintained by the Julia Language project (https://github.com/JuliaLang/utf8proc/blob/master/LICENSE.md).
* [Bug] Addressed conversion problem with Windows sscanf.  This primarily affected some OPeNDAP URLs on Windows.  See [GitHub #365](Unidata/netcdf-c#365) and [GitHub #366](Unidata/netcdf-c#366) for more information.
* [Enhancement] Added support for HDF5 collective metadata operations when available. Patch submitted by Greg Sjaardema, see [Pull request #335](Unidata/netcdf-c#335) for more information.
* [Bug] Addressed a potential type punning issue. See [GitHub #351](Unidata/netcdf-c#351) for more information.
* [Bug] Addressed an issue where netCDF wouldn't build on Windows systems using MSVC 2012. See [GitHub #304](Unidata/netcdf-c#304) for more information.
* [Bug] Fixed an issue related to potential type punning, see [GitHub #344](Unidata/netcdf-c#344) for more information.
* [Enhancement] Incorporated an enhancement provided by Greg Sjaardema, which may improve read/write times for some complex files.  Basically, linked lists were replaced in some locations where it was safe to use an array/table.  See [Pull request #328](Unidata/netcdf-c#328) for more information.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants