- 
                Notifications
    You must be signed in to change notification settings 
- Fork 1.7k
Closed
Labels
bugSomething isn't workingSomething isn't working
Description
Describe the bug
MemoryConsumer::try_grow calls through to MemoryManager::can_grow_directly which determines the remaining space by performing self.pool_size - trk_total.
This can potentially underflow if the tracked memory exceeds the pool size, something for which there is no protection.
To Reproduce
#[test]
fn test_underflow() {
    let config = MemoryManagerConfig::try_new_limit(100, 0.5).unwrap();
    let manager = MemoryManager::new(config);
    manager.grow_tracker_usage(100);
    manager.register_requester(&MemoryConsumerId::new(1));
    assert!(!manager.can_grow_directly(20, 0));
}
Expected behavior
Additional context
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working