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 |
---|---|---|
job000537 | optional | Many design documents missing |
job000538 | optional | Project documents are poorly formatted |
job000543 | nice | No MPS programmer's guide |
job000546 | essential | MPS docs say P4DTI instead of MPS |
job000548 | nice | AMS grain colour doesn't agree with design doc |
job000549 | optional | Blackening an AMS segment can break |
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 |
job000814 | nice | Configura cannot manage Lightworks objects with the MPS |
job000973 | essential | MPS doesn't compile under Mac OS X 10.3.4 |
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 |
job001155 | essential | full collects cause gigantic ramps |
job001161 | nice | there is no human-helpful map of MPS files |
job001357 | nice | Configura cannot use Win32 fibers |
job001367 | essential | MPS lacks walkthrough example code (aka "hello-world") for beginners |
job001369 | nice | MPS proc/release-build omits step: update main MPS index page |
job001571 | nice | MPS multiple traces would not work |
job001659 | optional | Culprit analysis is too hard. |
job001666 | optional | No guarantee that all weak references to an object die together. |
job001676 | nice | AMC does not implement weakness in emergency fixing. |
job001681 | nice | AMCHeaderFix is an unnecessary copy. |
job001707 | optional | VM Arena never shrinks a generation zone set preferences. |
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 |
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 |
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 |
job003348 | optional | Unclear what happens if a thread dies while registered |
job003352 | optional | Instruction emulation not supported on OS X or x86-64 |
job003357 | nice | AWL is awkward to use |
job003371 | essential | MPS spends too much time making system calls |
job003374 | nice | No documentation about low memory situations |
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 |
job003434 | essential | Incorrect glossary link from "committed" to "mapping" |
job003439 | optional | MPS is too hard to use |
job003448 | nice | mps_arena_vm_growth is not documented |
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 |
job003482 | nice | Test suite doesn't test error paths |
job003484 | nice | MPS has predictable address space layout |
job003485 | optional | Information about cause of errors is lost |
job003486 | essential | mv2test failure |
job003490 | nice | Assertion failure in MRGDescribe |
job003493 | nice | No recovery mode after assertion failure |
job003495 | optional | Assertion failure if you try to create a small arena |
job003499 | critical | The MPS issues list looks scary |
job003502 | nice | Race condition in EventInit() |
job003505 | optional | MPS incurs large overhead on barrier hits |
job003508 | nice | Little in manual about in-band headers |
job003513 | optional | Arena extension callbacks are undocumented |
job003515 | nice | Can't collect diverse MPS messages in order |
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 |
job003535 | nice | Thread suspension interface is hacky, error-prone |
job003539 | optional | MPS pause times are not well regulated |
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 |
job003644 | optional | Reserve/commit protocol does not cope with exceptions |
job003653 | nice | Scanner makes no use of __builtin_prefetch |
job003660 | nice | Asssertion "ring->next != NULL" in ztfm test |
job003668 | essential | Stack scanner assumes all references are word-aligned |
job003671 | nice | Non-moving pools don't make best use of zones |
job003674 | essential | Hysteresis overwhelmed by allocation |
job003683 | optional | Epoch number can wrap around on 32-bit platforms |
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 |
job003755 | optional | Telemetry tools not regularly tested |
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 |
job003764 | optional | Scanning rate is way too high |
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++ |
job003780 | optional | No test case for register scanning |
job003781 | nice | No automated performance test |
job003783 | optional | ChainCondemnAuto condemns too many generations |
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 |
job003790 | optional | Segment descriptors could be more efficiently managed |
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 |
job003794 | optional | Hard to predict the mortality in a generation |
job003795 | nice | Arena extensions are not adaptive |
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 |
job003802 | nice | Manual unclear about exact collection |
job003803 | nice | Hard to discover roots |
job003805 | nice | Bit table scanning is unoptimized |
job003813 | optional | TraceReclaim looks at every segment |
job003814 | nice | {VM,Client}ArenaReserved iterates over the chunks |
job003815 | optional | Freeing a page never destroys a chunk |
job003816 | nice | Can't specify generation per allocation point |
job003820 | nice | Scheme interpreter table_set is wrong |
job003832 | optional | CVM memory debugging may be redundant |
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 |
job003841 | optional | Segs are not Exposed when AMSBlacken calls amsIterate |
job003842 | nice | Missing dependencies in nmake build system |
job003847 | nice | Allocation clock inconsistency in handling of AMC segment padding |
job003848 | optional | Access violation in gcbench on Windows |
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 |
job003870 | essential | Can't set MPS_KEY_SPARE |
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 |
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 |
job003881 | nice | SNC never returns memory to the arena |
job003882 | optional | sncss test failure |
job003883 | optional | SNC walks and scans dead objects |
job003884 | essential | mps_pool_free_size wrong for AWL, LO in hot variety |
job003885 | nice | Unclear when to use AVERT in mpsi.c |
job003887 | optional | LD functions don't check their arena argument |
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 |
job003893 | essential | Arena contracted callback gets called with invalid arena |
job003894 | nice | Intrinsic functions not used on Windows |
job003895 | nice | No interface to logging control |
job003898 | optional | Spare committed memory in the wrong zones prevents allocation |
job003899 | optional | VMArenaGrow can return RESOURCE instead of COMMIT_LIMIT |
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 |
job003908 | optional | Not clear that an assertion handler must not call the MPS |
job003911 | essential | Can't dump stack from assertion handler |
job003915 | nice | Manual in master sources offers download for nonexistent release |
job003917 | optional | Clear x86 direction flag in exception handler |
job003918 | nice | MVInit can fail without destroying its block pool |
job003919 | nice | No interface for getting bytes allocated |
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 |
job003924 | nice | Unnecessary allocation during arena creation |
job003925 | nice | No test case for removing chunks from the arena |
job003926 | optional | Policy is hard to work on |
job003927 | nice | No bootstrap design |
job003928 | nice | VM arena uses two VMs when one might do |
job003929 | optional | mps_arena_step uses poor estimate of collection time |
job003930 | nice | Unnamed constants in arenaShouldCollectWorld |
job003931 | nice | Manual claims SNC allocation point requires MPS_KEY_RANK |
job003932 | optional | Allocation frame documentation is unclear |
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 |
job003937 | essential | MRG pool does not update scannedSize |
job003938 | optional | Useless traces are started and progressed |
job003939 | nice | No AccessSetCheck |
job003941 | nice | Configuration parameters are uncommented |
job003942 | optional | Possible hang in steptest |
job003943 | nice | No consistent way to discover arena configuration |
job003944 | optional | Arena allocation policy may allocate in blacklisted zone |
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 |
job003951 | essential | clean-up after assertion failure may fail re-entering the MPS |
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 |
job003956 | essential | MPS doesn't build on FreeBSD 10 |
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 |
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 |
job003969 | optional | Event clock implementation may not be reliable |
job003970 | optional | The MPS can't scan in parallel with the mutator |
job003971 | essential | No automatic feedback about overheads of "hot" versus "rash" MPS |
job003972 | nice | MMQA function/226.c gets stuck in the hot variety |
job003973 | nice | rootCreate doesn't check its mode argument |
job003974 | optional | StackContext and MutatorContext could be unified |
job003975 | essential | Poor performance due to imbalance between protection and scanning costs |
job003976 | optional | Can't scan parts of segments allocated by buffers |
job003977 | optional | We maintain redundant NMAKE files |
job003978 | nice | Too hard to experiment with different MPS parameters |
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 |
job003990 | nice | MPS doesn't notice if clients write scanners that don't check error codes |
job003991 | nice | No validation tests for client formats. |
job003992 | optional | MAX_SIZE means different things to MV and MVT pools |
job003993 | optional | Restrictions on maximum pool alignment are not checked or documented |
job003994 | essential | MPS_TELEMETRY_CONTROL may introduce security risks |
job003995 | optional | MPS doesn't support debugging APs |
job003997 | optional | Can't run MMQA test suite on Windows |
job003998 | essential | Growing an arena can allocate a chunk with no memory |
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 |
job004005 | nice | Destroying an automatically managed pool does not check that the arena is parked |
job004006 | essential | CVM postmortem debugging support is not properly integrated into the MPS |
job004007 | essential | Policy gets stuck when buffers exceed capacity of generation |
job004008 | optional | AMSSegMerge loses buffer on high segment |
job004009 | nice | Can't split a segment if buffer is above the split point |
job004010 | optional | No check that collecting a generation reduces its "new size" to zero |
job004011 | essential | Policy gets stuck when the live set triggers the dynamic criterion |
job004012 | nice | No function SegHasBuffer |
job004016 | optional | AMC pool may scan parts buffered segments many times |
job004017 | optional | MVFF is slow in the hot variety |
job004018 | essential | Documentation (and test cases) are wrong about mps_collections |
job004019 | essential | Can't handle access violation if arena is locked |
job004020 | nice | Running and debugging MMQA test cases is laborious |
job004021 | essential | Computed chunk size assertion may fail |
job004022 | optional | Mutator is suspended while the foundation is discovered |
job004023 | optional | Summary-based write barrier invariant won't cope with pre-flip scanning |
job004024 | nice | Accounting overheads are too high on mark & sweep pools |
job004025 | nice | Duplicate code between pool classes |
job004026 | essential | Failed shield assertions with DEEP checking |
job004027 | essential | Memory corruption due to multiple arenas in multiple threads |
job004028 | optional | fotest fails with DEEP checking |
job004029 | essential | mpsicv 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 |
job004036 | essential | Assertion failure in RootCheck with root of type RootTHREAD |
job004037 | essential | Compilation of apss.c fails with GCC 6.1 |
job004038 | nice | Hard to keep "Common assertions" up to date |
job004039 | nice | Mistakes and omissions in the manual |
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 |
job004045 | optional | MMQA test suite fails on FreeBSD |
job004046 | optional | Assertion failure in ananmv |
job004047 | nice | Inconvenient to run multiple MMQA testsets |
job004048 | optional | MMQA test cases fail on w3i6mv |
job004049 | essential | Allocation between whiten and reclaim/detach is not accounted as condemned |
job004055 | optional | Documentation for mps_root_create_area_tagged is incorrect |
job004056 | optional | lockEnsureGlobalLock is not thread-safe on Windows |
job004057 | nice | Warning pragmas are not localised around the bad cases |
job004061 | essential | Manual does not build with Sphinx 1.6 |
job004062 | optional | fork() unsupported on FreeBSD, Linux and macOS |
job004063 | nice | Easy to miss mps_addr_pool |
job004065 | optional | Scan area functions not flexible enough |
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 |
job004070 | optional | LO and AWL pools fail to detect invalid exact references |
job004072 | optional | MRG segments needlessly set the write barrier |
job004073 | nice | wasMarked protocol is unnecessarily complex |
job004074 | optional | mps_definalize might not work |
job004076 | essential | MPS does not compile with GCC 7 |
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 |
job004082 | optional | ztfm.c does not compile with Microsoft Visual C 2015 |
job004083 | nice | ChainCreate calls ControlAlloc twice |
job004084 | optional | MMQA test function/232.c crashes |
job004085 | optional | MPS doesn't cooperate well with other SEGV handlers |
job004086 | essential | Assertion failure in amssshe |
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 |
job004090 | optional | Walking the roots means you can't walk the formatted objects |
job004091 | nice | No support for saving and restoring automatically managed memory |
job004092 | nice | MMQA test cases fail on 32-bit platforms |
job004093 | optional | Predicted mortality is bogus for collection of the world |
job004094 | optional | Trace mortality prediction is bogus |
job004095 | nice | No need for two classes of MRG segment |
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 |
job004101 | nice | Plain CBS doesn't work |
job004102 | optional | arenaFreeLandInsertSteal might pass an empty range to LandInsert |
job004103 | nice | No smoke test coverage of mapping failure in pagesMarkAllocated |
job004104 | nice | fotest fails with "arena commit limit exceeded" |
job004105 | optional | Time and space overheads are high |
job004106 | nice | mps_collections doesn't count all collections. |
job004107 | nice | Debugging chapter is out of date |
job004108 | essential | MPS does not build with Xcode 10.0 |
job004109 | nice | Hash table advice does not mention sets |
job004113 | essential | MPS does not compile with GCC 7.3 |
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 |
job004156 | essential | MPS does not compile with GCC 8.3 |
job004158 | essential | Register scanning approach is not reliable |
job004161 | optional | tagtest fails on lii6gc |
job004162 | essential | MPS does not compile with Clang 6.0.0 |
job004163 | optional | Scheme example does not build with Clang 11 |
job004164 | nice | Warning from GCC |
job004165 | critical | MPS is to be BSD 2-clause licenced. |
job004166 | essential | MPS Contributing agreement requires review and update |