Known issues in MPS release 1.114.0

This list may include some issues incorrectly, because "p4 fixes -i" does not report a fix for a version branch if the files changed by the fix were deleted on the masters before the version branch was taken.

Job Priority Title
job003499 critical The MPS issues list looks scary
job000546 essential MPS docs say P4DTI instead of MPS
job000602 essential Mac OS X 10.2 build fails because "cabs" is already defined
job000668 essential Build procedure uses p4 counter change which is unsafe
job000973 essential MPS doesn't compile under Mac OS X 10.3.4
job001155 essential full collects cause gigantic ramps
job001367 essential MPS lacks walkthrough example code (aka "hello-world") for beginners
job003371 essential MPS spends too much time making system calls
job003434 essential Incorrect glossary link from "committed" to "mapping"
job003486 essential mv2test failure
job003668 essential Stack scanner assumes all references are word-aligned
job003674 essential Hysteresis overwhelmed by allocation
job003870 essential Can't set MPS_KEY_SPARE
job003884 essential mps_pool_free_size wrong for AWL, LO in hot variety
job003893 essential Arena contracted callback gets called with invalid arena
job003911 essential Can't dump stack from assertion handler
job003937 essential MRG pool does not update scannedSize
job003951 essential clean-up after assertion failure may fail re-entering the MPS
job003956 essential MPS doesn't build on FreeBSD 10
job003971 essential No automatic feedback about overheads of "hot" versus "rash" MPS
job003975 essential Poor performance due to imbalance between protection and scanning costs
job003994 essential MPS_TELEMETRY_CONTROL may introduce security risks
job003998 essential Growing an arena can allocate a chunk with no memory
job004006 essential CVM postmortem debugging support is not properly integrated into the MPS
job004007 essential Policy gets stuck when buffers exceed capacity of generation
job004011 essential Policy gets stuck when the live set triggers the dynamic criterion
job004018 essential Documentation (and test cases) are wrong about mps_collections
job004019 essential Can't handle access violation if arena is locked
job004021 essential Computed chunk size assertion may fail
job004026 essential Failed shield assertions with DEEP checking
job004027 essential Memory corruption due to multiple arenas in multiple threads
job004029 essential mpsicv fails with DEEP checking
job004036 essential Assertion failure in RootCheck with root of type RootTHREAD
job004037 essential Compilation of apss.c fails with GCC 6.1
job004040 essential Use of uninitialized variable in ProtThreadRegister on XC
job004041 essential Assertion failure in fotest on ananll
job004042 essential Assertion failure in apss on w3i3mv
job004043 essential Assertion failure in apss on xci3ll
job004044 essential MMQA function/150.c fails in hot variety on lii6ll
job004049 essential Allocation between whiten and reclaim/detach is not accounted as condemned
job004061 essential Manual does not build with Sphinx 1.6
job004076 essential MPS does not compile with GCC 7
job004086 essential Assertion failure in amssshe
job004108 essential MPS does not build with Xcode 10.0
job004113 essential MPS does not compile with GCC 7.3
job004156 essential MPS does not compile with GCC 8.3
job004158 essential Register scanning approach is not reliable
job004162 essential MPS does not compile with Clang 6.0.0
job000537 optional Many design documents missing
job000538 optional Project documents are poorly formatted
job000549 optional Blackening an AMS segment can break
job001092 optional MPS is not integrated with public cool projects.
job001150 optional MPS doesn't provide enough feedback information about what it is doing or what it has done
job001151 optional Format methods can't look at other data
job001152 optional The MPS can't be used to simulate a smaller machine
job001659 optional Culprit analysis is too hard.
job001666 optional No guarantee that all weak references to an object die together.
job001707 optional VM Arena never shrinks a generation zone set preferences.
job001887 optional MPS mps_arena_committed() is wrong when using mps_arena_class_cl (client arena)
job002175 optional MPS unaligned references are not detected by AMC pools
job003348 optional Unclear what happens if a thread dies while registered
job003352 optional Instruction emulation not supported on OS X or x86-64
job003384 optional Collector goes mad when low on address space
job003387 optional Multiple arenas can corrupt telemetry stream
job003388 optional telemetry system API can corrupt telemetry stream
job003439 optional MPS is too hard to use
job003455 optional Frequent ramps can mess up the ramping algorithm and cause performance problems
job003477 optional MPS is hard to build and debug on Windows
job003485 optional Information about cause of errors is lost
job003495 optional Assertion failure if you try to create a small arena
job003505 optional MPS incurs large overhead on barrier hits
job003513 optional Arena extension callbacks are undocumented
job003523 optional Accessing to weak tables on 64-bit causes them to be scanned.
job003525 optional Pointers from MPS stack pin down user objects
job003532 optional MPS kit fails to install shared libraries
job003539 optional MPS pause times are not well regulated
job003644 optional Reserve/commit protocol does not cope with exceptions
job003683 optional Epoch number can wrap around on 32-bit platforms
job003755 optional Telemetry tools not regularly tested
job003764 optional Scanning rate is way too high
job003780 optional No test case for register scanning
job003783 optional ChainCondemnAuto condemns too many generations
job003790 optional Segment descriptors could be more efficiently managed
job003794 optional Hard to predict the mortality in a generation
job003796 optional White segment lookup is slow
job003797 optional AMC space is lost to pinning
job003798 optional Tract tables are inflexible
job003799 optional Incrementally collecting the nursery may waste time
job003813 optional TraceReclaim looks at every segment
job003815 optional Freeing a page never destroys a chunk
job003832 optional CVM memory debugging may be redundant
job003841 optional Segs are not Exposed when AMSBlacken calls amsIterate
job003848 optional Access violation in gcbench on Windows
job003878 optional SNC pool class missing from file-at-a-time builds
job003879 optional SNC not tested by main test suite
job003880 optional SNC does not implement size interface
job003882 optional sncss test failure
job003883 optional SNC walks and scans dead objects
job003887 optional LD functions don't check their arena argument
job003898 optional Spare committed memory in the wrong zones prevents allocation
job003899 optional VMArenaGrow can return RESOURCE instead of COMMIT_LIMIT
job003908 optional Not clear that an assertion handler must not call the MPS
job003917 optional Clear x86 direction flag in exception handler
job003921 optional Write barrier may be harmful to performance
job003922 optional Failed arena creation is not correctly unwound
job003923 optional Client arena fails to detect too-small size
job003926 optional Policy is hard to work on
job003929 optional mps_arena_step uses poor estimate of collection time
job003932 optional Allocation frame documentation is unclear
job003938 optional Useless traces are started and progressed
job003942 optional Possible hang in steptest
job003944 optional Arena allocation policy may allocate in blacklisted zone
job003953 optional Definalization doesn't scale
job003954 optional Arena allocation policy does not interact intelligently with the reserve pool
job003955 optional No regression test for job003898
job003957 optional MutatorFaultContext interface is inconsistent and incomplete
job003960 optional No way to get live information about the behaviour of the MPS
job003961 optional Regular testing omits the Scheme example
job003962 optional Regular testing omits the MMQA test suite
job003963 optional Address-based hash table design is not stress-tested
job003969 optional Event clock implementation may not be reliable
job003970 optional The MPS can't scan in parallel with the mutator
job003974 optional StackContext and MutatorContext could be unified
job003976 optional Can't scan parts of segments allocated by buffers
job003977 optional We maintain redundant NMAKE files
job003979 optional Forwarding unnecessarily lowers the read barrier
job003980 optional Branching tool does not distinguish between private and public Git mappings
job003981 optional MPS does not benefit from huge TLB entries
job003984 optional Calling mps_clock frequently is bad for performance
job003985 optional The reservoir pool is entirely bogus
job003986 optional STATISTIC_DECL has rotted
job003987 optional Emergency collection is not documented
job003988 optional No continuous integration test for 32-bit MPS on Linux and OS X
job003989 optional On Windows, pause times are measured using clock(), which is wall-clock time
job003992 optional MAX_SIZE means different things to MV and MVT pools
job003993 optional Restrictions on maximum pool alignment are not checked or documented
job003995 optional MPS doesn't support debugging APs
job003997 optional Can't run MMQA test suite on Windows
job003999 optional Manually managed address space is only returned to the operating system via a trace
job004000 optional MPS condemns too many segments and takes too long to find them
job004001 optional No representation of the set of generations condemned by a trace
job004002 optional Can't implement incremental condemn
job004004 optional mps_arena_pause_time and mps_arena_pause_time_set are not covered
job004008 optional AMSSegMerge loses buffer on high segment
job004010 optional No check that collecting a generation reduces its "new size" to zero
job004016 optional AMC pool may scan parts buffered segments many times
job004017 optional MVFF is slow in the hot variety
job004022 optional Mutator is suspended while the foundation is discovered
job004023 optional Summary-based write barrier invariant won't cope with pre-flip scanning
job004028 optional fotest fails with DEEP checking
job004030 optional Failed shield assertion in finalization tests with deep checking
job004035 optional Thread roots not suitable for user-level threads
job004045 optional MMQA test suite fails on FreeBSD
job004046 optional Assertion failure in ananmv
job004048 optional MMQA test cases fail on w3i6mv
job004055 optional Documentation for mps_root_create_area_tagged is incorrect
job004056 optional lockEnsureGlobalLock is not thread-safe on Windows
job004062 optional fork() unsupported on FreeBSD, Linux and macOS
job004065 optional Scan area functions not flexible enough
job004070 optional LO and AWL pools fail to detect invalid exact references
job004072 optional MRG segments needlessly set the write barrier
job004074 optional mps_definalize might not work
job004082 optional ztfm.c does not compile with Microsoft Visual C 2015
job004084 optional MMQA test function/232.c crashes
job004085 optional MPS doesn't cooperate well with other SEGV handlers
job004090 optional Walking the roots means you can't walk the formatted objects
job004093 optional Predicted mortality is bogus for collection of the world
job004094 optional Trace mortality prediction is bogus
job004096 optional MMQA fails to handle assertion failures
job004097 optional MMQA ignores assertions in tests with OUTPUT_SPEC
job004098 optional Use of clock() is not fork-safe
job004099 optional Monitor not usable for long-running processes
job004100 optional Inconsistent linearization of event times
job004102 optional arenaFreeLandInsertSteal might pass an empty range to LandInsert
job004105 optional Time and space overheads are high
job004161 optional tagtest fails on lii6gc
job000543 nice No MPS programmer's guide
job000548 nice AMS grain colour doesn't agree with design doc
job000814 nice Configura cannot manage Lightworks objects with the MPS
job001161 nice there is no human-helpful map of MPS files
job001357 nice Configura cannot use Win32 fibers
job001369 nice MPS proc/release-build omits step: update main MPS index page
job001571 nice MPS multiple traces would not work
job001676 nice AMC does not implement weakness in emergency fixing.
job001681 nice AMCHeaderFix is an unnecessary copy.
job001708 nice VM Arena's segment placement policy could be improved.
job001709 nice VM Arena uses up zones too quickly.
job001715 nice MPS fails to lower barrier when hit: multiple hits cause slowdown (CONJECTURE)
job001789 nice MPS auto_header format is not tested by main test files
job003324 nice Manual contains little about performance of interface
job003325 nice Purpose of the "class" method of an object format is unclear
job003327 nice Purpose of reservoirs is unclear
job003328 nice Possible improvement to reserve/commit protocol
job003344 nice Purpose of allocation frames/SNC pool class are unclear
job003357 nice AWL is awkward to use
job003374 nice No documentation about low memory situations
job003448 nice mps_arena_vm_growth is not documented
job003482 nice Test suite doesn't test error paths
job003484 nice MPS has predictable address space layout
job003490 nice Assertion failure in MRGDescribe
job003493 nice No recovery mode after assertion failure
job003502 nice Race condition in EventInit()
job003508 nice Little in manual about in-band headers
job003515 nice Can't collect diverse MPS messages in order
job003535 nice Thread suspension interface is hacky, error-prone
job003559 nice Multiple thread registration does not work on all platforms
job003632 nice Difficult to integrate with application that has non-atomic updates
job003635 nice Poor error message if you fail to specify a required keyword argument
job003639 nice Unclear why StackProbeDEPTH is 500
job003653 nice Scanner makes no use of __builtin_prefetch
job003660 nice Asssertion "ring->next != NULL" in ztfm test
job003671 nice Non-moving pools don't make best use of zones
job003693 nice The "method" suffix on MPS types is applied too widely
job003713 nice Inconvenient to add new parts on Windows
job003719 nice Hard to test and debug threading behaviour
job003738 nice Assertion in mps_arena_formatted_objects_walk if you have an AMS pool
job003742 nice Root modes not in sync
job003750 nice No keyword arguments for arena commit limit
job003758 nice The MPS does not build with gcc -Wconversion
job003762 nice steptest is too slow for a smoke test
job003763 nice No easy way to automatically clear freed memory
job003766 nice Splitting and merging complicates writing new seg classes
job003768 nice Unclear if lockli is required
job003769 nice README out of date wrt WOW64 on Windows 7
job003770 nice MPS does not compile from C++
job003781 nice No automated performance test
job003784 nice mps_class_t is mis-named
job003786 nice No automated test of the event subsystem
job003789 nice MPS does not try collecting when out of memory
job003791 nice Can't set the rank on an AMC/AMCZ allocation point
job003792 nice AMS and AWL don't update summaries of condemned segments
job003795 nice Arena extensions are not adaptive
job003802 nice Manual unclear about exact collection
job003803 nice Hard to discover roots
job003805 nice Bit table scanning is unoptimized
job003814 nice {VM,Client}ArenaReserved iterates over the chunks
job003816 nice Can't specify generation per allocation point
job003820 nice Scheme interpreter table_set is wrong
job003835 nice SegPrefs are poorly named
job003836 nice PageRetStruct is obsolete
job003837 nice No control over which objects are "large"
job003838 nice MVT uses segments unnecessarily
job003839 nice No benchmarks for space performance
job003842 nice Missing dependencies in nmake build system
job003847 nice Allocation clock inconsistency in handling of AMC segment padding
job003852 nice No heap consistency checker
job003858 nice Allocating segments in control pool has a bad complexity
job003859 nice Assertion failures in amcssth
job003863 nice mps_io_* functions are misleadingly named
job003864 nice Uncollected finalization messages lead to retention
job003865 nice Unfinalizable objects can be registered for finalization
job003866 nice mps_arena_has_addr fails for address in unsegmented pool classes
job003867 nice RankAMBIG is misleadingly used to mean "minimum rank"
job003868 nice Test function/228.c doesn't detect assertions
job003869 nice Reservoir refuses to supply memory
job003871 nice MMQA test function/165.c failure
job003872 nice MMQA test function/167.c failure
job003873 nice MMQA test function/136.c failure
job003874 nice MMQA test function/214.c failure
job003875 nice MMQA test function/45.c failure
job003876 nice MMQA test function/170.c failure
job003877 nice MMQA test function/148.c failure
job003881 nice SNC never returns memory to the arena
job003885 nice Unclear when to use AVERT in mpsi.c
job003889 nice No error if you destroy a format that's still in use by a pool
job003890 nice No error if you create a pool using a format from another arena
job003892 nice Pool statistics are not used
job003894 nice Intrinsic functions not used on Windows
job003895 nice No interface to logging control
job003900 nice Can't run tests with ASLR turned off
job003901 nice Can't run a single test under the test runner
job003902 nice commpre/commpost distinction is unnecessary
job003905 nice Can't build the MPS in parallel
job003906 nice Not clear whether pointers should be stored in client or base form
job003915 nice Manual in master sources offers download for nonexistent release
job003918 nice MVInit can fail without destroying its block pool
job003919 nice No interface for getting bytes allocated
job003924 nice Unnecessary allocation during arena creation
job003925 nice No test case for removing chunks from the arena
job003927 nice No bootstrap design
job003928 nice VM arena uses two VMs when one might do
job003930 nice Unnamed constants in arenaShouldCollectWorld
job003931 nice Manual claims SNC allocation point requires MPS_KEY_RANK
job003933 nice ArenaPark does not accumulate trace metrics
job003934 nice mps_arena_step may fail to collect world even if it had time
job003935 nice ArenaAvail fails to check its result
job003936 nice Type confusion in work computation
job003939 nice No AccessSetCheck
job003941 nice Configuration parameters are uncommented
job003943 nice No consistent way to discover arena configuration
job003945 nice Easy to mistakenly omit to enable finalization messages
job003946 nice Assertions missing from the manual
job003947 nice Allocation frame protocol not safe for general pools
job003949 nice No glossary entry for telemetry system
job003950 nice Manual not compatible with Sphinx 1.3.1
job003964 nice lo.h is misnamed
job003965 nice AMS has extra implementation poolamsi.c
job003966 nice No design for clock.h
job003967 nice chain.h and locus.c have mis-matching names
job003968 nice Warnings when building manual with Sphinx 1.3.5
job003972 nice MMQA function/226.c gets stuck in the hot variety
job003973 nice rootCreate doesn't check its mode argument
job003978 nice Too hard to experiment with different MPS parameters
job003990 nice MPS doesn't notice if clients write scanners that don't check error codes
job003991 nice No validation tests for client formats.
job004005 nice Destroying an automatically managed pool does not check that the arena is parked
job004009 nice Can't split a segment if buffer is above the split point
job004012 nice No function SegHasBuffer
job004020 nice Running and debugging MMQA test cases is laborious
job004024 nice Accounting overheads are too high on mark & sweep pools
job004025 nice Duplicate code between pool classes
job004038 nice Hard to keep "Common assertions" up to date
job004039 nice Mistakes and omissions in the manual
job004047 nice Inconvenient to run multiple MMQA testsets
job004057 nice Warning pragmas are not localised around the bad cases
job004063 nice Easy to miss mps_addr_pool
job004066 nice Thread-handling functions could do more checking
job004067 nice Telemetry interacts poorly with fork
job004068 nice Duplicate thread-management code
job004069 nice macOS thread registration guard is ineffective and unnecessary
job004073 nice wasMarked protocol is unnecessarily complex
job004077 nice No test cases for bogus arguments to mps_finalize
job004078 nice Typedefs use int when unsigned would be better
job004080 nice Telemetry output not appropriate for interactive use
job004081 nice Event descriptions are in a mess
job004083 nice ChainCreate calls ControlAlloc twice
job004087 nice GenDescCondemned should check that some bytes were condemned
job004088 nice Can't destroy an allocation point with a reserve
job004089 nice No smoke test coverage of mps_arena_roots_walk
job004091 nice No support for saving and restoring automatically managed memory
job004092 nice MMQA test cases fail on 32-bit platforms
job004095 nice No need for two classes of MRG segment
job004101 nice Plain CBS doesn't work
job004103 nice No smoke test coverage of mapping failure in pagesMarkAllocated
job004104 nice fotest fails with "arena commit limit exceeded"
job004106 nice mps_collections doesn't count all collections.
job004107 nice Debugging chapter is out of date
job004109 nice Hash table advice does not mention sets
job004142 nice MPS sources contain links to private documents
job004147 nice MMQA test function/167.c fails on w3i6mv
job004148 nice MMQA relies on deprecated API mps_tramp
job004149 nice MMQA tests conerr/60.c to conerr/68.c fail on w3i6mv