Skip to content
New issue

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

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

Already on GitHub? # to your account

Unaligned access in dap4 #1854

Closed
pterjan opened this issue Oct 1, 2020 · 17 comments · Fixed by #1871
Closed

Unaligned access in dap4 #1854

pterjan opened this issue Oct 1, 2020 · 17 comments · Fixed by #1871
Assignees
Milestone

Comments

@pterjan
Copy link

pterjan commented Oct 1, 2020

After investigating some test failures in netcdf-c on arm due to a Bus Error in ncdump I found GETCOUNTER reads an unsigned long long which may not be properly aligned.

#0  0xf7f2e244 in delimitSeq (offsetp=<synthetic pointer>, vlentype=0xf7f2e2b8 <delimitSeqArray+208>, compiler=<optimized out>) at d4fix.c:388
        ret = 0
        i = <optimized out>
        offset = 0xf6e57016
        recordcount = <optimized out>
        recordtype = <optimized out>
        ret = <optimized out>
        i = <optimized out>
        offset = <optimized out>
        recordcount = <optimized out>
        recordtype = <optimized out>
        __PRETTY_FUNCTION__ = "delimitSeq"
        u = <optimized out>
        src = <optimized out>
#1  delimitSeqArray (compiler=0x7c798, varortype=<optimized out>, offsetp=0x0) at d4fix.c:368
        offset = 0xf6e57016
        i = 2220021216314720
        dimproduct = <optimized out>
        type = <optimized out>
#2  0xf7f2e940 in NCD4_delimit (compiler=compiler@entry=0x7c798, topvar=0x7dd50, offsetp=offsetp@entry=0xfffedf24) at d4fix.c:208
        ret = 0
        offset = <optimized out>
        __PRETTY_FUNCTION__ = "NCD4_delimit"
#3  0xf7f2f02c in NCD4_processdata (meta=0x7c798) at d4data.c:75
        var = <optimized out>
        ret = 0
        i = 0
        toplevel = 0x958c0
        root = 0xf7f2f02c <NCD4_processdata+128>
        offset = 0xf6e57008
#4  0xf7f2f9c0 in NCD4_open (path=<optimized out>, mode=<optimized out>, basepe=basepe@entry=0, chunksizehintp=chunksizehintp@entry=0x0, mpidata=0x0, mpidata@entry=0xf7ec06e0 <nc_open+32>,
    dispatch=dispatch@entry=0xf7fbadc4 <NCD4_dispatch_base>, ncid=65536) at d4file.c:237
        ret = 0
        d4info = 0x64ad8
        value = <optimized out>
        meta = 0x7c798
        nc = 0x64ab8
        __PRETTY_FUNCTION__ = "NCD4_open"
#5  0xf7ec05f4 in NC_open (path0=path0@entry=0x32c08 "[log][dap4]file:///home/iurt/rpmbuild/BUILD/netcdf-c-4.7.3/dap4_test/daptestfiles/test_sequence_2.syn", omode=<optimized out>, basepe=basepe@entry=0,
    chunksizehintp=chunksizehintp@entry=0x0, useparallel=useparallel@entry=0, parameters=parameters@entry=0x0, ncidp=0xfffee118, ncidp@entry=0xfffee110) at dfile.c:2117
        stat = <optimized out>
        ncp = 0x64ab8
        dispatcher = 0xf7fbadc4 <NCD4_dispatch_base>
        inmemory = <optimized out>
        diskless = <optimized out>
        mmap = <optimized out>
        path = 0x64f30 "file:///home/iurt/rpmbuild/BUILD/netcdf-c-4.7.3/dap4_test/daptestfiles/test_sequence_2.syn#mode=dap4&log"
        model = {impl = 6, format = 0}
        newpath = 0x64f30 "file:///home/iurt/rpmbuild/BUILD/netcdf-c-4.7.3/dap4_test/daptestfiles/test_sequence_2.syn#mode=dap4&log"

The crash happens when using GETCOUNTER as the offset is not 8 bytes aligned.

The following patch allowed the tests to pass:

--- netcdf-c-4.7.4/libdap4/ncd4.h	2020-03-27 15:33:36.000000000 +0000
+++ netcdf-c-4.7.4/libdap4/ncd4.h	2020-09-30 22:34:57.733422171 +0000
@@ -185,9 +185,15 @@
 #define DECR(offset,size) ((void*)(((char*)(offset))-(size)))
 #define DELTA(p1,p2) ((ptrdiff_t)(((char*)(p1))-((char*)(p2))))
 
+inline d4size_t __read_counter(void *p) {
+    COUNTERTYPE result;
+    memcpy(&result, p, sizeof(COUNTERTYPE));
+    return (d4size_t)result;
+}
+
 #undef GETCOUNTER
 #undef SKIPCOUNTER
-#define GETCOUNTER(p) ((d4size_t)*((COUNTERTYPE*)(p)))
+#define GETCOUNTER(p) __read_counter(p)
 #define SKIPCOUNTER(p) {p=INCR(p,COUNTERSIZE);}
 
 #undef PUSH

Given that all calls to GETCOUNTER seem to be followed by SKIPCOUNTER they may also be combined into a single function rather than two macros.

I also noticed many, but not all, calls to GETCOUNTER in d4fix.c then call if(compiler->swap) swapinline64(...); on the result, so there may also be some endianness bugs.

@WardF
Copy link
Member

WardF commented Oct 1, 2020

Thank you for reporting this. Out of curiosity, which ARM platform are you using?

@WardF WardF added this to the 4.8.0 milestone Oct 1, 2020
@WardF WardF self-assigned this Oct 1, 2020
@pterjan
Copy link
Author

pterjan commented Oct 1, 2020

I am building it for armv7hl on Mageia, but we now do so on our aarch64 machines in which case Linux kernel does not recover unaligned accesses which is why I get Bus Error (If I was was building on an armv7 kernel it would catch the unaligned read and silently fix it https://www.kernel.org/doc/html/latest/arm/mem_alignment.html).

@DennisHeimbigner
Copy link
Collaborator

The problem in this case is that the binary data in the DAP4 response is not
necessarily aligned. It packs down to the byte level. Hence you can see attempts
to read unaligned data in all sorts of places in the DAP4 response. You just
happened to find this one. Fixing this is going to require a major change to the
DAP4 code to ensure that all reads from the response stream are copied into
an aligned location by memcpy or equivalent before decoding the value.

@pterjan
Copy link
Author

pterjan commented Oct 1, 2020

I had a look around and didn't notice problems, it doesn't mean there is none but overall this seems well handled

In libdap4/d4data.c the data gets read with memcpy in all cases I saw

@DennisHeimbigner
Copy link
Collaborator

The dap4 algorithm is multipass. To oversimplify, it "compiles" pointers into the
response data packet in one pass. Then when extracting the data, it pulls it out.
It is the initial passe(s) that can read unaligned data.
In any case, I must confess surprise that there still exist machines that cannot
handle unaligned reads. Is this some kind of old hardware?

@pterjan
Copy link
Author

pterjan commented Oct 2, 2020

Arm up to v7 requires aligned access, at minimum for 64 bis ones (LDRD which is the case in this bug) https://developer.arm.com/documentation/dui0473/m/using-the-assembler/address-alignment

Armv8 which is implemented by 64 bits arm cpus allows unaligned accesses https://developer.arm.com/architectures/learn-the-architecture/armv8-a-memory-model/alignment-and-endianness but is not yet that common

@DennisHeimbigner
Copy link
Collaborator

Well we can fix the DAP4 code contingent on running on Arm V7 or earlier.
Is there a way to detect this case?

@pterjan
Copy link
Author

pterjan commented Oct 2, 2020

-Wcast-align=strict would give warnings even on other architectures in case of casting to a type requiring a larger alignment but there may be a lot of false positives depending on the code (if some aligned pointer get stored in a void*/char* and then casted again).

@DennisHeimbigner
Copy link
Collaborator

Ideally, I would have a compile time check so I could make the generated
code be contingent on alignment support. Since this probably impossible,
I guess the only solution is to add yet another ./configure/cmake option (ugh!).
Ward- do you have any thoughts on this?

@DennisHeimbigner
Copy link
Collaborator

Since this problem is restricted to 8-byte read -- or is write also a problem? --
An inline 8-byte move byte-by-byte might be faster than memcpy.

@DennisHeimbigner
Copy link
Collaborator

In looking around, I found these c-preprocessor flags:
defined(ARM_ARCH_7A)
defined(ARM_ARCH_7S)

So we can check for it, apparently. Which flag is appropriate or do I need
to check both?

@DennisHeimbigner
Copy link
Collaborator

Ok, I am attaching a zip file containing a modified version of
libdap4/ncd4.h. Please try it and see if it fixes your problem.
ncd4.zip

@DennisHeimbigner
Copy link
Collaborator

Have you had a chance to try my fix?

DennisHeimbigner added a commit to DennisHeimbigner/netcdf-c that referenced this issue Oct 17, 2020
re: Unidata#1854

Apparently some older Arm processors will fail if asked to
read a 64 bit value from memory if not on an 8 byte boundary.
The primary problem is in reading counter values in the dap4 stream.
So if the Arm processor is detected, then memcpy the value
to an aligned 64 bit value before using it.
@DennisHeimbigner
Copy link
Collaborator

Fixed by #1871

@pterjan
Copy link
Author

pterjan commented Oct 19, 2020

Sorry about the long delay. I haven't been able to test it properly yet as I got a different test failure when running the tests (which seems to be because hdf5 got updated to 1.10.7 on my distro 10 days ago causing an HDF Error in tst_nccopy4) and I didn't have much time to work on it.

However I manually tested the dap4 tests and the problem is still there. It seems here __ARM_ARCH_7A__ is defined but not __ARM_ARCH_7__

$ gcc -dM -E - < /dev/null | grep ARM_ARCH
#define __ARM_ARCH_ISA_ARM 1
#define __ARM_ARCH_PROFILE 65
#define __ARM_ARCH_ISA_THUMB 2
#define __ARM_ARCH 7
#define __ARM_ARCH_7A__ 1

The right condition may be something like defined(__arm__) && __ARM_ARCH < 8

DennisHeimbigner added a commit to DennisHeimbigner/netcdf-c that referenced this issue Oct 19, 2020
@DennisHeimbigner
Copy link
Collaborator

Ok, I modified the PR to try your proposed condition.

@pterjan
Copy link
Author

pterjan commented Oct 19, 2020

I am now getting an infinite loop somewhere and one test never finishes :(

Trying some change I noticed a warning: ncd4.h:192:24: warning: passing argument 1 of 'memcpy' makes pointer from integer without a cast [-Wint-conversion] which gave the reason, the argument of memcpy should be &v instead of v!

With this it now passes:

{COUNTERTYPE v; memcpy(&v,p,sizeof(v)); return (d4size_t)v;}

clrpackages pushed a commit to clearlinux-pkgs/netcdf that referenced this issue Jun 24, 2021
Antonio Valentino (1):
      Fix HDF5_ZLIB check

Bart Oldeman (1):
      Add HAVE_MPI_INFO_F2C to cmake config.h input file

Brian McKenna (1):
      parse projection functions

Dan Ibanez (3):
      Ensure MPI header found without wrapper
      more missing includes for MPI without wrapper
      HAVE_MPI_INFO_F2C was missing from CMake config.h

Dave Allured (1):
      Update RELEASE_NOTES.md

Dave-Allured (1):
      Fix time zone parser bug, github #1417

Dennis Heimbigner (134):
      Fix reclamation of the ->format_XXX_info fields
      force github checks restart
      Fix missing forward declarations
      Update RELEASE_NOTES.md
      Use proper CURLOPT values for VERIFYHOST and VERIFYPEER
      Support no-op dispatch functions
      Update release notes
      ckp
      updae
      updae
      updae
      Allow redefinition of variable filters
      uintptr for VS
      Fix ncgen handling of big data sections
      make ncdumpchunks conditional
      handle missing H5Dread_chunks
      ocdebug
      restore
      Expanded RELEASE_NOTES description
      Fix undefined references when using Visual Studio
      Make plugin noop1 be distcleaned
      Condition XGetOpt on MSC_VER not WIN32
      Fix some protocol differences between netcdf-c and the Hyrax server.
      Fix windows \r problem
      Add more dap4 tests for CMake
      Make CMake tests work for dap4
      Fix some memleaks in libdap4
      Allow use of type keywords as identifier in formats that do not support that type.
      Fix nccopy chunking to use default chunking
      Update release notes
      This PR adds EXPERIMENTAL support for accessing data in the
      Fix LGTM detected errors
      Fix LGTM errors
      Fix LGTM errors and S3 mis-configuration
      Semi-disable S3 tests.
      turn on some tests
      Fixed documentation
      externl'ize
      missinginclude
      Fix nczarr-experimental to better support CMake and find AWS libraries
      Conditional malloc.h on Windows
      Move closer to getting S3 support work with CMake under Visual
      Update parser/lexer build process for ncgen3
      Malformed CMake
      CMake fixes
      Fix items in netcdf_meta.h
      Define isnan and isinf for OSX
      Disable all USE_PARALLEL code in libnczarr
      cleanup some LOOK code
      The big change for this commit is complete the
      Fix nccopy -c dim/x to actually use the dim/x value.
      Fix URL encoding in DAP2 url processing
      Fix error where not converting fill data
      force check retry
      Fix issue 1839 -- missing symbols under OSX
      Use the built-in HDF5 byte-range reader, if available.
      Mostly revert the filter code to reduce its complexity of use.
      Slight mod to the incompatibilities section
      Revise filters.md to clarify
      Fix missing casts of var->filters
      Cleanup byterange test URLS
      Prepare for the path management code
      Improve the building of NCZARR S3 support in CMake and Autoconf
      Update Release Notes
      Support aligned access for selected Arm processors.
      Revise the arm test per Unidata/netcdf-c#1854 (comment)
      Suppress notused warnings
      Yet another fix for DAP2 double URL encoding.
      Add encode= tests
      Remove trailing comma from _NCProperties attribute value.
      Provide a Number of fixes/improvements to NCZarr
      Update RELEASENOTES
      Force re-check
      Fix a number of CMake problems
      missing ifdef
      Create c-cpp.yml
      actions1
      remove bm_chunks3
      remove nczarr_test/bm*
      revert
      Remove some file references in nczarr_test/Makefile.am
      remove actions file
      remove actions file
      Enforce that !ENABLE_BYTERANGE => !ENABLE_HDF5_ROS3
      Fix merge error from PR https://github.com/Unidata/netcdf-c/pull/1892/files
      Fix minor Makefile.am warning
      manual workflow
      update workflows
      rename
      automake-dmh.yml
      ignore.yml
      manual.yml
      ignore
      update file permission
      opendap2.oceanbrowser.net is temporarily unavailable
      remove worflows and fix ifdef
      unblock .dmh
      unblock dmh appveyor
      Make use of clock_gettime be conditional.
      Additional Fixes to NCZarr
      Update Release Notes
      Remove some potentially harmful duplicate code
      Fix some additional edges cases for mapping slices to chunks
      retry2
      debug
      update workflows
      update-workflows-again
      rebuild
      Add tests for filter order on read and write cases
      Fix CMake bug
      undebug workflow
      Enable selected DAP tests previously disabled.
      More NCZarr optimizations
      remove lgtm alert
      Make fillmismatch the default for DAP2 and DAP4
      fix tst_fillmismatch.sh
      fix test cases
      Improve operation of the DAP4 code and fix bugs
      turn off actions on push
      Forgot baselinehyrax in the dist
      Enable nczarr testing in github actions.
      disable run_chunkcases
      Add zip file support
      appveyor fix
      More fixes to the nccopy filter x chunking algorithm
      Unify definition of NC_DISPATCH_VERSION
      Fix duplicate BOOL definitions
      Update Release Notes
      FIx install of netcdf_dispatch.h
      Update RELEASE_NOTES
      Update RELEASE_NOTES
      Fix memory leak in nccopy.c
      Codify cross-platform file paths
      Update RELEASE_NOTES

Douglas Dirks (1):
      Ensure that the nav-tree extends to the full height of the content area. The footer must be enclosed in a div element with the id="nav-path" for this to work.

Edward Hartnett (97):
      now testing that nc_inq_var_deflate() works for all formats and returns 0 deflate and deflate_level
      updated release notes
      dealing with nc_inq_var_szip(), testing, and release notes
      documentation improvements
      documentation improvements
      documentation improvements
      now testing nc_inq_var_deflate/nc_inq_var_szip after enddef too
      cleanup
      checking nc_inq_var_chunking() with classic formats
      more testing after enddef
      whitespace cleanup of test
      added demonstration of nc_def_var_deflate() issue
      adding internal function, plus some documentation
      now properly setting HDF5 file cache for files created/opened sequentially on parallel IO builds
      updated RELEASE_NOTES
      whitespace cleanup
      updated RELEASE_NOTES
      fixed LDFLAFS in plugins Makefile.am, also fixed warning in tst_h_vars.c
      changed to only MOSTLY dead
      changed back to totally dead
      readded NOTNC3 varm functions to dispatch
      fixed the setting of AM_LDFLAGS
      added tst_gfs_data1
      starting to modify test
      starting to modify test
      starting to develop test
      more test development
      more test development
      further test development
      further test development
      more test development
      further test development
      more test development
      more test development
      more test development
      now reopening file and checking dim and var metadata
      now checking pfull data
      now checking more data
      now checking more data
      now checking more data
      fixed warnings in tst_create_files.c
      fixed warnings in bm_file.c
      further benchmark development, moved to benchmark dir
      better handling for multiple data vars
      further test development
      more benchmark development for tst_gfs_data_1.c
      fixed Makefile to refrain from building nc_perf/tst_gfs_data_1 for non-parallel builds
      move data decomposition calculations to decomp_4D() function
      further development
      now create metadata in a function with many parameters
      added attributes
      added attributes
      more benchmark development
      starting to add decomp for 36 tasks
      starting to add test for unlimited dim
      fixed problem setting szip on var with unlimited dim and added test
      updated RELEASE_NOTES
      added some ncdump tests for szip when it is present
      added test cdl files to cleanfiles
      cleanup of 2d decomposition
      working on 2D decomposition code
      code cleanup
      cleaned up lat/lon code
      cleaned up grid code
      dealing with coord var cleanup
      added new metadata writing function
      starting to check metadata
      more checking metadata
      now checking some coord vars
      more checking of metadata and coord vars
      starting to use get_vara functions to check metadata
      further checking of metadata
      further checking of metadata
      now checking lat/lon coord values
      changed output to be more readable
      updated RELEASE_NOTES
      updated RELEASE_NOTES
      starting to test repeated redefs
      now dont return error on second redef call for netcdf/HDF5 files
      updated release notes
      fixed warning in hdf5filter.c
      added new test tst_h_par_compress.c
      fixed warning in tst_parallel5.c
      changed tst_h_par_compress to use H5Dcreate2() just like code in nc4hdf5.c does
      adding property list for dataset creation to tst_h_par_compress.c
      adding other settings of dataset property list to match what is in nc4hdf5.c
      turned off szip testing while HDF5 issue is resolved
      took out timing code
      added tst_h_par_compress to CMake build
      updated RELEASE_NOTES
      getting tst_gfs_data_1 ready to merge
      fixed dispatch version number in CMakeLists.txt
      fixed tst_h_par_compress.c
      adding test for attributes
      fixed up test
      fixed comment
      fixed comment

Greg Sjaardema (14):
      Proof-of-Concept:  Avoid N^2 behavior in NC4_inq_dim
      Remove line that was missed in original patch
      Different method of setting Parallel Filters variables
      Remove duplicate references to error4.c
      Fix CMake generation of netcdf_meta.h
      Avoid potential integer overrun
      Remove test since file was moved to nc_perf
      Protect use of `H5Dread_chunk` function
      Fix setting of use_szlib
      Fix undefined struct member access
      Fix CMake build so netcdf_meta.h has correct form
      Fix detection and use of SZIP library
      Fix so setting of NC_FORMATX_NC3 in parallel is kept
      Fix if statement to apply to fflush

John Correira (1):
      Fix typo postinstall.

Jorge López Fueyo (1):
      Fix build on Windows with clang-cl

LProx2020 (6):
      Update FAQ.md
      Updated README.md Links
      Copyediting Updates #1
      Copyediting Updates #2
      Update software.html
      Email Removal

Magnus Ulimoen (4):
      Generate m4 files out of tree
      Configure netcdf_meta.h directly to BINARY_DIR
      Move generated file to BINARY_DIR
      H5Znoop1.c copied to BINARY_DIR instead of SOURCE_DIR

Mark Hansen (1):
      Correcting dead link to installation

Orion Poplawski (1):
      Fix wrong header include in testing HDF5 for zlib

Peter Hill (1):
      Fix wrong header include in testing HDF5 for zlib

Rostislav Kouznetsov (1):
      Fix for :60 seconds in ncdump

Ryan May (2):
      Fix for cURL >7.69
      Add fix to release notes.

Scot Breitenfeld (14):
      Updated to use H5O_info2_t for HDF5 1.12 and the use of H5Oget_info3 instead of H5Gget_objinfo
      fixed missing declaration
      Replaced deprecated (in 1.8.0) H5Aopen_name with H5Aopen_by_name
      fixed H5O_info_t incompatiblity with H5Oget_info_by_idx3
      Allow for the HDF5 file format to be compatible with features greater than HDF5 1.8, which
      reverted past fix
      Allow for the HDF5 file format to be compatible with features greater
      fixed #def
      fixed syntax
      removed the use of H5_VERSION_LT
      Updated the superblock value for reference ncdumps
      reverted changes superblock values
      updated ncdump scripts to handle different versions of superblock values
      removed the check for H5Pset_libver_bounds (HAVE_H5PSET_LIBVER_BOUNDS) since API

Sean Arms (6):
      Test ncdump time unit name case-insensitivity
      Treat time units as case-insensitive in ncdump
      Define strncasecmp as _strnicmp on Windows
      Update links to netCDF-java documentation.
      Update links
      Update d4ts.war and dts.war build instructions

Shreyas Ananthan (1):
      Fix parallel NetCDF checks in configure.ac for spectrum MPI

Tim Gates (1):
      docs: fix simple typo, maximim -> maximum

Ward Fisher (65):
      Tweaked docs to fix dead references introduced as part of separating out NUG from netCDF-C.
      Added hard failure to script, modified cmake default.
      Corrected an issue with parallel filter test logic in cmake-based builds.
      Corrected parallel (mpi) testing on cmake builds.
      Correcting a formatting error for scalars when dumping with ncdump -f
      Updated release notes.
      Added a stand-alone user level doxygen configuration file.  It must be used from the top-level netcdf-c directory, e.g. doxygen docs/Doxyfile.user.
      Added a check for m4 and throw an error if m4 isn't on the path and the generated file isn't present (as it would be in a point release). In support of Unidata/netcdf-c#1739
      More m4 fenceposting.
      Revert "Fix nczarr-experimental: improve build support, disengage hdf5 vs netcdf4 flags, and find AWS libraries"
      Revert "Revert "Fix nczarr-experimental: improve build support, disengage hdf5 vs netcdf4 flags, and find AWS libraries""
      Removed unneeded code on OSX.
      Modify isnan() operation
      Added nc4print utility to cmake build infrastructure.
      Ensured dependencies are linked against properly.
      Working on autoconf-based build on OSX
      Fixe szlib write status message for cmake-based builds.
      Fix logic for determining if filter tests should be run when shared builds are turned off via autotools.  See Unidata/netcdf-c#1829 for more information.
      Corrected an accidental change.
      Removed NUG files, added a README.md file directing people to the correct location.
      Updated RELEASE_NOTES.md
      Updated release notes to refer to Unidata/netcdf-c#1866
      Updated release notes with reference to Unidata/netcdf-c#1871
      Removed duplicated release note in support of Unidata/netcdf-c#1870
      Remove --no-undefined which is causing problems when compiling with -fsanitize=address -fno-omit-frame-pointer in support of Unidata/netcdf-c#1878
      Modified plugins/Makefile.am to add -no-undefined as required on cygwin.
      Removed travis file in preparation for migration away from travis-ci and towards GitHub Actions.
      Restoring .travis.yml file for convienence until Github Actions are integrated, but not restoring the requirement that they pass (due to throttled Travis runs) for PR's to be merged.
      Adding github actions to netcdf-c for CI purposes.
      Address link issue on github actions platform.
      Correct previous 'fix' that wasn't.
      Explicitly link rt library for github actions.
      Github Action debugging.
      Temporarily reducing test matrix.
      Clean up, bring over a new action script. This one uses apt and cached builds instead of conda.
      Temporarily disabled encoding test under cmake
      Cleaned up orphaned github action files, modified GA to run on PR instead of push.
      Removed dangling conflict info.
      tweak m4 detection.
      Fix logic error.
      More tweaking.
      Added an apt update stanza to the github action script.
      Added more updates
      Update number of threads used in doxygen developer config file.
      Correct bash test failure on Windows in MSYS2 bash shell with Visual Studio-based build, in support of Unidata/netcdf-c#1940
      More modification in support of #1940
      Fix tst_filter.sh such that it returns an error immediately on failure.
      Restored cleanup stanza in tst_filter.sh
      Address a C99 forward-declaration issue.
      Updated SO version in preparation for public release.
      Updated SO version in cmakelists.txt in preparation for the 4.8.0 release.
      Bumped version numbers to next development version.
      Updated release version string.
      Preparing to bundle in portable autoconf-generated files.
      Adding in portable autconf-generated files.
      Added additional generated files for deployment.
      Added check for H5Literate in support of Unidata/netcdf-c#1965
      Amend check for H5Literate to work with 1.10.x
      Added check for H5Literate symbol (hdf5 1.8.x, 1.10.x) or macro (1.12.x)) in support of Unidata/netcdf-c#1965
      Updated expected release date.
      Added 1.0.1 to test matrix in support of Unidata/netcdf-c#1931 (comment)
      Corrected release date in preparation for today's release.
      Updated doxyfile to include libnczarr/zarr.c, also removed references to files that have been removed.
      Corrected typo preventing success when running make dist or make distcheck
      Update refactored and regenerated files.

Wojciech Śmigaj (1):
      Fix name of the HDF5_C_LIBRARY_hdf5 CMake variable

bombipappoo (4):
      Fix incorrect keywords.
      Correct destination buffer size to strlcat
      Convert filename from ANSI to UTF-8 before calling HDF5.
      Fix format buffer size

neok-m4700 (1):
      Fix build bug in debug mode
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants