Skip to content

fix(api): trim glibc heap after document analysis to prevent OOM - #5354

Open
zuoanCo wants to merge 1 commit into
opendatalab:masterfrom
zuoanCo:fix/memory-leak-5313
Open

zuoanCo wants to merge 1 commit into
opendatalab:masterfrom
zuoanCo:fix/memory-leak-5313

Conversation

@zuoanCo

@zuoanCo zuoanCo commented Aug 3, 2026

Copy link
Copy Markdown

When running the MinerU API for a long time, RSS kept growing across documents because freed C heap pages were not returned to the OS.

  • Add trim_process_heap() that calls malloc_trim(0) on glibc systems.
  • Add MINERU_MALLOC_TRIM env var to control the behavior; defaults to enabled on Linux and disabled elsewhere.
  • Extend clean_memory() to optionally invoke heap trimming.
  • Call trim_process_heap() after every processing window in VLM and Hybrid sync/async doc_analyze.
  • Call clean_memory() at the end of VLM doc_analyze paths.
  • Add regression tests for the allocator hook and configuration.

Fixes #5313

Thanks for your contribution and we appreciate it a lot. The following instructions would make your pull request more healthy and more easily get feedback. If you do not understand some items, don't worry, just make the pull request and seek help from maintainers.

Motivation

Please describe the motivation of this PR and the goal you want to achieve through this PR.

Modification

Please briefly describe what modification is made in this PR.

BC-breaking (Optional)

Does the modification introduce changes that break the backward compatibility of the downstream repositories?
If so, please describe how it breaks the compatibility and how the downstream projects should modify their code to keep compatibility with this PR.

Use cases (Optional)

If this PR introduces a new feature, it is better to list some use cases here and update the documentation.

Checklist

Before PR:

  • Pre-commit or other linting tools are used to fix the potential lint issues.
  • Bug fixes are fully covered by unit tests, the case that causes the bug should be added in the unit tests.
  • The modification is covered by complete unit tests. If not, please add more unit test to ensure the correctness.
  • The documentation has been modified accordingly, like docstring or example tutorials.

After PR:

  • If the modification has potential influence on downstream or other related projects, this PR should be tested with those projects.
  • CLA has been signed and all committers have signed the CLA in this PR.

When running the MinerU API for a long time, RSS kept growing across
documents because freed C heap pages were not returned to the OS.

- Add trim_process_heap() that calls malloc_trim(0) on glibc systems.
- Add MINERU_MALLOC_TRIM env var to control the behavior; defaults to
  enabled on Linux and disabled elsewhere.
- Extend clean_memory() to optionally invoke heap trimming.
- Call trim_process_heap() after every processing window in VLM and
  Hybrid sync/async doc_analyze.
- Call clean_memory() at the end of VLM doc_analyze paths.
- Add regression tests for the allocator hook and configuration.

Fixes opendatalab#5313
Co-Authored-By: Claude <noreply@anthropic.com>
@dosubot dosubot Bot added size:M This PR changes 30-99 lines, ignoring generated files. bug Something isn't working labels Aug 3, 2026
@github-actions

github-actions Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor


Thank you for your submission, we really appreciate it. Like many open-source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution. You can sign the CLA by just posting a Pull Request Comment same as the below format.


I have read the CLA Document and I hereby sign the CLA


You can retrigger this bot by commenting recheck in this Pull Request. Posted by the CLA Assistant Lite bot.

@zuoanCo

zuoanCo commented Aug 3, 2026

Copy link
Copy Markdown
Author

I have read the CLA Document and I hereby sign the CLA

@zuoanCo zuoanCo closed this Aug 3, 2026
@zuoanCo zuoanCo reopened this Aug 3, 2026
@github-actions github-actions Bot locked and limited conversation to collaborators Aug 3, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

bug Something isn't working size:M This PR changes 30-99 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

MinerU API - RSS grows unbounded across documents until OOM

1 participant