Permalink
Fetching contributors…
Cannot retrieve contributors at this time
99 lines (66 sloc) 3.97 KB
== TODO tasks ==
tests/CMakeLists.txt: Add more executables (see tests.am).
Use C++0x ATM (atomic memory operations) if available (either from the
compiler runtime, provided it is reliable, or from the future libatomic_ops).
Add a test for libatomic_ops minimal version required (at compile time).
windows-untested: Remove if CMake can generate MS Visual Studio 6.0, 7.0, 8.0
project files.
BCC_MAKEFILE: Remove if CMake can generate Makefile for this compiler.
(Same for WCC_MAKEFILE, OS2_MAKEFILE, NT_MAKEFILE, NT_STATIC_THREADS_MAKEFILE,
NT_X64_STATIC_THREADS_MAKEFILE, NT_X64_THREADS_MAKEFILE, digimars.mak,
gc.mak.)
Makefile.dj: Remove if it is possible to use Makefile.direct (or
auto-generated Makefile) instead. (Same for EMX_MAKEFILE.)
build_atomic_ops.sh[.cygwin]: Remove if really not needed.
BCC_MAKEFILE, EMX_MAKEFILE, OS2_MAKEFILE, PCR-Makefile, WCC_MAKEFILE,
SMakefile.amiga, Makefile.dj, digimars.mak: move to "build" folder.
Do type-punning via union (instead of pointer type cast) to enable safe
'-fstrict-aliasing' compiler optimization option.
Support CAN_HANDLE_FORK if USE_WINALLOC for Cygwin.
Use madvise() on Unix/Cygwin.
Use Linux VM pressure notifications to force GC and unmapping.
Filter overlaps in GC_add_roots for Unix (same as for Win32).
Enable GC_set_handle_fork(1) for Darwin with GC_dirty_maintained on (both
single and multi-threaded modes).
Add more fields to GC_prof_stats_s (potential candidates are:
requested_heapsize, max_large_allocd_bytes, large_allocd_bytes, bytes_dropped,
bytes_finalized, bytes_freed, finalizer_bytes_freed, composite_in_use,
atomic_in_use, GC_n_heap_sects, GC_n_memory, GC_black_list_spacing,
GC_root_size, GC_max_root_size, n_root_sets, GC_total_stacksize,
GC_collect_at_heapsize, GC_fail_count, GC_mark_stack_size, last_fo_entries,
last_bytes_finalized, last_finalizer_notification_no, GC_dl_entries,
GC_old_dl_entries, GC_used_heap_size_after_full, GC_total_stack_black_listed,
signed_log_dl_table_size, GC_n_rescuing_pages, signed_log_fo_table_size,
GC_excl_table_entries, GC_stack_last_cleared, GC_bytes_allocd_at_reset,
GC_n_heap_bases, registered_threads_cnt, GC_max_thread_index, GC_block_count,
GC_unlocked_count, GC_hdr_cache_hits, GC_hdr_cache_misses, GC_spin_count).
Support musl libc (on sabotage linux).
== FIXME tasks ==
Solaris + GCC: make check fails with the message:
libc.so.1: gctest: fatal: libgcc_s.so.1: open failed: No such file or directory
Solaris/x86[_64]: gctest fails if PROC_VDB.
Sun C++ 5.11: test_cpp.cc:237: Error: Too few arguments in call to
"operator delete(void*, GCPlacement, extern "C" void(*)(void*,void*), void*)".
Darwin/x86_64: deadlock might occur between:
dlclose() -> GC_dyld_image_remove() -> GC_lock() and
GC_inner_start_routine()+LOCK -> dyld_stub_binder_().
HP-UX 11.00 with the vendor cc fails:
Perhaps GC_push_regs was configured incorrectly? FAIL: gctest.
Android NDK: gcc4.7+ld.gold: gctest crashes due to incorrect __data_start.
Linux/mips64el (N32): threadleaktest crashes once every 3-4 runs (SIGSEGV in
GC_delete_gc_thread(t=0) called from GC_pthread_join) if configured with
--disable-shared.
FreeBSD 9.0/x86_64 (gcc-4.2.1-20070831): gctest segfaults sometimes in
GC_typed_mark_proc if configured with --enable-threads=pthreads.
OpenBSD 5.1/i386: leaktest fails rarely (unless logging redirected to file):
cannot write to stderr from GC_gcollect invoked from 'atexit' hook.
NetBSD 5.1/x86: threadkey_test hangs sometimes.
Cygwin: subthread_create: exception STATUS_ACCESS_VIOLATION.
Cygwin: gctest: assertion failure at UNLOCK in GC_fork_parent_proc.
Mingw-w32: gctest: "SuspendThread failed" sometimes occurs (if
GC_DLL+GC_THREADS+GC_ASSERTIONS).
Mingw: gctest (compiled with PARALLEL_MARK): launched in gdb with breakpoint
at GC_mark_local, after several breakpoint hits, crashes with the messages
"Caught ACCESS_VIOLATION in marker; memory mapping disappeared" and
"Tried to start parallel mark in bad state", or enters deadlock.
Mingw: test_cpp: crashes at some iteration if big argument (e.g., 1000) given.