7.6.2
Pre-release
Pre-release
Note
This release is not recommended for the downstream package maintainers (because of libgc version-info incompatible change).
Changes
- Add assertion that no hb_n_marks underflow occurs
- Add minimal testing of GC_MALLOC_[ATOMIC_]WORDS and GC_CONS (gctest)
- Add minimal testing of GC_set_bit (gctest)
- Add more cases to huge_test to cover sizes close to word-type maximum
- Add testing of new[]/delete[] (test_cpp)
- Adjust AO_HAVE_x check to match AO_fetch_and_add primitive variant used
- Adjust code indentation of calloc_explicitly_typed
- Align local_mark_stack in help_marker explicitly
- Allow custom TRACE_ENTRIES value
- Allow gctest and thread_leak_test with zero NTHREADS
- Avoid data race in finalized_count (gctest)
- Code refactoring of divide-by-HBLKSIZE occurrences
- Code refactoring of huge_test
- Code refactoring of tests/subthread_create regarding AO add primitive
- Compile thread_local_alloc only if multi-threaded build (Makefile.am)
- Delete preprocessor output on make clean (Makefile.direct)
- Disable implicit multi-threaded mode for Win32 to avoid LOCK crash
- Do not disable parallel mark for WRAP_MARK_SOME
- Do not enable mprotect-based incremental mode if unmapping is on (gctest)
- Do not install documentation if configure --disable-docs (new option)
- Do not use tkill (Android)
- Document base and size of objects allocated by finalized_malloc
- Document configure 'syntax error' issue in README
- Eliminate 'address of local variable returned' static analyzer warning
- Eliminate 'array vs singleton' code defect in typed_test (gctest)
- Eliminate 'assigned value never used' CSA warning in min_bytes_allocd
- Eliminate 'boolean result used in bitwise op' cppcheck false warning
- Eliminate 'C-style pointer casting' cppcheck style warnings in test
- Eliminate 'checking if unsigned variable is <0' cppcheck style warning
- Eliminate 'class member var with name also defined in parent' warning
- Eliminate 'comparison is always false' static analyzer warning in finalize
- Eliminate 'Condition 0==datastart always false' cppcheck warning (dyn_load)
- Eliminate 'condition is always true' cppcheck style warning
- Eliminate 'constructor with 1 argument is not explicit' cppcheck warning
- Eliminate 'CORD_*printf is never used' cppcheck style warnings (cordtest)
- Eliminate 'dereference of null' CSA false warning in array_mark_proc
- Eliminate 'function result not used' code defect in GC_mark_local
- Eliminate 'GC_collecting is set but never used' code defect (Win32)
- Eliminate 'GC_record_fault is never used' cppcheck style warning
- Eliminate 'integer shift by a negative amount' code defect in finalize
- Eliminate 'label not used' cppcheck false warnings in GC_mark_X
- Eliminate 'memory leak' code defect for scratch-allocated memory
- Eliminate 'memory leak' code defect in remove_specific
- Eliminate 'non-null arg compared to null' warning in toggleref_add (GCC)
- Eliminate 'non-reentrant function strtok called' cppcheck warning (POSIX)
- Eliminate 'possible integer underflow' code defect (cord-de)
- Eliminate 'potential overflow' static analyzer warning in test
- Eliminate 'printf format specifies type void*' GCC pedantic warnings
- Eliminate 'scope of variable can be reduced' cppcheck warnings
- Eliminate 'suspicious pointer subtraction' cppcheck warning (gc_cpp)
- Eliminate 'this statement may fall through' GCC warnings
- Eliminate 'unnecessary comparison of static strings' cppcheck warning
- Eliminate 'unsafe vsprintf is deprecated' compiler warning
- Eliminate 'unused formal parameter' compiler warnings in C++ code (MS VC)
- Eliminate 'unused variable' compiler warning in remove_all_threads_but_me
- Eliminate 'use of vulnerable sprintf' code defect in de_win test (cord)
- Eliminate 'value exceeds maximum object size' GCC warning in huge_test
- Eliminate 'value of CLOCK_TYPE unknown' cppcheck info message
- Eliminate 'value of DATASTART2 unknown' cppcheck info messages
- Eliminate 'value of GC_PTHREAD_EXIT_ATTRIBUTE unknown' cppcheck messages
- Eliminate 'value of GC_RETURN_ADDR_PARENT unknown' cppcheck info messages
- Eliminate 'value of NEED_FIXUP_POINTER unknown' cppcheck info messages
- Eliminate 'write to memory that was const-qualified' code analyzer warning
- Eliminate all 'scope of variable can be reduced' cppcheck style warnings
- Eliminate CSA warning about incorrect cast applied to HBLK_OBJS
- Eliminate CSA warning about narrowing cast in CleanUp of test_cpp
- Eliminate CSA warning of non-virtual destructor in test_cpp base class
- Eliminate CSA warning of staticroot that can be a local variable (tests)
- Eliminate CSA warning of unmodified non-const static var (disclaim_test)
- Eliminate redundant local variable in register_finalizer
- Eliminate TSan (Thread Sanitizer) warnings in gctest
- Eliminate UBSan warning of overflow during descr subtraction in mark_from
- Eliminate unreachable PROC/DEFAULT_VDB GC_printf calls in gctest main()
- Eliminate unsigned fl_builder_count underflow in mark_thread
- Enable GC_is_tmp_root for all platforms
- Execute more single-threaded GC tests by CMake
- Expand tabs to spaces in de_win.rc (tests)
- Export GC_dump_finalization/regions()
- Export GC_is_tmp_root() and GC_print_trace[_inner]
- Export GC_print_free_list()
- Fix '32-bit value shift followed by expansion to 64-bit' code defect
- Fix 'GC_written_pages never read' code defect (GWW_VDB)
- Fix 'label cannot be reached' static analyzer warning in disclaim_test
- Fix 'size of tv is unknown' error in brief_async_signal_safe_sleep (musl)
- Fix 'syntax error' reported by cppcheck for mach_dep
- Fix 'unknown type name GC_INNER' compilation error (FreeBSD)
- Fix 'variable assigned a value that is never used' cppcheck style warnings
- Fix 'void pointers in calculations: behavior undefined' cppcheck warning
- Fix assertion violation about disabled cancel in try_to_collect_inner
- Fix atomic_ops build in Makefile.direct for Solaris
- Fix Clang static analyzer warning about not found gc_priv.h in extra files
- Fix compilation error in get_main_stack_base (Emscripten)
- Fix compilation for winpthreads if HANDLE_FORK
- Fix compilation if configured with --enable-werror on OS X
- Fix cord/de build in Makefile.direct (Linux)
- Fix data race in a list referenced by A.aa (gctest)
- Fix data race in collectable_count (gctest)
- Fix data race in do_local_mark when comparing active_count to helper_count
- Fix data race in GC_suspend/resume_thread
- Fix data race in last_stop_count access (suspend_handler_inner)
- Fix data race in make_descriptor when setting explicit_typing_initialized
- Fix data race in mark_thread when updating mark_no
- Fix data race when getting object size in explicitly-typed allocators
- Fix deadlock in GC_suspend_thread
- Fix gctest failure for Darwin if CPPCHECK is defined
- Fix lack of barriers to synchronize memory for suspend_handler
- Fix marking of disclaim-reachable objects in the incremental mode
- Fix message of VDB implementation used if MPROTECT_VDB+GWW_VDB (gctest)
- Fix missing started_thread_while_stopped call from mark_some if GCC/Clang
- Fix null dereference in GC_stack_range_for if not DARWIN_DONT_PARSE_STACK
- Fix page calculation in checksums
- Fix parallel build in Makefile.direct
- Fix test_cpp and c++ parallel build in Makefile.direct
- Fix typo in comment of GC_mark_some
- Fix typos in cdescr.html and README.sgi
- Make GC_INIT optional for clients even if thread-local allocations enabled
- Match uclinux pattern in configure
- Move conditional GC_need_to_lock setting to gc_locks.h (refactoring)
- Move README.QUICK from DOC_FILES to OTHER_FILES in Makefile.direct
- New API function (GC_is_init_called) to check if BDWGC is initialized
- New target (check-cpp) in Makefile.direct
- Prevent abort in register_data_segments for Symbian and Emscripten
- Prevent multiple 'Caught ACCESS_VIOLATION in marker' per collection
- Print realloc_count value in gctest
- Put invariant name in quotes to make mark_state comments clearer
- Refine configure messages when checking for compiler option support
- Remove extraneous semicolons after AC_MSG_WARN (configure)
- Remove page_was_dirty and remove_protection duplicate definitions
- Remove unnecessary type casts of printf arguments to unsigned long
- Remove unused ALIGN_DOUBLE, USE_GENERIC_PUSH_REGS macros (TILE-Gx/Pro)
- Rename 'test' to 'check' target in Makefile.direct
- Replace deprecated rewind to fseek in cordxtra
- Report gcc/clang pedantic warnings (configure)
- Skip thread suspend/resume API testing for Tru64 (OSF1)
- Support AddressSanitizer (Clang/GCC) and MemorySanitizer (Clang)
- Support GC_init (and get_stack_base) from non-main thread on FreeBSD/NetBSD
- Suppress 'tainted string passed to vulnerable operation' false defects
- Suppress 'taking address of label non-standard' GCC/Clang pedantic warning
- Test GC initialization from non-main thread on FreeBSD and NetBSD
- Test GCJ object creation with length-based descriptor (gctest)
- Update comment in finalized_disclaim to match FINALIZER_CLOSURE_FLAG
- Update README regarding make cords with Makefile.direct
- Update README to use autogen.sh on build from the source repository
- Update shared libraries version info to differentiate against v7.4
- Use mprotect instead of mmap in GC_unmap() on Cygwin
- Use same style of include gc.h in documentation
- Workaround '!GC_page_size is always false' cppcheck style warning
- Workaround '#error' cppcheck error messages
- Workaround '32-bit value shift by >31 bits is undefined' cppcheck warnings
- Workaround 'array compared to 0', 'untrusted loop bound' false defects
- Workaround 'bad address arithmetic' static analysis tool false positive
- Workaround 'checking if unsigned value is negative' cppcheck warning
- Workaround 'checking unsigned value is negative' code defect in mark_from
- Workaround 'comparison of identical expressions' false code defects
- Workaround 'Condition 0!=GETENV() is always false' cppcheck style warnings
- Workaround 'condition is always false' cppcheck warning in get_next_stack
- Workaround 'condition is always true' cppcheck style warnings in GC_init
- Workaround 'function is never used' cppcheck style warnings
- Workaround 'insecure libc pseudo-random number generator used' code defect
- Workaround 'int shift by negative amount' false code defect in finalize
- Workaround 'local variable size too big' static analyzer warning
- Workaround 'memory leak: result' cppcheck false error (POSIX)
- Workaround 'null pointer dereference' false positive in push_next_marked
- Workaround 'obsolescent bcopy, bzero called' cppcheck warnings (POSIX)
- Workaround 'obsolescent usleep called' cppcheck warning (POSIX)
- Workaround 'obsolete function alloca() called' cppcheck warnings
- Workaround 'passing untyped NULL to variadic function' cppcheck warning
- Workaround 'pointer used before comparison to null' code defect (pthread)
- Workaround 'possible null pointer dereference' cppcheck warnings
- Workaround 'potential multiplication overflow' code defect in de_win (cord)
- Workaround 'redundant assignment of *result to itself' cppcheck warning
- Workaround 'resource leak' false positives in alloc_MS, bl/envfile_init
- Workaround 'same expression on both sides of ==' cppcheck style warning
- Workaround 'same expression on both sides of OR' cppcheck style warning
- Workaround 'struct member is never used' cppcheck style warnings
- Workaround 'tainted int used as loop bound' static analysis tool warning
- Workaround 'Uninitialized variable' cppcheck errors
- Workaround 'unused variable' cppcheck style warnings
- Workaround 'va_list used before va_start' cppcheck error in cord
- Workaround 'value of macro unknown' cppcheck info messages
- Workaround 'value of REDIRECT_MALLOC/FREE unknown' cppcheck info messages
- Workaround 'value of SIGBUS unknown' cppcheck info messages
- Workaround 'value of WINAPI unknown' cppcheck info messages
- Workaround 'variable hides enumerator with same name' cppcheck warnings
- Workaround 'variable reassigned before old value used' cppcheck warnings
- Workaround 'waiting while holding lock' code defect in stop_world (Unix)
- Workaround false 'uninitialized var use' code defect (initsecondarythread)
Also, includes 7.4.6 changes
Build status
Travis CI build
AppVeyor CI build
Coveralls status (code coverage)
Distribution Tarball
gc-7.6.2.tar.gz (see the Assets above)