2noise/ChatTTS · error · ValueError
Double free! {block} is already freed.
Error message
Double free! {block} is already freed. What it means
Error "Double free! {block} is already freed." thrown in 2noise/ChatTTS.
Source
Thrown at ChatTTS/model/velocity/block_manager.py:49
# Initialize the free blocks.
self.free_blocks: BlockTable = []
for i in range(num_blocks):
block = PhysicalTokenBlock(
device=device, block_number=i, block_size=block_size
)
self.free_blocks.append(block)
def allocate(self) -> PhysicalTokenBlock:
if not self.free_blocks:
raise ValueError("Out of memory! No free blocks are available.")
block = self.free_blocks.pop()
block.ref_count = 1
return block
def free(self, block: PhysicalTokenBlock) -> None:
if block.ref_count == 0:
raise ValueError(f"Double free! {block} is already freed.")
block.ref_count -= 1
if block.ref_count == 0:
self.free_blocks.append(block)
def get_num_free_blocks(self) -> int:
return len(self.free_blocks)
class AllocStatus(enum.Enum):
"""Result for BlockSpaceManager.can_allocate
1. Ok: seq_group can be allocated now.
2. Later: seq_group cannot be allocated.
The capacity of allocator is larger than seq_group required.
3. Never: seq_group can never be allocated.
The seq_group is too large to allocated in GPU.
"""
View on GitHub (pinned to 77b89ee281)
When it happens
Trigger: Thrown at ChatTTS/model/velocity/block_manager.py:49 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of 2noise/ChatTTS@77b89ee281 (2026-08-26).
Data as JSON: /api/errors/ea257d045f6b5c09.
Report an issue: GitHub.