[BACK]Return to README.changes CVS log [TXT][DIR] Up to [local] / OpenXM_contrib2 / asir2000 / gc / doc

Diff for /OpenXM_contrib2/asir2000/gc/doc/README.changes between version 1.1 and 1.2

version 1.1, 2002/07/24 08:00:16 version 1.2, 2003/06/24 05:11:38
Line 1621  Since 6.1alpha4:
Line 1621  Since 6.1alpha4:
    (Thanks again to Jeffrey Mark Siskind.)     (Thanks again to Jeffrey Mark Siskind.)
  - Renamed "SUSPENDED" flag for Solaris threads support to avoid a conflict   - Renamed "SUSPENDED" flag for Solaris threads support to avoid a conflict
    with a system header. (Thanks to Philp Brown.)     with a system header. (Thanks to Philp Brown.)
    - Cause win32_threads.c to handle an out of range stack pointer correctly,
      though currently with a warning.  (Thanks to Jonathan Clark for
      observing that win32 applications may temporarily use the stack
      pointer for other purposes, and suggesting a fix.  Unfortunately, it's
      not clear that there is a complete solution to this problem.)
   
   Since 6.1alpha5:
    - Added GC_MAXIMUM_HEAP_SIZE environment variable.
    - Fix configure.in for MIPS/LINUX. (Thanks to H.J. Lu.)
    - Double page hash table size for -DLARGE_CONFIG.
    - Integrated Bo Thorsen's X86-64 support.
    - STACKBOTTOM definition for LINUX/MIPS was partially changed back.
      (Thanks to H.J. Lu and Hiroshi Kawashima for resolving this.)
    - Replaced all occurrences of LINUX_DATA_START in gcconfig.h with
      SEARCH_FOR_DATA_START.  It doesn't hurt to falll back to a search.
      And __data_start doesn't seem to get defined correctly of the GC
      library is loaded with LD_PRELOAD, e.g. for leak detection.
    - If the GC_find_leak environment variable is set, do a
      atexit(GC_gcollect) to give us at least one chance to detect leaks.
      This may report some very benign leaks, but ...
    - Addeded REDIRECT_FREE.  It's necessary if we want leak detection with
      LD_PRELOAD.
    - Defer printing of leaked objects, as for smashed objects.
    - Fixed process and descriptor leak in GC_print_callers.  Try for
      line number even if we got function name.)
    - Ported parallel GC support and thread local allocation to Alpha.
      Not yet well-tested.
    - Added GC_DUMP_REGULARLY and added finalization statistics to GC_dump().
    - Fixed Makefile.am to mention alpha_mach_dep.S instead of the defunct
      alpha_mach_dep.s.  (Thanks to Fergus Henderson.)
    - Incorporated a change to new_gc_alloc.h, suggested by Johannes Schmidt,
      which should make it work with gcc3.1.  (I would still like to encourage
      use of gc_allocator.h instead.)
    - Use alpha_mach_dep.S only on Linux.  (It's not clear that this is
      optimal, but it otherwise didn't build on Tru64.  Thanks to Fergus
      Henderson.)
    - Added ifdef to guard free() in os_dep.c.  Otherwise we get a
      compilation error on Irix.  (Thanks to Dai Sato.)
    - Added an experimental version of GC_memalign to mallocx.c.  This can't
      always work, since we don't handle alignment requests in the hblk-level
      allocator, and we can't handle arbitrary pointer displacements unless
      GC_all_interior_pointers is enabled.  But it should work for alignment
      requests up to HBLKSIZE.  This is not yet documented in the standard
      places.
    - Finally debugged the OSF1/Tru64 thread support.  This needs more testing,
      since I needed to add a somewhat unconvincing workaround for signal
      delivery issues that I don't yet completely understand.  But it does
      pass my tests, even in parallel GC mode.  Incremental GC support is
      disabled if thread support is enabled, due to the signal issues.
    - Eliminated name-space-incorrect definition of _cdecl from gc_cpp.h.
    - Added GC_debug_malloc_replacement and GC_debug_realloc_replacement
      declarations to gc.h.  On IA64, this is required for REDIRECT_MALLOC
      to work correctly with these.
    - Fixed Linux USE_PROC_FOR_LIBRARIES to work with a 64-bit /proc format.
   
   Since 6.1:
    - Guard the test for GC_DUMP_REGULARLY in misc.c with
      "#ifndef NO_DEBUGGING".  Otherwise it fails to build with NO_DEBUGGING
      defined.  (Thanks to Manuel Serrano.)
    - Message about retrying suspend signals was incorrectly generated even when
      flag was not set.
    - Cleaned up MACOSX/NEXT root registration code.  There was apparently a
      separate ifdef case in GC_register_data_segments() for no reason.
    - Removed MPROTECT_VDB for MACOSX port, based on one negative report.
    - Arrange for gc.h and friends to be correctly installed with GNU-style
      "make install".
    - Enable the GNU-style build facility include C++ support in the library
      with --enable-cplusplus. (Thanks to Thomas Maier for some of the patch.)
    - Mark from GC_thread_key in linux_threads.c, in case that's allocated
      from the garbage collected heap, as it is with our own thread-specific
      storage implementation.  (Thanks to Jeff Sturm.)
    - Mark all free list header blocks if they are heap allocated.  This avoids
      some unnecessary tracing.  And it remains correct if we clear the
      root set. (Thanks to Jeff Sturm for identifying the bug.)
    - Improved S390/Linux support.  Add S390/Linux 64-bit support.  (Thanks
      to Ulrich Weigand.)
    - Corrected the spelling of GC_{M,C}ALLOC_EXPLICTLY_TYPED to
      GC_{M,C}ALLOC_EXPLICITLY_TYPED in gc_typed.h.  This is technically
      an interface change.  Based on the fact that nobody reported this,
      I suspect/hope there were no clients.
    - Cleaned up gc_typed.h so that (1) it adds an extern "C" declaration
      when appropriate, (2) doesn't generate references to undefined internal
      macros, and (3) allows easier manual construction of descriptors.
    - Close the file descriptor used by GC_print_address_map().
    - Set the "close-on-exec" bit for various file descriptors maintained
      for the collector's internal use.
    - Added a hack to find memory segments owned by the system allocator
      under win32.  Based on my tests, this tends to eventually find all
      segments, though it may take a while.  There appear to be cleaner,
      but slower solutions under NT/XP.  But they rely on an API that's
      unsupported under 9X.
    - Changed Linux PowerPC stack finding to LINUX_STACKBOTTOM.  (Thanks
      to Akira Tagoh for pointing out that HEURISTIC1 doesn't work on
      64-bit kernels.)
    - Added GC_set_free_space_divisor to avoid some Windows dll issues.
    - Added FIXUP_POINTER, POINTER_SHIFT, POINTER_MASK to allow preprocessing
      of candidate pointers for tagging, etc.
    - Always lock around GC_notify_full_gc().  Simplified code for
      invoking GC_notify_full_gc().
    - Changed the way DATASTART is defined on FreeBSD to be robust against
      an unmapped page after etext.  (Thanks to Hironori Sakamoto for
      tracking down the intermittent failure.)
    - Made GC_enable() and GC_disable() official.  Deprecated direct update
      of GC_dont_gc.  Changed GC_gcollect to be a noop when garbage collection
      is disabled.
    - Call GC_register_dynamic_libraries before stopping the world on Linux,
      in order to avoid a potential deadlock due to the dl_iterate_phdr lock.
    - Introduced a more general mechanism for platform-dependent code to
      decide whether the main data segment should be handled separately
      from dynamic libraries, or registered by GC_register_dynamic_libraries.
      The latter is more reliable and easier on Linux with dl_iterate_phdr.
   
   Since 6.2alpha1:
    - Fixed the completely broken FreeBSD code in 6.2alpha1.  (Thanks to
      Hironori Sakamoto for the patch.)
    - Changed IRIX reference in dbg_mlc.c to IRIX5. (Thanks to Marcus Herbert.)
    - Attempted to work around the problems with .S filenames and the SGI
      compiler.  (Reported by several people. Untested.)
    - Worked around an HP/UX make issue with the GNU-style build process.
    - Fixed the --enable-cplusplus build machinery to allow builds without
      a C++ compiler.  (That was always the intent ...)
    - Changed the debugging allocation macros to explicitly pass the return
      address for Linux and XXXBSD on hardware for which we can't get stack
      traces.  Use __builtin_return_address(0) to generate it when possible.
      Some of the configuration work was cleaned up (good) and moved to gc.h
      (bad, but necessary).  This should make leak detection more useful
      on a number of platforms.  (Thanks to Fabian Thylman for the suggestion.)
    - Fixed compilation problems in dbg_mlc.c with GC_ADD_CALLER.
    - Bumped revision number for dynamic library.
   
   Since 6.2alpha2:
    - Don't include execinfo.h in os_dep.c when it's not needed, and may not exist.
   
   Since 6.2alpha3:
    - Use LINUX_STACKBOTTOM for >= glibc2.2 on Linux/MIPS.  (See Debian bug
      # 177204)
    - Integrated Jeff Sturm and Jesse Rosenstock's MACOSX threads patches.
    - Integrated Grzegorz Jakacki's substantial GNU build patch.  "Make dist"
      should now work for the GNU build process.  Documentation files
      are installed under share/gc.
    - Tweaked gc_cpp.h to again support the Borland compiler.  (Thanks to
      Rene Girard for pointing out the problems.)
    - Updated BCC_MAKEFILE (thanks to Rene Girard).
    - Added GC_ASSERT check for minimum thread stack size.
    - Added --enable-gc-assertions.
    - Added some web documentation to the distribution.  Updated it in the
      process.
    - Separate gc_conf_macros.h from gc.h.
    - Added generic GC_THREADS client-defined macro to set the appropriate
      GC_XXX_THREADS internal macro.  (gc_config_macros.h.)
    - Add debugging versions of _ignore_off_page allocation primitves.
    - Moved declarations of GC_make_closure and GC_debug_invoke_finalizer
      from gc.h to gc_priv.h.
    - Reset GC_fail_count even if only a small allocation succeeds.
    - Integrated Brian Alliet's patch for dynamic library support on Darwin.
    - gc_cpp.h's gc_cleanup destructor called GC_REGISTER_FINALIZER_IGNORE_SELF
      when it should have called the lower case version, since it was
      explicitly computing a base pointer.
   
   Since 6.2alpha4:
    - GC_invoke_finalizers could, under rare conditions, set
      GC_finalizer_mem_freed to an essentially random value.  This could
      possibly cause unbounded heap growth for long-running applications
      under some conditions.  (The bug was introduced in 6.1alpha5, and
      is not in gcc3.3.  Thanks to Ben Hutchings for finding it.)
    - Attempted to sanitize the various DLL macros.  GC_USE_DLL disappeared.
      GC_DLL is used instead.  All internal tests are now on GC_DLL.
      README.macros is now more precise about the intended meaning.
    - Include DllMain in the multithreaded win32 version only if the
      collector is actually built as a dll.  (Thanks to Mohan Embar for
      a version of the patch.)
    - Hide the cygwin threadAttach/Detach functions.  They were violating our
      namespace rules.
    - Fixed an assertion in GC_check_heap_proc.  Added GC_STATIC_ASSERT.
      (Thanks again to Ben Hutchings.)
    - Removed some obsolete definitions for Linux/PowerPC in gcconfig.h.
    - CORD_cat was not rebalancing unbalanced trees in some cases, violating
      a CORD invariant.  Also tweaked the rebalancing rule for
      CORD_cat_char_star.  (Thanks to Alexandr Petrosian for the bug report
      and patch.)
    - Added hand-coded structured exception handling support to mark.c.
      This should enable support of dynamic libraries under win32 with
      gcc-compiled code.  (Thanks to Ranjit Mathew for the patch.)
      Turned on dynamic library scanning for win32/gcc.
    - Removed some remnants of read wrapping.  (Thanks to Kenneth Schalk.)
      GC_USE_LD_WRAP ws probably broken in recent versions.
    - The build could fail on some platforms since gcconfig.h could include
      declarations mentioning ptr_t, which was not defined, e.g. when if_mach
      was built.  (Thanks to Yann Dirson for pointing this out.)  Also
      cleaned up tests for GC_PRIVATE_H in gcconfig.h a bit.
    - The GC_LOOP_ON_ABORT environment variable interfered with incremental
      collection, since the write fault handler was erroneously overridden.
      Handlers are now set up in the correct order.
    - It used to be possible to call GC_mark_thread_local_free_lists() while
      the world was not stopped during an incremental GC.  This was not safe.
      Fortunately, it was also unnecessary.  Added GC_world_stopped flag
      to avoid it.  (This caused occasional crashes in GC_set_fl_marks
      with thread local allocation and incremental GC.  This probably happened
      primarily on old, slow multiprocessors.)
    - Allowed overriding of MAX_THREADS in win32_threads.c from the build
      command line.  (Patch from Yannis Bres.)
    - Taught the IA64/linux code to determine the register backing store base from
      /proc/self/maps after checking the __libc symbol, but before guessing.
      (__libc symbols are on the endangered list, and the guess is likely to not
      always be right for 2.6 kernels.)  Restructured the code to read and parse
      /proc/self/maps so it only exists in one place (all platforms).
    - The -DUSE_PROC_FOR_LIBRARIES code was broken on Linux.  It claimed that it
      also registered the main data segment, but didn't actually do so.  (I don't
      think anyone actually uses this configuration, but ...)
    - Made another attempt to get --enablecplusplus to do the right thing.
      Since there are unavoidable problems with C programs linking against a
      dynamic library that includes C++ code, I separated out the c++ code into
      libgccpp.
   
   Since 6.2alpha5:
    - There was extra underscore in the name of GC_save_registers_in_stack
      for NetBSD/SPARC.  (Thanks to Jaap Boender for the patch.)
    - Integrated Brian Alliet's patch for Darwin.  This restructured the
      linuxthreads/pthreads support to separate generic pthreads support
      from more the system-dependent thread-stopping code.  I believe this
      should make it easier to eliminate the code duplication between
      pthreads platforms in the future.  The patch included some other
      code cleanups.
    - Integrated Dan Bonachea's patch to support AIX threads.  This required
      substantial manual integration, mostly due to conflicts with other
      recent threads changes.  It may take another iteration to
      get it to work.
    - Removed HPUX/PA-RISC support from aix_irix_threads.c.  It wasn't used
      anyway and it cluttered up the code.  And anything we can do to migrate
      towards generic pthreads support is a good thing.
    - Added a more explicit test for tracing of function arguments to test.c.
      (Thanks to Dan Grayson.)
    - Added Akira Tagoh's PowerPC64 patch.
    - Fixed some bit rot in the Cygwin port.  (Thanks to Dan Bonachea for
      pointing it out.)  Gc.h now includes just windows.h, not winbase.h.
    - Declared GC_save_regs_in_stack() in gc_priv.h.  Remove other declarations.
    - Changed --enable-cplusplus to use automake consitionals.  The old way
      confused libtool.  "Make install" didn't work correctly for the old version.
      Previously --enable-cplusplus was broken on cygwin.
    - Changed the C version of GC_push_regs to fail at compile time if it is
      generated with an empty body.  This seems to have been the cause of one
      or two subtle failures on unusual platforms.  Those failures should
      now occur at build time and be easily fixable.
   
   
 To do:  To do:
    - A dynamic libgc.so references dlopen unconditionally, but doesn't link
      against libdl.
    - GC_proc_fd for Solaris is not correctly updated in response to a
      fork() call.  Thus incremental collection in the child won't work
      correctly.  (Thanks to Ben Cottrell for pointing this out.)
  - --enable-redirect-malloc is mostly untested and known not to work   - --enable-redirect-malloc is mostly untested and known not to work
    on some platforms.     on some platforms.
  - The win32 collector ends up tracing some (most?) objects allocated with  
    the system allocator, in spite if the fact that it tries not to.  
    This costs time and space, though it remains correct.  
    We need a way to identify memory regions used by the system malloc(),  
    or an alternate way to locate dll data areas.  A very partial  
    workaround is to use GC_malloc_atomic_uncollectable() instead of  
    the system malloc() for most allocation.  
  - There seem to be outstanding issues on Solaris/X86, possibly with   - There seem to be outstanding issues on Solaris/X86, possibly with
    finding the data segment starting address.  Information/patches would     finding the data segment starting address.  Information/patches would
    be appreciated.     be appreciated.

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.2

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>